diff --git a/tests/datetime/datetimetest.cpp b/tests/datetime/datetimetest.cpp index 29209eef6c..145ba064d2 100644 --- a/tests/datetime/datetimetest.cpp +++ b/tests/datetime/datetimetest.cpp @@ -83,7 +83,8 @@ struct Date double jdn; wxDateTime::WeekDay wday; time_t gmticks, ticks; - + long flags; //Test specific flags - currently only used by TestTimeFormat. + void Init(const wxDateTime::Tm& tm) { day = tm.mday; @@ -126,6 +127,7 @@ struct Date year > 0 ? _T("AD") : _T("BC")); return s; } + bool IsSet(long f) const { return (f && flags) ==f; } }; // ---------------------------------------------------------------------------- @@ -579,30 +581,34 @@ void DateTimeTestCase::TestTimeFormat() CompareTime // time only }; + const int WORKS_WITH_2DIGIT_YEAR(1); static const struct { CompareKind compareKind; + long flagsneeded; const wxChar *format; } formatTestFormats[] = { - { CompareBoth, _T("---> %c") }, - { CompareDate, _T("Date is %A, %d of %B, in year %Y") }, - { CompareBoth, _T("Date is %x, time is %X") }, - { CompareTime, _T("Time is %H:%M:%S or %I:%M:%S %p") }, - { CompareNone, _T("The day of year: %j, the week of year: %W") }, - { CompareDate, _T("ISO date without separators: %Y%m%d") }, + { CompareBoth,0 , _T("---> %c") }, //Assumes %c show a 4digit year. + { CompareDate,0, _T("Date is %A, %d of %B, in year %Y") }, + { CompareBoth,WORKS_WITH_2DIGIT_YEAR, _T("Date is %x, time is %X") }, + { CompareTime,0, _T("Time is %H:%M:%S or %I:%M:%S %p") }, + { CompareNone,0, _T("The day of year: %j, the week of year: %W") }, + { CompareDate,0, _T("ISO date without separators: %Y%m%d") }, }; static const Date formatTestDates[] = { - { 29, wxDateTime::May, 1976, 18, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 }, - { 31, wxDateTime::Dec, 1999, 23, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 }, + { 29, wxDateTime::May, 1976, 18, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 , WORKS_WITH_2DIGIT_YEAR}, + { 31, wxDateTime::Dec, 1999, 23, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 , WORKS_WITH_2DIGIT_YEAR }, + { 6, wxDateTime::Feb, 1937, 23, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 ,0 }, + { 6, wxDateTime::Feb, 1856, 23, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 ,0 }, + { 6, wxDateTime::Feb, 1857, 23, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 ,0 }, + { 29, wxDateTime::May, 2076, 18, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 ,0 }, + { 29, wxDateTime::Feb, 2400, 02, 15, 25, 0.0, wxDateTime::Inv_WeekDay, 0, 0 ,0 }, #if 0 - // this test can't work for other centuries because it uses two digit - // years in formats, so don't even try it - { 29, wxDateTime::May, 2076, 18, 30, 00, 0.0, wxDateTime::Inv_WeekDay, 0, 0 }, - { 29, wxDateTime::Feb, 2400, 02, 15, 25, 0.0, wxDateTime::Inv_WeekDay, 0, 0 }, - { 01, wxDateTime::Jan, -52, 03, 16, 47, 0.0, wxDateTime::Inv_WeekDay, 0, 0 }, + // Need to add support for BCE dates. + { 01, wxDateTime::Jan, -52, 03, 16, 47, 0.0, wxDateTime::Inv_WeekDay, 0, 0 ,0 }, #endif }; @@ -611,8 +617,10 @@ void DateTimeTestCase::TestTimeFormat() wxDateTime dt = d == 0 ? wxDateTime::Now() : formatTestDates[d - 1].DT(); for ( size_t n = 0; n < WXSIZEOF(formatTestFormats); n++ ) { + //Skip test if date hasn't got the required flags. + if ((d!=0) && !(formatTestDates[d - 1].IsSet(formatTestFormats[n].flagsneeded))) continue; + wxString s = dt.Format(formatTestFormats[n].format); - // what can we recover? int kind = formatTestFormats[n].compareKind;