//: C02:DateTest.h
// Z knihy "Myslíme v jazyce C++, část 2" od Bruce Eckela a Chucka Allisona.
// (c) 1995-2004 MindView, Inc. Všechna práva vyhrazena.
// Přečtěte si podmínky používání zdrojových kódů umístěné v souboru 
// 'Licence.txt' dodávaném spolu s balíčkem kódu dostupným na www.MindView.net.
#ifndef DATETEST_H
#define DATETEST_H
#include "Date.h"
#include "../TestSuite/Test.h"

class TestData : public TestSuite::Test {
  Datum mojeNarozky;
  Datum dnes;
  Datum predvecerMychNarozenin;
public:
  TestData(): mojeNarozky(1951, 10, 1), predvecerMychNarozenin("19510930") {}
  void run() {
    testOperatoru();
    testFunkci();
    testTrvani();
  }
  void testOperatoru() {
    test_(mojeNarozky < dnes);
    test_(mojeNarozky <= dnes);
    test_(mojeNarozky != dnes);
    test_(mojeNarozky == mojeNarozky);
    test_(mojeNarozky >= mojeNarozky);
    test_(mojeNarozky <= mojeNarozky);
    test_(predvecerMychNarozenin < mojeNarozky);
    test_(mojeNarozky > predvecerMychNarozenin);
    test_(mojeNarozky >= predvecerMychNarozenin);
    test_(mojeNarozky != predvecerMychNarozenin);
  }
  void testFunkci() {
    test_(mojeNarozky.getRok() == 1951);
    test_(mojeNarozky.getMesic() == 10);
    test_(mojeNarozky.getDen() == 1);
    test_(predvecerMychNarozenin.getRok() == 1951);
    test_(predvecerMychNarozenin.getMesic() == 9);
    test_(predvecerMychNarozenin.getDen() == 30);
    test_(mojeNarozky.toString() == "19511001");
    test_(predvecerMychNarozenin.toString() == "19510930");
  }
  void testTrvani() {
    Datum d2(2003, 7, 4);
    Datum::Trvani dur = trvani(mojeNarozky, d2);
    test_(dur.roky == 51);
    test_(dur.mesice == 9);
    test_(dur.dny == 3);
  }
};
#endif // DATETEST_H ///:~
