diff options
Diffstat (limited to 'libtdeedu/extdate/test_extdate.cc')
-rw-r--r-- | libtdeedu/extdate/test_extdate.cc | 334 |
1 files changed, 334 insertions, 0 deletions
diff --git a/libtdeedu/extdate/test_extdate.cc b/libtdeedu/extdate/test_extdate.cc new file mode 100644 index 00000000..63b2120b --- /dev/null +++ b/libtdeedu/extdate/test_extdate.cc @@ -0,0 +1,334 @@ +#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::tqcurrentDate(TQt::LocalTime); + ExtDate e = ExtDate::tqcurrentDate(TQt::TimeSpec(TQt::LocalTime)); + std::cout << "TQt::LocalTime :: ExtDate : " << e.toString().local8Bit() << " TQDate : " + << q.toString().local8Bit() << std::endl; + q = TQDate::tqcurrentDate(TQt::UTC); + e = ExtDate::tqcurrentDate(TQt::UTC); + std::cout << "TQt::UTC :: ExtDate : " << e.toString().local8Bit() << " TQDate : " + << q.toString().local8Bit() << std::endl; + q = TQDate::tqcurrentDate(); + e = ExtDate::tqcurrentDate(); + 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::tqcurrentDateTime(); + ExtDateTime e = ExtDateTime::tqcurrentDateTime(); + + 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); +} + |