CVS commit by ariya: check every valid dates in 150 years, can't miss it M +18 -2 value_tester.cc 1.5 --- koffice/kspread/tests/value_tester.cc #1.4:1.5 @@ -26,4 +26,5 @@ #define CHECK(x,y) check(__FILE__,__LINE__,#x,x,y) +#define CHECK_DATE(d,x) check(__FILE__,__LINE__,d->asDate().toString().latin1(),d->asFloat(),x) using namespace KSpread; @@ -149,5 +150,20 @@ void ValueTester::run() delete v1; - // TODO date value + // check all (valid) dates from 1900 to 2050 + // note: bail on first error immediately + QDate refDate( 1899, 12, 31 ); + v1 = new KSpreadValue(); + bool date_error = 0; + for( unsigned y = 1900; !date_error && y < 2050; y++ ) + for( unsigned m = 1; !date_error && m <= 12; m++ ) + for( unsigned d = 1; !date_error && d <= 31; d++ ) + { + QDate dv1 = QDate( y, m, d ); + if( !dv1.isValid() ) continue; + double serialNo = -dv1.daysTo( refDate ) + 1.0; + v1->setValue( dv1 ); + CHECK_DATE(v1,serialNo); + date_error = v1->asFloat() != serialNo; + } // time value