Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

O3DBIDateTest.cpp

Go to the documentation of this file.
00001 
00012 #include "O3DBIDateTest.h"
00013 
00014 // ----------------------------------------------------------------------------
00015 // Register the fixture into the 'registry'
00016 
00017 CPPUNIT_TEST_SUITE_REGISTRATION(O3DBIDateTest);
00018 
00019 // ----------------------------------------------------------------------------
00020 // Test initialization and clean up
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 // Test cases
00044 
00045 void O3DBIDateTest::TestInitializationConstructor1()
00046 {
00047     try
00048     {
00049         // Process
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         // Process
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         // Process
00108         _pDate1 = new O3DBIDate(2004, 2, 29, 4, 12, 35);
00109         CPPUNIT_ASSERT(_pDate1 != NULL);
00110     
00111         _pDate2 = new O3DBIDate(*_pDate1);  // Copy c'tor
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     // Invalid day!
00144     _pDate1 = new O3DBIDate(2004, 9, 32, 18, 30, 0);
00145 }
00146 
00147 void O3DBIDateTest::TestConstructionWithInvalidValues2()
00148 {
00149     // Invalid month (2005 is not a leap year)!
00150     _pDate1 = new O3DBIDate(2005, 2, 29, 18, 30, 0);
00151 }
00152 
00153 void O3DBIDateTest::TestConstructionWithInvalidValues3()
00154 {
00155     // Invalid year!
00156     _pDate1 = new O3DBIDate(-5000, 2, 29, 18, 30, 0);
00157 }
00158 
00159 void O3DBIDateTest::TestComparisonOperator11()
00160 {
00161     // Both dates are equal
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     // Year of date1 < year of date2
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     // Year of date1 > year of date2
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     // Month of date1 < month of date2
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     // Month of date1 > month of date2
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     // Day of date1 < day of date2
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     // Day of date1 > day of date2
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     // Hour of date1 < hour of date2
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     // Hour of date1 > hour of date2
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     // Minute of date1 < minute of date2
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     // Minute of date1 > minute of date2
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     // Second of date1 < second of date2
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     // Second of date1 > second of date2
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"); // Wrong!
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 }



SourceForge.net Logo Generated on Sun Jan 23 11:36:34 2005 for Oracle Object Oriented Database Interface (O3DBI) by  doxygen 1.3.9.1