00001
00012 #include "O3DBIDateTest.h"
00013
00014
00015
00016
00017 CPPUNIT_TEST_SUITE_REGISTRATION(O3DBIDateTest);
00018
00019
00020
00021
00022 void O3DBIDateTest::setUp()
00023 {
00024 _pDate1 = NULL;
00025 _pDate2 = NULL;
00026 }
00027
00028 void O3DBIDateTest::tearDown()
00029 {
00030 if (_pDate1 != NULL)
00031 {
00032 delete _pDate1;
00033 _pDate1 = NULL;
00034 }
00035 if (_pDate2 != NULL)
00036 {
00037 delete _pDate2;
00038 _pDate2 = NULL;
00039 }
00040 }
00041
00042
00043
00044
00045 void O3DBIDateTest::TestInitializationConstructor1()
00046 {
00047 try
00048 {
00049
00050 _pDate1 = new O3DBIDate(2005, 1, 1, 12, 14, 46);
00051 CPPUNIT_ASSERT(_pDate1 != NULL);
00052 CPPUNIT_ASSERT(_pDate1->GetYear() == 2005);
00053 CPPUNIT_ASSERT(_pDate1->GetMonth() == 1);
00054 CPPUNIT_ASSERT(_pDate1->GetDay() == 1);
00055 CPPUNIT_ASSERT(_pDate1->GetHour() == 12);
00056 CPPUNIT_ASSERT(_pDate1->GetMinute() == 14);
00057 CPPUNIT_ASSERT(_pDate1->GetSecond() == 46);
00058 CPPUNIT_ASSERT(_pDate1->GetDayOfWeek() == 6);
00059 CPPUNIT_ASSERT(_pDate1->GetDayOfYear() == 1);
00060 CPPUNIT_ASSERT(_pDate1->GetCalendarWeek() == 53);
00061 CPPUNIT_ASSERT(_pDate1->GetJulianDay() == 2453372);
00062 CPPUNIT_ASSERT(! _pDate1->IsLeapYear());
00063 }
00064 catch (O3DBIException* pEx)
00065 {
00066 std::string str;
00067 str += "O3DBIException caught: ";
00068 str += pEx->GetErrorText();
00069 delete pEx;
00070 CPPUNIT_FAIL(str.c_str());
00071 }
00072 }
00073
00074 void O3DBIDateTest::TestInitializationConstructor2()
00075 {
00076 try
00077 {
00078
00079 _pDate1 = new O3DBIDate((unsigned long)2453372);
00080 CPPUNIT_ASSERT(_pDate1 != NULL);
00081 CPPUNIT_ASSERT(_pDate1->GetYear() == 2005);
00082 CPPUNIT_ASSERT(_pDate1->GetMonth() == 1);
00083 CPPUNIT_ASSERT(_pDate1->GetDay() == 1);
00084 CPPUNIT_ASSERT(_pDate1->GetHour() == 0);
00085 CPPUNIT_ASSERT(_pDate1->GetMinute() == 0);
00086 CPPUNIT_ASSERT(_pDate1->GetSecond() == 0);
00087 CPPUNIT_ASSERT(_pDate1->GetDayOfWeek() == 6);
00088 CPPUNIT_ASSERT(_pDate1->GetDayOfYear() == 1);
00089 CPPUNIT_ASSERT(_pDate1->GetCalendarWeek() == 53);
00090 CPPUNIT_ASSERT(_pDate1->GetJulianDay() == 2453372);
00091 CPPUNIT_ASSERT(! _pDate1->IsLeapYear());
00092 }
00093 catch (O3DBIException* pEx)
00094 {
00095 std::string str;
00096 str += "O3DBIException caught: ";
00097 str += pEx->GetErrorText();
00098 delete pEx;
00099 CPPUNIT_FAIL(str.c_str());
00100 }
00101 }
00102
00103 void O3DBIDateTest::TestCopyConstructor()
00104 {
00105 try
00106 {
00107
00108 _pDate1 = new O3DBIDate(2004, 2, 29, 4, 12, 35);
00109 CPPUNIT_ASSERT(_pDate1 != NULL);
00110
00111 _pDate2 = new O3DBIDate(*_pDate1);
00112 CPPUNIT_ASSERT(_pDate2 != NULL);
00113 CPPUNIT_ASSERT((*_pDate1) == (*_pDate2));
00114 CPPUNIT_ASSERT(! ((*_pDate1) != (*_pDate2)));
00115 CPPUNIT_ASSERT(! ((*_pDate1) > (*_pDate2)));
00116 CPPUNIT_ASSERT(! ((*_pDate1) < (*_pDate2)));
00117 CPPUNIT_ASSERT((*_pDate1) >= (*_pDate2));
00118 CPPUNIT_ASSERT((*_pDate1) <= (*_pDate2));
00119 CPPUNIT_ASSERT(_pDate2->GetYear() == 2004);
00120 CPPUNIT_ASSERT(_pDate2->GetMonth() == 2);
00121 CPPUNIT_ASSERT(_pDate2->GetDay() == 29);
00122 CPPUNIT_ASSERT(_pDate2->GetHour() == 4);
00123 CPPUNIT_ASSERT(_pDate2->GetMinute() == 12);
00124 CPPUNIT_ASSERT(_pDate2->GetSecond() == 35);
00125 CPPUNIT_ASSERT(_pDate2->GetCalendarWeek() == 9);
00126 CPPUNIT_ASSERT(_pDate2->GetDayOfWeek() == 0);
00127 CPPUNIT_ASSERT(_pDate2->GetDayOfYear() == 60);
00128 CPPUNIT_ASSERT(_pDate2->GetJulianDay() == 2453065);
00129 CPPUNIT_ASSERT(_pDate2->IsLeapYear());
00130 }
00131 catch (O3DBIException* pEx)
00132 {
00133 std::string str;
00134 str += "O3DBIException caught: ";
00135 str += pEx->GetErrorText();
00136 delete pEx;
00137 CPPUNIT_FAIL(str.c_str());
00138 }
00139 }
00140
00141 void O3DBIDateTest::TestConstructionWithInvalidValues1()
00142 {
00143
00144 _pDate1 = new O3DBIDate(2004, 9, 32, 18, 30, 0);
00145 }
00146
00147 void O3DBIDateTest::TestConstructionWithInvalidValues2()
00148 {
00149
00150 _pDate1 = new O3DBIDate(2005, 2, 29, 18, 30, 0);
00151 }
00152
00153 void O3DBIDateTest::TestConstructionWithInvalidValues3()
00154 {
00155
00156 _pDate1 = new O3DBIDate(-5000, 2, 29, 18, 30, 0);
00157 }
00158
00159 void O3DBIDateTest::TestComparisonOperator11()
00160 {
00161
00162 O3DBIDate date1(2005, 1, 16, 12, 5, 9);
00163 O3DBIDate date2(2005, 1, 16, 12, 5, 9);
00164 CPPUNIT_ASSERT(date1 == date2);
00165 CPPUNIT_ASSERT(! (date1 != date2));
00166 CPPUNIT_ASSERT(date1 >= date2);
00167 CPPUNIT_ASSERT(! (date1 > date2));
00168 CPPUNIT_ASSERT(! (date1 < date2));
00169 CPPUNIT_ASSERT(date1 <= date2);
00170 }
00171
00172 void O3DBIDateTest::TestComparisonOperator12()
00173 {
00174
00175 O3DBIDate date1(2005, 1, 16, 12, 5, 9);
00176 O3DBIDate date2(2006, 1, 16, 12, 5, 9);
00177 CPPUNIT_ASSERT(! (date1 == date2));
00178 CPPUNIT_ASSERT(date1 != date2);
00179 CPPUNIT_ASSERT(! (date1 >= date2));
00180 CPPUNIT_ASSERT(! (date1 > date2));
00181 CPPUNIT_ASSERT(date1 < date2);
00182 CPPUNIT_ASSERT(date1 <= date2);
00183 }
00184
00185 void O3DBIDateTest::TestComparisonOperator13()
00186 {
00187
00188 O3DBIDate date1(2006, 1, 16, 12, 5, 9);
00189 O3DBIDate date2(2005, 1, 16, 12, 5, 9);
00190 CPPUNIT_ASSERT(! (date1 == date2));
00191 CPPUNIT_ASSERT(date1 != date2);
00192 CPPUNIT_ASSERT(date1 >= date2);
00193 CPPUNIT_ASSERT(date1 > date2);
00194 CPPUNIT_ASSERT(! (date1 < date2));
00195 CPPUNIT_ASSERT(! (date1 <= date2));
00196 }
00197
00198 void O3DBIDateTest::TestComparisonOperator22()
00199 {
00200
00201 O3DBIDate date1(2005, 1, 16, 12, 5, 9);
00202 O3DBIDate date2(2005, 2, 16, 12, 5, 9);
00203 CPPUNIT_ASSERT(! (date1 == date2));
00204 CPPUNIT_ASSERT(date1 != date2);
00205 CPPUNIT_ASSERT(! (date1 >= date2));
00206 CPPUNIT_ASSERT(! (date1 > date2));
00207 CPPUNIT_ASSERT(date1 < date2);
00208 CPPUNIT_ASSERT(date1 <= date2);
00209 }
00210
00211 void O3DBIDateTest::TestComparisonOperator23()
00212 {
00213
00214 O3DBIDate date1(2005, 2, 16, 12, 5, 9);
00215 O3DBIDate date2(2005, 1, 16, 12, 5, 9);
00216 CPPUNIT_ASSERT(! (date1 == date2));
00217 CPPUNIT_ASSERT(date1 != date2);
00218 CPPUNIT_ASSERT(date1 >= date2);
00219 CPPUNIT_ASSERT(date1 > date2);
00220 CPPUNIT_ASSERT(! (date1 < date2));
00221 CPPUNIT_ASSERT(! (date1 <= date2));
00222 }
00223
00224 void O3DBIDateTest::TestComparisonOperator32()
00225 {
00226
00227 O3DBIDate date1(2005, 1, 16, 12, 5, 9);
00228 O3DBIDate date2(2005, 1, 17, 12, 5, 9);
00229 CPPUNIT_ASSERT(! (date1 == date2));
00230 CPPUNIT_ASSERT(date1 != date2);
00231 CPPUNIT_ASSERT(! (date1 >= date2));
00232 CPPUNIT_ASSERT(! (date1 > date2));
00233 CPPUNIT_ASSERT(date1 < date2);
00234 CPPUNIT_ASSERT(date1 <= date2);
00235 }
00236
00237 void O3DBIDateTest::TestComparisonOperator33()
00238 {
00239
00240 O3DBIDate date1(2005, 1, 17, 12, 5, 9);
00241 O3DBIDate date2(2005, 1, 16, 12, 5, 9);
00242 CPPUNIT_ASSERT(! (date1 == date2));
00243 CPPUNIT_ASSERT(date1 != date2);
00244 CPPUNIT_ASSERT(date1 >= date2);
00245 CPPUNIT_ASSERT(date1 > date2);
00246 CPPUNIT_ASSERT(! (date1 < date2));
00247 CPPUNIT_ASSERT(! (date1 <= date2));
00248 }
00249
00250
00251 void O3DBIDateTest::TestComparisonOperator42()
00252 {
00253
00254 O3DBIDate date1(2005, 1, 16, 12, 5, 9);
00255 O3DBIDate date2(2005, 1, 16, 13, 5, 9);
00256 CPPUNIT_ASSERT(! (date1 == date2));
00257 CPPUNIT_ASSERT(date1 != date2);
00258 CPPUNIT_ASSERT(! (date1 >= date2));
00259 CPPUNIT_ASSERT(! (date1 > date2));
00260 CPPUNIT_ASSERT(date1 < date2);
00261 CPPUNIT_ASSERT(date1 <= date2);
00262 }
00263
00264 void O3DBIDateTest::TestComparisonOperator43()
00265 {
00266
00267 O3DBIDate date1(2005, 1, 16, 13, 5, 9);
00268 O3DBIDate date2(2005, 1, 16, 12, 5, 9);
00269 CPPUNIT_ASSERT(! (date1 == date2));
00270 CPPUNIT_ASSERT(date1 != date2);
00271 CPPUNIT_ASSERT(date1 >= date2);
00272 CPPUNIT_ASSERT(date1 > date2);
00273 CPPUNIT_ASSERT(! (date1 < date2));
00274 CPPUNIT_ASSERT(! (date1 <= date2));
00275 }
00276
00277 void O3DBIDateTest::TestComparisonOperator52()
00278 {
00279
00280 O3DBIDate date1(2005, 1, 16, 12, 5, 9);
00281 O3DBIDate date2(2005, 1, 16, 12, 6, 9);
00282 CPPUNIT_ASSERT(! (date1 == date2));
00283 CPPUNIT_ASSERT(date1 != date2);
00284 CPPUNIT_ASSERT(! (date1 >= date2));
00285 CPPUNIT_ASSERT(! (date1 > date2));
00286 CPPUNIT_ASSERT(date1 < date2);
00287 CPPUNIT_ASSERT(date1 <= date2);
00288 }
00289
00290 void O3DBIDateTest::TestComparisonOperator53()
00291 {
00292
00293 O3DBIDate date1(2005, 1, 16, 12, 6, 9);
00294 O3DBIDate date2(2005, 1, 16, 12, 5, 9);
00295 CPPUNIT_ASSERT(! (date1 == date2));
00296 CPPUNIT_ASSERT(date1 != date2);
00297 CPPUNIT_ASSERT(date1 >= date2);
00298 CPPUNIT_ASSERT(date1 > date2);
00299 CPPUNIT_ASSERT(! (date1 < date2));
00300 CPPUNIT_ASSERT(! (date1 <= date2));
00301 }
00302
00303 void O3DBIDateTest::TestComparisonOperator62()
00304 {
00305
00306 O3DBIDate date1(2005, 1, 16, 12, 5, 9);
00307 O3DBIDate date2(2005, 1, 16, 12, 5, 10);
00308 CPPUNIT_ASSERT(! (date1 == date2));
00309 CPPUNIT_ASSERT(date1 != date2);
00310 CPPUNIT_ASSERT(! (date1 >= date2));
00311 CPPUNIT_ASSERT(! (date1 > date2));
00312 CPPUNIT_ASSERT(date1 < date2);
00313 CPPUNIT_ASSERT(date1 <= date2);
00314 }
00315
00316 void O3DBIDateTest::TestComparisonOperator63()
00317 {
00318
00319 O3DBIDate date1(2005, 1, 16, 12, 5, 10);
00320 O3DBIDate date2(2005, 1, 16, 12, 5, 9);
00321 CPPUNIT_ASSERT(! (date1 == date2));
00322 CPPUNIT_ASSERT(date1 != date2);
00323 CPPUNIT_ASSERT(date1 >= date2);
00324 CPPUNIT_ASSERT(date1 > date2);
00325 CPPUNIT_ASSERT(! (date1 < date2));
00326 CPPUNIT_ASSERT(! (date1 <= date2));
00327 }
00328
00329 void O3DBIDateTest::TestGetAsString()
00330 {
00331 TO3DBIString str;
00332 PC_TCHAR lpszDate1Compare = _T("Thu Jan 01 12:00:00 /.00\n");
00333 PC_TCHAR lpszDate2Compare = _T("01.01.0000 00:00:00");
00334 PC_TCHAR lpszDate3Compare = _T("03. October 1996 06:38:12 AM");
00335 PC_TCHAR lpszDate4Compare = _T("Sunday, 16. Jan 4000 12:05:09");
00336 PC_TCHAR lpszDate5Compare = _T("Thu, 12/28/00 15:15:59");
00337 try
00338 {
00339 O3DBIDate date1(-1200, 1, 1, 12, 0, 0);
00340 O3DBIDate date2(0, 1, 1, 0, 0, 0);
00341 O3DBIDate date3(1996, 10, 3, 6, 38, 12);
00342 O3DBIDate date4(4000, 1, 16, 12, 5, 9);
00343 O3DBIDate date5(8000, 12, 28, 15, 15, 59);
00344
00345 str = date1.GetAsString();
00346 CPPUNIT_ASSERT(::_tcscmp(str.c_str(), lpszDate1Compare) == 0);
00347 str = date2.GetAsString(_T("%d.%m.%Y %H:%M:%S"));
00348 CPPUNIT_ASSERT(::_tcscmp(str.c_str(), lpszDate2Compare) == 0);
00349 str = date3.GetAsString(_T("%d. %B %Y %I:%M:%S %p"));
00350 CPPUNIT_ASSERT(::_tcscmp(str.c_str(), lpszDate3Compare) == 0);
00351 str = date4.GetAsString(_T("%A, %d. %b %Y %H:%M:%S"));
00352 CPPUNIT_ASSERT(::_tcscmp(str.c_str(), lpszDate4Compare) == 0);
00353 str = date5.GetAsString(_T("%a, %x %X"));
00354 CPPUNIT_ASSERT(::_tcscmp(str.c_str(), lpszDate5Compare) == 0);
00355 }
00356 catch (O3DBIException* pEx)
00357 {
00358 std::string str;
00359 str += "O3DBIException caught: ";
00360 str += pEx->GetErrorText();
00361 delete pEx;
00362 CPPUNIT_FAIL(str.c_str());
00363 }
00364 }