X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c7564c6ac9bacdee10baf38a10ac36afcfa7ce45..cab9b205c3fc803eb7e0b20c9b760b53936e38f3:/tests/datetime/datetimetest.cpp diff --git a/tests/datetime/datetimetest.cpp b/tests/datetime/datetimetest.cpp index e9e430998e..8c584dd659 100644 --- a/tests/datetime/datetimetest.cpp +++ b/tests/datetime/datetimetest.cpp @@ -189,8 +189,10 @@ private: CPPUNIT_TEST( TestTimeTicks ); CPPUNIT_TEST( TestParceRFC822 ); CPPUNIT_TEST( TestDateParse ); + CPPUNIT_TEST( TestDateTimeParse ); CPPUNIT_TEST( TestTimeArithmetics ); CPPUNIT_TEST( TestDSTBug ); + CPPUNIT_TEST( TestDateOnly ); CPPUNIT_TEST_SUITE_END(); void TestLeapYears(); @@ -204,8 +206,10 @@ private: void TestTimeTicks(); void TestParceRFC822(); void TestDateParse(); + void TestDateTimeParse(); void TestTimeArithmetics(); void TestDSTBug(); + void TestDateOnly(); DECLARE_NO_COPY_CLASS(DateTimeTestCase) }; @@ -637,7 +641,7 @@ void DateTimeTestCase::TestTimeFormat() // convert back wxDateTime dt2; - const wxChar *result = dt2.ParseFormat(s, fmt); + const wxChar *result = dt2.ParseFormat(s.c_str(), fmt); if ( !result ) { // converion failed - should it have? @@ -671,6 +675,10 @@ void DateTimeTestCase::TestTimeFormat() case CompareTime: CPPUNIT_ASSERT( dt.IsSameTime(dt2) ); break; + + case CompareNone: + wxFAIL_MSG( _T("unexpected") ); + break; } } } @@ -793,7 +801,7 @@ void DateTimeTestCase::TestDateParse() // some invalid ones too { _T("29 Feb 2006") }, { _T("31/04/06") }, - { _T("bloordyblop") } + { _T("bloordyblop") }, }; // special cases @@ -817,6 +825,37 @@ void DateTimeTestCase::TestDateParse() } } +void DateTimeTestCase::TestDateTimeParse() +{ + static const struct ParseTestData + { + const wxChar *str; + Date date; // NB: this should be in UTC + bool good; + } parseTestDates[] = + { + { _T("Thu 22 Nov 2007 07:40:00 PM"), + { 22, wxDateTime::Nov, 2007, 19, 40, 0}, true }, + }; + + // special cases + wxDateTime dt; + for ( size_t n = 0; n < WXSIZEOF(parseTestDates); n++ ) + { + wxDateTime dt; + if ( dt.ParseDateTime(parseTestDates[n].str) ) + { + CPPUNIT_ASSERT( parseTestDates[n].good ); + + CPPUNIT_ASSERT_EQUAL( parseTestDates[n].date.DT(), dt ); + } + else // failed to parse + { + CPPUNIT_ASSERT( !parseTestDates[n].good ); + } + } +} + void DateTimeTestCase::TestTimeArithmetics() { static const wxDateSpan testArithmData[] = @@ -848,11 +887,11 @@ void DateTimeTestCase::TestDSTBug() { ///////////////////////// // Test GetEndDST() - wxDateTime dt = wxDateTime::GetEndDST(2004); + wxDateTime dt = wxDateTime::GetEndDST(2004, wxDateTime::France); CPPUNIT_ASSERT_EQUAL(31, (int)dt.GetDay()); CPPUNIT_ASSERT_EQUAL(wxDateTime::Oct, dt.GetMonth()); CPPUNIT_ASSERT_EQUAL(2004, (int)dt.GetYear()); - CPPUNIT_ASSERT_EQUAL(2, (int)dt.GetHour()); + CPPUNIT_ASSERT_EQUAL(1, (int)dt.GetHour()); CPPUNIT_ASSERT_EQUAL(0, (int)dt.GetMinute()); CPPUNIT_ASSERT_EQUAL(0, (int)dt.GetSecond()); CPPUNIT_ASSERT_EQUAL(0, (int)dt.GetMillisecond()); @@ -916,4 +955,20 @@ void DateTimeTestCase::TestDSTBug() #endif // CHANGE_SYSTEM_DATE } +void DateTimeTestCase::TestDateOnly() +{ + wxDateTime dt(19, wxDateTime::Jan, 2007, 15, 01, 00); + + static const wxDateTime::wxDateTime_t DATE_ZERO = 0; + CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetHour() ); + CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetMinute() ); + CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetSecond() ); + CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetMillisecond() ); + + dt.ResetTime(); + CPPUNIT_ASSERT_EQUAL( wxDateTime(19, wxDateTime::Jan, 2007), dt ); + + CPPUNIT_ASSERT_EQUAL( wxDateTime::Today(), wxDateTime::Now().GetDateOnly() ); +} + #endif // wxUSE_DATETIME