#include <iostream>


#include "Naptar.h"
#include "evfordulo.h"
#include "gtest_lite.h"

#include "memtrace.h"

#define NAPTAR_TESZT 2

Naptar np;

int main() {
#if NAPTAR_TESZT >= 1
    Datum n1;
    EXPECT_EQ(n1.getEv(),1970) << "Rossz alapértelmezett év!";
    EXPECT_EQ(n1.getHonap(),1) << "Rossz alapértelmezett hónap";
    EXPECT_EQ(n1.getNap(),1) << "Rossz alapértelmezett nap";
    EXPECT_STREQ(n1.getMegjegyzes(),"Unix timestamp") << "Rossz alapértelmezett ";
    EXPECT_TRUE(n1.getEv() == 1970 && n1.getHonap() == 1 && n1.getNap() == 1) << "Rossz alap konstruktor!";
    
    Datum n2(2000, 5, 16);
    EXPECT_TRUE(n2.getEv() == 2000 && n2.getHonap() == 5 && n2.getNap() == 16) << "Rossz konstruktor!";

    EXPECT_EQ(n1,n1) << "Rossz a hasonlítas?";
    EXPECT_NE(n1,n2) << "Rossz a hasonlítas?";

    EXPECT_FALSE(n1 > n2) << "Rossz a hasonlítas?";
    EXPECT_TRUE(n1 < n2) << "Rossz a hasonlítas?";
    EXPECT_TRUE(n1 <= n2) << "Rossz a hasonlítas?";
    EXPECT_TRUE(n1 <= n1) << "Rossz a hasonlítas?";
    Datum n3 = n2;
    EXPECT_TRUE(n2 == n3) << "Rossz masolo!";
    n2 = n2;
    EXPECT_TRUE(n2 == n3) << "Mi tortent?";
    
    Datum n4(2020,5,18,"Leadasi hatarido(06:00)");
    EXPECT_STREQ(n4.getMegjegyzes(),"Leadasi hatarido(06:00)") << "Nem jó a megjegzés";

    EXPECT_EQ((n2-n1) , 11093) << "Rossz kulonbseg!";
    EXPECT_EQ(n1.getNapnev() , CSUTORTOK) << "Rossz napnev";
    EXPECT_EQ(n2.getNapnev() , KEDD) << "Rossz napnev";

    EXPECT_EQ(n1.getUnixTime(),0) << "Rossz Unix ido!";
    EXPECT_EQ(n2.getUnixTime(),958435200) << "Rossz Unix ido!";
    
    
    
    #endif

#if NAPTAR_TESZT >= 2
    Naptar np1;
    EXPECT_EQ(np1.size(), (size_t)0) << "Rossz meret!";

    Naptar np2(new Datum(2000,6,16));
    EXPECT_EQ(np2.size() ,(size_t)1) << "Rossz meret!";

    np1.hozzaad(new Datum(2000,5,16,"Ekkor szulettem"));
    np1.hozzaad(new Datum());
    EXPECT_EQ(np1.size() , (size_t)2) << "Rossz meret!";
    np1.felszabadit(n1);
    EXPECT_EQ(np1.size() , (size_t)1) << "Rossz meret!";
    np1.printTable(2000);
    np1.printTable(2000,5);
    EXPECT_TRUE(np1.foglalt(n2)) << "Hibas foglaltsag ellenorzes!";

    Naptar np3( new Evfordulo(2017,6,16));
    EXPECT_TRUE(np3.foglalt(Datum(2020,6,16)));

#endif // NAPTAR_TESZT
    return 0;
}
