From: Roger Gammans Date: Sun, 5 Feb 2006 14:05:39 +0000 (+0000) Subject: Add flags to test dates struct which allow us to skip ecpected failures. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/42b62acfc2d106f52d259e8bd12aa217e660a243?ds=inline Add flags to test dates struct which allow us to skip ecpected failures. Use new flags feature to allow us to test format dates outside the two digit year parse range. Add dates to test for sf.net bug #1357272 and a couple of related issues. (eg,6Feb{1856,1857,1937}) . git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- 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;