You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/libtdeedu/extdate/test_extdate.cc

335 lines
7.8 KiB

#include <stdlib.h>
#include <iostream>
#include "extdatetime.h"
void test1_unit(int a_year)
{
std::cout << a_year << " (TQDate|ExtDate): " << ((TQDate::leapYear(a_year)) ? "yes" : "no")
<<"|"<< ((ExtDate::leapYear(a_year)) ? "yes" : "no") << std::endl;
}
void test1()
{
int a_set_of_years[] =
{
1996,
1997,
1998,
2000,
1999,
2001,
1900,
1800,
1700,
1600,
2100,
2200,
2300,
0,
-1,
-4,
-100,
-200,
-300,
-400,
-500
};
uint i;
std::cout << "Checking Leap Years:\n" << std::endl;
for (i = 0 ; i < sizeof(a_set_of_years)/sizeof(a_set_of_years[0]) ; i++)
{
test1_unit(a_set_of_years[i]);
}
std::cout << "--------------------" << std::endl;
}
void test2_unit(int y, int m, int d)
{
TQDate q(y, m, d);
ExtDate e(y, m, d);
int q_week_number = q.dayOfWeek();
int e_week_number = e.dayOfWeek();
int q_day_of_year = q.dayOfYear();
int e_day_of_year = e.dayOfYear();
std::cout << "(" << y << ", " << m << ", " << d << ") :: "
<< q.toString("dd.MMM.yyyy").local8Bit() << " : "
<< q.dayOfWeek() << " : " << q_week_number << " : " << q_day_of_year << " :: "
<< e.toString("%d.%b.%Y").local8Bit() << " : "
<< e.dayOfWeek() << " : " << e_week_number << " : " << e_day_of_year << std::endl;
}
void test2()
{
int a_set_of_dates[][3] =
{
{0, 1, 1},
{1, 1, 1},
{2, 1, 1},
{3, 1, 1},
{4, 1, 1},
{5, 1, 1},
{99, 1, 1},
{100, 1, 1},
{100, 12, 31},
{101, 1, 1},
{102, 1, 1},
{103, 1, 1},
{104, 1, 1},
{399, 1, 1},
{400, 1, 1},
{401, 1, 1},
{402, 1, 1},
{403, 1, 1},
{404, 1, 1},
{2003, 1, 1},
{2003, 1, 2},
{2003, 1, 3},
{2003, 1, 4},
{2003, 1, 5},
{2003, 1, 6},
{2003, 1, 7},
{2003, 1, 8},
{2003, 1, 9},
{2003, 1, 10},
{2003, 1, 11},
{2003, 1, 12},
{2003, 1, 13},
{2003, 1, 14},
{2003, 1, 15},
{2003, 1, 16},
{2003, 1, 17},
{2003, 1, 18},
{2003, 12, 19},
{2003, 12, 20},
{2003, 12, 21},
{2003, 12, 22},
{2003, 12, 23},
{2003, 12, 24},
{2003, 12, 25},
{2003, 12, 26},
{2003, 12, 27},
{2003, 12, 28},
{2003, 12, 29},
{2003, 12, 30},
{2003, 12, 31},
{2004, 1, 1},
{2003, 11, 2}
};
uint i;
std::cout << "(y, m, d) :: TQDate : Q.dayOfWeek() : Q.weekNumber() : Q.dayOfYear() :: ExtDate : E.dayOfWeek() : E.weekNumber() : E.dayOfYear()\n" << std::endl;
for (i = 0 ; i < sizeof(a_set_of_dates)/sizeof(a_set_of_dates[0]) ; i++)
{
test2_unit(a_set_of_dates[i][0], a_set_of_dates[i][1], a_set_of_dates[i][2]);
}
std::cout << "--------------------" << std::endl;
}
void test3_unit(int y, int m, int d, int dm)
{
TQDate q(y, m, d);
ExtDate e(y, m, d);
TQDate q2 = q.addMonths(dm);
ExtDate e2 = e.addMonths(dm);
std::cout << e.toString("%d.%b.%Y").local8Bit() << " + " << dm
<< " months :: ExtDate : " << e2.toString("%d.%b.%Y").local8Bit()
<< " TQDate : " << q2.toString("dd.MMM.yyyy").local8Bit() << std::endl;
}
void test3()
{
int a_set_of_dates_delta[][4] =
{
{2003, 11, 5, 0},
{2003, 11, 5, 1},
{2003, 11, 5, -1},
{2003, 11, 5, 2},
{2003, 11, 5, 3}
};
uint i;
std::cout << "Adding Months:\n" << std::endl;
for (i = 0 ; i < sizeof(a_set_of_dates_delta)/sizeof(a_set_of_dates_delta[0]) ; i++)
{
test3_unit(a_set_of_dates_delta[i][0], a_set_of_dates_delta[i][1], a_set_of_dates_delta[i][2], a_set_of_dates_delta[i][3]);
}
std::cout << "--------------------" << std::endl;
}
void test4_unit(int y, int m, int d, int dy)
{
TQDate q(y, m, d);
ExtDate e(y, m, d);
TQDate q2 = q.addYears(dy);
ExtDate e2 = e.addYears(dy);
std::cout << e.toString("%d.%m.%Y").local8Bit() << " + " << dy << " years :: ExtDate : "
<< e2.toString().local8Bit() << " TQDate : "
<< q2.toString().local8Bit() << std::endl;
}
void test4()
{
int a_set_of_dates_delta[][4] =
{
{-1, 11, 5, 0},
{-1, 11, 5, 1},
{-1, 11, 5, 2},
{2003, 11, 5, 1},
{2003, 11, 5, -1},
{2003, 11, 5, 2},
{2003, 11, 5, 3}
};
uint i;
std::cout << "Adding years:\n" << std::endl;
for (i = 0 ; i < sizeof(a_set_of_dates_delta)/sizeof(a_set_of_dates_delta[0]) ; i++)
{
test4_unit(a_set_of_dates_delta[i][0], a_set_of_dates_delta[i][1], a_set_of_dates_delta[i][2], a_set_of_dates_delta[i][3]);
}
std::cout << "--------------------" << std::endl;
}
void test5_unit(int y, int m, int d, const char *qformat, const char *eformat)
{
TQDate q(y, m, d);
ExtDate e(y, m, d);
if ( TQString(qformat) == "<default>" )
std::cout << eformat << " : " << e.toString().local8Bit() << " :: "
<< qformat << " : " << q.toString().local8Bit() << std::endl;
else
std::cout << eformat << " : " << e.toString(eformat).local8Bit() << " :: "
<< qformat << " : " << q.toString(qformat).local8Bit() << std::endl;
}
void test5()
{
const char *q_set_of_formats[7] =
{
"d.M.yy",
"dd.MM.yy",
"ddd.MMM.yy",
"ddd dd.MMM.yy",
"dddd.MMMM.yy",
">dd.M.yyyy<",
"<default>"
};
const char *e_set_of_formats[7] =
{
"%e.%n.%y",
"%d.%m.%y",
"%d.%b.%y",
"%a %d.%b.%y",
"%A.%B.%y",
">%d.%n.%Y<",
"<default>"
};
uint i;
std::cout << "Date.toString(\"...\")" << std::endl;
std::cout << "Ext Format : ExtDate :: Q Format : TQDate\n" << std::endl;
for (i = 0 ; i < sizeof(q_set_of_formats)/sizeof(q_set_of_formats[0]) ; i++)
{
test5_unit(2003, 11, 5, q_set_of_formats[i], e_set_of_formats[i]);
}
std::cout << "--------------------" << std::endl;
}
void test6_unit(int y, int m, int d)
{
std::cout << d << "/" << m << "/" << y << " :: "
<< ( ExtDate::isValid(y, m, d) ? "TRUE" : "FALSE" ) << " : "
<< ( TQDate::isValid(y, m, d) ? "TRUE" : "FALSE" ) << std::endl;
}
void test6()
{
int a_set_of_dates[][3] =
{
{-1, 11, 5},
{-1, 11, 5},
{-1, 11, 5},
{2003, 11, 5},
{2003, -1, 5},
{2003, 0, 5},
{2003, 12, 5},
{2003, 13, 5},
{2003, 11, -2},
{2003, 11, 0},
{2003, 11, 40},
{2004, 2, 28},
{2004, 2, 29},
{2004, 2, 30},
{2003, 2, 28},
{2003, 2, 29},
{2003, 2, 30}
};
uint i;
std::cout << "Date.isValid()" << std::endl;
std::cout << "d/m/y :: ExtDate.isValid() : TQDate.isValid()\n" << std::endl;
for (i = 0 ; i < sizeof(a_set_of_dates)/sizeof(a_set_of_dates[0]) ; i++)
{
test6_unit(a_set_of_dates[i][0], a_set_of_dates[i][1], a_set_of_dates[i][2]);
}
std::cout << "--------------------" << std::endl;
}
void test7()
{
std::cout << "Express the current date:\n" << std::endl;
TQDate q = TQDate::currentDate(TQt::LocalTime);
ExtDate e = ExtDate::currentDate(TQt::TimeSpec(TQt::LocalTime));
std::cout << "TQt::LocalTime :: ExtDate : " << e.toString().local8Bit() << " TQDate : "
<< q.toString().local8Bit() << std::endl;
q = TQDate::currentDate(TQt::UTC);
e = ExtDate::currentDate(TQt::UTC);
std::cout << "TQt::UTC :: ExtDate : " << e.toString().local8Bit() << " TQDate : "
<< q.toString().local8Bit() << std::endl;
q = TQDate::currentDate();
e = ExtDate::currentDate();
std::cout << "<default> :: ExtDate : " << e.toString().local8Bit() << " TQDate : "
<< q.toString().local8Bit() << std::endl;
std::cout << "--------------------" << std::endl;
}
void test8() {
std::cout << "Set dates using days 1-32 for Jan and Feb (some will be invalid): \n" << std::endl;
std::cout << " TQDate : ExtDate" << std::endl;
for ( uint m=1; m<=2; ++m ) {
for ( uint d=1; d<=32; ++d ) {
TQDate test1( 2004, m, d );
ExtDate test2( 2004, m, d );
std::cout << test1.toString( "ddd dd.MMM.yy" ).local8Bit() << " : "
<< test2.toString( "%a %d.%b.%y" ).local8Bit() << std::endl;
}
}
std::cout << "--------------------" << std::endl;
}
void test9() {
std::cout << "TQDateTime : ExtDateTime: \n" << std::endl;
TQDateTime q = TQDateTime::currentDateTime();
ExtDateTime e = ExtDateTime::currentDateTime();
std::cout << q.toString().local8Bit() << " : " << e.toString().local8Bit() << std::endl;
std::cout << "--------------------" << std::endl;
}
int main(int argc, char *argv[])
{
test1();
test2();
test3();
test4();
test5();
test6();
test7();
test8();
test9();
exit(0);
}