]> git.saurik.com Git - wxWidgets.git/commitdiff
Add flags to test dates struct which allow us to skip ecpected failures.
authorRoger Gammans <rgammans@computer-surgery.co.uk>
Sun, 5 Feb 2006 14:05:39 +0000 (14:05 +0000)
committerRoger Gammans <rgammans@computer-surgery.co.uk>
Sun, 5 Feb 2006 14:05:39 +0000 (14:05 +0000)
 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

tests/datetime/datetimetest.cpp

index 29209eef6c7feedf0f957d093356b348ef069c53..145ba064d2be917a01ce6fd81814b16a8f7ab74d 100644 (file)
@@ -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;