diff --git a/components/fpspreadsheet/tests/datetests.pas b/components/fpspreadsheet/tests/datetests.pas index 0f59628af..995f8ee6d 100644 --- a/components/fpspreadsheet/tests/datetests.pas +++ b/components/fpspreadsheet/tests/datetests.pas @@ -197,6 +197,85 @@ type procedure TestReadODFDate1899_35; procedure TestReadODFDate1899_36; procedure TestReadODFDate1899_37; + + procedure TestReadOOXMLDate1904_0; // same as above except Excel xlsx format + procedure TestReadOOXMLDate1904_1; //date and time + procedure TestReadOOXMLDate1904_2; + procedure TestReadOOXMLDate1904_3; + procedure TestReadOOXMLDate1904_4; //time only tests start here + procedure TestReadOOXMLDate1904_5; + procedure TestReadOOXMLDate1904_6; + procedure TestReadOOXMLDate1904_7; + procedure TestReadOOXMLDate1904_8; + procedure TestReadOOXMLDate1904_9; + procedure TestReadOOXMLDate1904_10; + procedure TestReadOOXMLDate1904_11; + procedure TestReadOOXMLDate1904_12; + procedure TestReadOOXMLDate1904_13; + procedure TestReadOOXMLDate1904_14; + procedure TestReadOOXMLDate1904_15; + procedure TestReadOOXMLDate1904_16; + procedure TestReadOOXMLDate1904_17; + procedure TestReadOOXMLDate1904_18; + procedure TestReadOOXMLDate1904_19; + procedure TestReadOOXMLDate1904_20; + procedure TestReadOOXMLDate1904_21; + procedure TestReadOOXMLDate1904_22; + procedure TestReadOOXMLDate1904_23; + procedure TestReadOOXMLDate1904_24; + procedure TestReadOOXMLDate1904_25; + procedure TestReadOOXMLDate1904_26; + procedure TestReadOOXMLDate1904_27; + procedure TestReadOOXMLDate1904_28; + procedure TestReadOOXMLDate1904_29; + procedure TestReadOOXMLDate1904_30; + procedure TestReadOOXMLDate1904_31; + procedure TestReadOOXMLDate1904_32; + procedure TestReadOOXMLDate1904_33; + procedure TestReadOOXMLDate1904_34; + procedure TestReadOOXMLDate1904_35; + procedure TestReadOOXMLDate1904_36; + procedure TestReadOOXMLDate1904_37; + + procedure TestReadOOXMLDate1899_0; //same as above except with the 1899/1900 date system set + procedure TestReadOOXMLDate1899_1; + procedure TestReadOOXMLDate1899_2; + procedure TestReadOOXMLDate1899_3; + procedure TestReadOOXMLDate1899_4; + procedure TestReadOOXMLDate1899_5; + procedure TestReadOOXMLDate1899_6; + procedure TestReadOOXMLDate1899_7; + procedure TestReadOOXMLDate1899_8; + procedure TestReadOOXMLDate1899_9; + procedure TestReadOOXMLDate1899_10; + procedure TestReadOOXMLDate1899_11; + procedure TestReadOOXMLDate1899_12; + procedure TestReadOOXMLDate1899_13; + procedure TestReadOOXMLDate1899_14; + procedure TestReadOOXMLDate1899_15; + procedure TestReadOOXMLDate1899_16; + procedure TestReadOOXMLDate1899_17; + procedure TestReadOOXMLDate1899_18; + procedure TestReadOOXMLDate1899_19; + procedure TestReadOOXMLDate1899_20; + procedure TestReadOOXMLDate1899_21; + procedure TestReadOOXMLDate1899_22; + procedure TestReadOOXMLDate1899_23; + procedure TestReadOOXMLDate1899_24; + procedure TestReadOOXMLDate1899_25; + procedure TestReadOOXMLDate1899_26; + procedure TestReadOOXMLDate1899_27; + procedure TestReadOOXMLDate1899_28; + procedure TestReadOOXMLDate1899_29; + procedure TestReadOOXMLDate1899_30; + procedure TestReadOOXMLDate1899_31; + procedure TestReadOOXMLDate1899_32; + procedure TestReadOOXMLDate1899_33; + procedure TestReadOOXMLDate1899_34; + procedure TestReadOOXMLDate1899_35; + procedure TestReadOOXMLDate1899_36; + procedure TestReadOOXMLDate1899_37; + end; { TSpreadWriteReadDateTests } @@ -1208,6 +1287,392 @@ begin end; +{ Excel xlsx 1904 datemode tests } + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_0; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,0); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_1; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,1); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_2; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,2); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_3; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,3); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_4; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,4); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_5; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,5); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_6; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,6); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_7; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,7); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_8; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,8); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_9; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,9); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_10; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,10); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_11; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,11); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_12; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,12); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_13; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,13); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_14; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,14); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_15; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,15); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_16; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,16); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_17; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,17); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_18; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,18); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_19; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,19); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_20; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,20); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_21; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,21); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_22; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,22); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_23; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,23); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_24; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,24); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_25; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,25); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_26; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,26); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_27; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,27); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_28; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,28); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_29; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,29); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_30; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,30); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_31; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,31); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_32; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,32); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_33; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,33); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_34; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,34); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_35; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,35); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_36; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,36); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1904_37; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1904,37); +end; + + +{ ODS 1899 datemode tests } + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_0; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,0); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_1; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,1); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_2; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,2); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_3; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,3); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_4; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,4); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_5; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,5); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_6; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,6); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_7; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,7); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_8; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,8); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_9; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,9); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_10; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,10); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_11; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,11); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_12; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,12); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_13; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,13); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_14; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,14); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_15; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,15); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_16; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,16); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_17; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,17); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_18; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,18); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_19; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,19); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_20; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,20); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_21; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,21); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_22; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,22); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_23; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,23); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_24; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,24); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_25; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,25); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_26; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,26); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_27; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,27); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_28; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,28); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_29; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,29); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_30; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,30); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_31; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,31); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_32; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,32); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_33; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,33); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_34; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,34); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_35; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,35); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_36; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,36); +end; + +procedure TSpreadReadDateTests.TestReadOOXMLDate1899_37; +begin + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileOOXML_1899,37); +end; + + initialization // Register so these tests are included in a full run RegisterTest(TSpreadReadDateTests); diff --git a/components/fpspreadsheet/tests/numberstests.pas b/components/fpspreadsheet/tests/numberstests.pas index 136d6433b..0166a7665 100644 --- a/components/fpspreadsheet/tests/numberstests.pas +++ b/components/fpspreadsheet/tests/numberstests.pas @@ -41,7 +41,7 @@ type published // Reads numbers values from spreadsheet and checks against list // One cell per test so some tests can fail and those further below may still work - procedure TestReadNumber0; //number tests + procedure TestReadNumber0; //number tests for biff8 file format procedure TestReadNumber1; //number and time procedure TestReadNumber2; procedure TestReadNumber3; @@ -64,6 +64,7 @@ type procedure TestReadNumber20; procedure TestReadNumber21; procedure TestReadNumber22; + procedure TestReadODFNumber0; //number tests using ODF/LibreOffice file format procedure TestReadODFNumber1; //number and time procedure TestReadODFNumber2; @@ -87,6 +88,30 @@ type procedure TestReadODFNumber20; procedure TestReadODFNumber21; procedure TestReadODFNumber22; + + procedure TestReadOOXMLNumber0; //number tests using ODF/LibreOffice file format + procedure TestReadOOXMLNumber1; //number and time + procedure TestReadOOXMLNumber2; + procedure TestReadOOXMLNumber3; + procedure TestReadOOXMLNumber4; //time only tests start here + procedure TestReadOOXMLNumber5; + procedure TestReadOOXMLNumber6; + procedure TestReadOOXMLNumber7; + procedure TestReadOOXMLNumber8; + procedure TestReadOOXMLNumber9; + procedure TestReadOOXMLNumber10; + procedure TestReadOOXMLNumber11; + procedure TestReadOOXMLNumber12; + procedure TestReadOOXMLNumber13; + procedure TestReadOOXMLNumber14; + procedure TestReadOOXMLNumber15; + procedure TestReadOOXMLNumber16; + procedure TestReadOOXMLNumber17; + procedure TestReadOOXMLNumber18; + procedure TestReadOOXMLNumber19; + procedure TestReadOOXMLNumber20; + procedure TestReadOOXMLNumber21; + procedure TestReadOOXMLNumber22; end; { TSpreadWriteReadNumberTests } @@ -513,6 +538,123 @@ begin end; +{ OOXML Tests } +procedure TSpreadReadNumberTests.TestReadOOXMLNumber0; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,0); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber1; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,1); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber2; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,2); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber3; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,3); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber4; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,4); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber5; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,5); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber6; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,6); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber7; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,7); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber8; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,8); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber9; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,9); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber10; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,10); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber11; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,11); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber12; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,12); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber13; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,13); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber14; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,14); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber15; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,15); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber16; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,16); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber17; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,17); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber18; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,18); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber19; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,19); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber20; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,20); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber21; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,21); +end; + +procedure TSpreadReadNumberTests.TestReadOOXMLNumber22; +begin + TestReadNumber(ExtractFilePath(ParamStr(0)) + TestFileOOXML,22); +end; + + initialization // Register so these tests are included in a full run RegisterTest(TSpreadReadNumberTests); diff --git a/components/fpspreadsheet/tests/spreadtestgui.lpi b/components/fpspreadsheet/tests/spreadtestgui.lpi index e985a9241..d798ee65c 100644 --- a/components/fpspreadsheet/tests/spreadtestgui.lpi +++ b/components/fpspreadsheet/tests/spreadtestgui.lpi @@ -48,7 +48,6 @@ - @@ -62,10 +61,12 @@ + + @@ -80,12 +81,10 @@ - - @@ -98,14 +97,17 @@ + + + diff --git a/components/fpspreadsheet/tests/stringtests.pas b/components/fpspreadsheet/tests/stringtests.pas index f9e46a003..29920dd7e 100644 --- a/components/fpspreadsheet/tests/stringtests.pas +++ b/components/fpspreadsheet/tests/stringtests.pas @@ -49,7 +49,7 @@ type published // Reads string values from spreadsheet and checks against list // One cell per test so some tests can fail and those further below may still work - procedure TestReadString0; //empty string + procedure TestReadString0; //biff8 empty string procedure TestReadString1; procedure TestReadString2; procedure TestReadString3; @@ -63,6 +63,7 @@ type procedure TestReadString11; procedure TestReadString12; procedure TestReadString13; + procedure TestReadODFString0; //OpenDocument/LibreOffice format empty string procedure TestReadODFString1; procedure TestReadODFString2; @@ -77,6 +78,22 @@ type procedure TestReadODFString11; procedure TestReadODFString12; procedure TestReadODFString13; + + procedure TestReadOOXMLString0; //Excel xlsx format empty string + procedure TestReadOOXMLString1; + procedure TestReadOOXMLString2; + procedure TestReadOOXMLString3; + procedure TestReadOOXMLString4; + procedure TestReadOOXMLString5; + procedure TestReadOOXMLString6; + procedure TestReadOOXMLString7; + procedure TestReadOOXMLString8; + procedure TestReadOOXMLString9; + procedure TestReadOOXMLString10; + procedure TestReadOOXMLString11; + procedure TestReadOOXMLString12; + procedure TestReadOOXMLString13; + end; { TSpreadWriteReadStringTests } @@ -412,6 +429,7 @@ begin TestReadString(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,13); end; +{ ODF Tests } procedure TSpreadReadStringTests.TestReadODFString0; begin TestReadString(ExtractFilePath(ParamStr(0)) + TestFileODF,0); @@ -482,6 +500,77 @@ begin TestReadString(ExtractFilePath(ParamStr(0)) + TestFileODF,13); end; +{ ODF Tests } +procedure TSpreadReadStringTests.TestReadOOXMLString0; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,0); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString1; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,1); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString2; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,2); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString3; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,3); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString4; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,4); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString5; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,5); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString6; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,6); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString7; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,7); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString8; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,8); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString9; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,9); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString10; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,10); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString11; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,11); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString12; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,12); +end; + +procedure TSpreadReadStringTests.TestReadOOXMLString13; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileOOXML,13); +end; + initialization // Register so these tests are included in a full run diff --git a/components/fpspreadsheet/tests/testooxml_1899.xlsx b/components/fpspreadsheet/tests/testooxml_1899.xlsx new file mode 100644 index 000000000..6d3b1fa7c Binary files /dev/null and b/components/fpspreadsheet/tests/testooxml_1899.xlsx differ diff --git a/components/fpspreadsheet/tests/testooxml_1904.xlsx b/components/fpspreadsheet/tests/testooxml_1904.xlsx new file mode 100644 index 000000000..e2d970e1e Binary files /dev/null and b/components/fpspreadsheet/tests/testooxml_1904.xlsx differ diff --git a/components/fpspreadsheet/tests/testsutility.pas b/components/fpspreadsheet/tests/testsutility.pas index 36aa9736d..947a519eb 100644 --- a/components/fpspreadsheet/tests/testsutility.pas +++ b/components/fpspreadsheet/tests/testsutility.pas @@ -17,6 +17,9 @@ const TestFileODF_1904='testodf_1904.ods'; //OpenDocument/LibreOffice with 1904 datemode date system TestFileODF_1899='testodf_1899.ods'; //OpenDocument/LibreOffice with 1899/1900 datemode date system TestFileODF=TestFileODF_1899; + TestFileOOXML_1904='testooxml_1904.xlsx'; //Excel xlsx with 1904 datemode date system + TestFileOOXML_1899='testooxml_1899.xlsx'; //Excel xlsx with 1899/1900 datemode date system + TestFileOOXML=TestFileOOXML_1899; TestFileManual='testmanual.xls'; //file name for manual checking using external spreadsheet program (Excel/LibreOffice..) DatesSheet = 'Dates'; //worksheet name FormulasSheet = 'Formulas'; //worksheet name diff --git a/components/fpspreadsheet/xlsxooxml.pas b/components/fpspreadsheet/xlsxooxml.pas index c3820c41b..305008acb 100755 --- a/components/fpspreadsheet/xlsxooxml.pas +++ b/components/fpspreadsheet/xlsxooxml.pas @@ -570,7 +570,8 @@ begin // Number or date/time, depending on format number := StrToFloat(dataStr, FPointSeparatorSettings); if IsDateTimeFormat(cell^.NumberFormatStr) then begin - number := ConvertExcelDateTimeToDateTime(number, FDateMode); + if cell^.NumberFormat <> nfTimeInterval then // no correction of time origin for "time interval" format + number := ConvertExcelDateTimeToDateTime(number, FDateMode); AWorksheet.WriteDateTime(cell, number, cell^.NumberFormatStr) end else