From 26d592367394480ce832d379fe5f98c776b2f0a7 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Wed, 18 Jun 2014 15:44:28 +0000 Subject: [PATCH] fpspreadsheet: Add currency test cases to ReadString tests for biff8 and ods. Rename ReadDate tests to always show the datemode in the test name. Rename test files "testbiff8.xls" and "testodf.ods" to show datemode (1904) in file name (--> testbiff8_1904.xls, testodf_1904.ods) git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3198 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/fpspreadsheet/tests/datetests.pas | 480 +++++++++--------- .../fpspreadsheet/tests/numberstests.pas | 5 - .../fpspreadsheet/tests/stringtests.pas | 28 +- .../fpspreadsheet/tests/testbiff8_1899.xls | Bin 32256 -> 34816 bytes .../{testbiff8.xls => testbiff8_1904.xls} | Bin 34816 -> 35328 bytes components/fpspreadsheet/tests/testodf.ods | Bin 20205 -> 0 bytes .../fpspreadsheet/tests/testodf_1899.ods | Bin 19457 -> 18295 bytes .../fpspreadsheet/tests/testodf_1904.ods | Bin 0 -> 19197 bytes .../fpspreadsheet/tests/testsutility.pas | 6 +- 9 files changed, 274 insertions(+), 245 deletions(-) rename components/fpspreadsheet/tests/{testbiff8.xls => testbiff8_1904.xls} (52%) delete mode 100644 components/fpspreadsheet/tests/testodf.ods create mode 100644 components/fpspreadsheet/tests/testodf_1904.ods diff --git a/components/fpspreadsheet/tests/datetests.pas b/components/fpspreadsheet/tests/datetests.pas index 5ac7e06c4..0c8bdd484 100644 --- a/components/fpspreadsheet/tests/datetests.pas +++ b/components/fpspreadsheet/tests/datetests.pas @@ -42,44 +42,45 @@ type published // Reads dates, date/time and time values from spreadsheet and checks against list // One cell per test so some tests can fail and those further below may still work - procedure TestReadDate0; //date tests - procedure TestReadDate1; //date and time - procedure TestReadDate2; - procedure TestReadDate3; - procedure TestReadDate4; //time only tests start here - procedure TestReadDate5; - procedure TestReadDate6; - procedure TestReadDate7; - procedure TestReadDate8; - procedure TestReadDate9; - procedure TestReadDate10; - procedure TestReadDate11; - procedure TestReadDate12; - procedure TestReadDate13; - procedure TestReadDate14; - procedure TestReadDate15; - procedure TestReadDate16; - procedure TestReadDate17; - procedure TestReadDate18; - procedure TestReadDate19; - procedure TestReadDate20; - procedure TestReadDate21; - procedure TestReadDate22; - procedure TestReadDate23; - procedure TestReadDate24; - procedure TestReadDate25; - procedure TestReadDate26; - procedure TestReadDate27; - procedure TestReadDate28; - procedure TestReadDate29; - procedure TestReadDate30; - procedure TestReadDate31; - procedure TestReadDate32; - procedure TestReadDate33; - procedure TestReadDate34; - procedure TestReadDate35; - procedure TestReadDate36; - procedure TestReadDate37; + procedure TestReadDate1904_0; //date tests + procedure TestReadDate1904_1; //date and time + procedure TestReadDate1904_2; + procedure TestReadDate1904_3; + procedure TestReadDate1904_4; //time only tests start here + procedure TestReadDate1904_5; + procedure TestReadDate1904_6; + procedure TestReadDate1904_7; + procedure TestReadDate1904_8; + procedure TestReadDate1904_9; + procedure TestReadDate1904_10; + procedure TestReadDate1904_11; + procedure TestReadDate1904_12; + procedure TestReadDate1904_13; + procedure TestReadDate1904_14; + procedure TestReadDate1904_15; + procedure TestReadDate1904_16; + procedure TestReadDate1904_17; + procedure TestReadDate1904_18; + procedure TestReadDate1904_19; + procedure TestReadDate1904_20; + procedure TestReadDate1904_21; + procedure TestReadDate1904_22; + procedure TestReadDate1904_23; + procedure TestReadDate1904_24; + procedure TestReadDate1904_25; + procedure TestReadDate1904_26; + procedure TestReadDate1904_27; + procedure TestReadDate1904_28; + procedure TestReadDate1904_29; + procedure TestReadDate1904_30; + procedure TestReadDate1904_31; + procedure TestReadDate1904_32; + procedure TestReadDate1904_33; + procedure TestReadDate1904_34; + procedure TestReadDate1904_35; + procedure TestReadDate1904_36; + procedure TestReadDate1904_37; + procedure TestReadDate1899_0; //same as above except with the 1899/1900 date system set procedure TestReadDate1899_1; procedure TestReadDate1899_2; @@ -118,44 +119,46 @@ type procedure TestReadDate1899_35; procedure TestReadDate1899_36; procedure TestReadDate1899_37; - procedure TestReadODFDate0; // same as above except OpenDocument/ODF format - procedure TestReadODFDate1; //date and time - procedure TestReadODFDate2; - procedure TestReadODFDate3; - procedure TestReadODFDate4; //time only tests start here - procedure TestReadODFDate5; - procedure TestReadODFDate6; - procedure TestReadODFDate7; - procedure TestReadODFDate8; - procedure TestReadODFDate9; - procedure TestReadODFDate10; - procedure TestReadODFDate11; - procedure TestReadODFDate12; - procedure TestReadODFDate13; - procedure TestReadODFDate14; - procedure TestReadODFDate15; - procedure TestReadODFDate16; - procedure TestReadODFDate17; - procedure TestReadODFDate18; - procedure TestReadODFDate19; - procedure TestReadODFDate20; - procedure TestReadODFDate21; - procedure TestReadODFDate22; - procedure TestReadODFDate23; - procedure TestReadODFDate24; - procedure TestReadODFDate25; - procedure TestReadODFDate26; - procedure TestReadODFDate27; - procedure TestReadODFDate28; - procedure TestReadODFDate29; - procedure TestReadODFDate30; - procedure TestReadODFDate31; - procedure TestReadODFDate32; - procedure TestReadODFDate33; - procedure TestReadODFDate34; - procedure TestReadODFDate35; - procedure TestReadODFDate36; - procedure TestReadODFDate37; + + procedure TestReadODFDate1904_0; // same as above except OpenDocument/ODF format + procedure TestReadODFDate1904_1; //date and time + procedure TestReadODFDate1904_2; + procedure TestReadODFDate1904_3; + procedure TestReadODFDate1904_4; //time only tests start here + procedure TestReadODFDate1904_5; + procedure TestReadODFDate1904_6; + procedure TestReadODFDate1904_7; + procedure TestReadODFDate1904_8; + procedure TestReadODFDate1904_9; + procedure TestReadODFDate1904_10; + procedure TestReadODFDate1904_11; + procedure TestReadODFDate1904_12; + procedure TestReadODFDate1904_13; + procedure TestReadODFDate1904_14; + procedure TestReadODFDate1904_15; + procedure TestReadODFDate1904_16; + procedure TestReadODFDate1904_17; + procedure TestReadODFDate1904_18; + procedure TestReadODFDate1904_19; + procedure TestReadODFDate1904_20; + procedure TestReadODFDate1904_21; + procedure TestReadODFDate1904_22; + procedure TestReadODFDate1904_23; + procedure TestReadODFDate1904_24; + procedure TestReadODFDate1904_25; + procedure TestReadODFDate1904_26; + procedure TestReadODFDate1904_27; + procedure TestReadODFDate1904_28; + procedure TestReadODFDate1904_29; + procedure TestReadODFDate1904_30; + procedure TestReadODFDate1904_31; + procedure TestReadODFDate1904_32; + procedure TestReadODFDate1904_33; + procedure TestReadODFDate1904_34; + procedure TestReadODFDate1904_35; + procedure TestReadODFDate1904_36; + procedure TestReadODFDate1904_37; + procedure TestReadODFDate1899_0; //same as above except with the 1899/1900 date system set procedure TestReadODFDate1899_1; procedure TestReadODFDate1899_2; @@ -409,196 +412,202 @@ begin end; -procedure TSpreadReadDateTests.TestReadDate0; + +{ BIFF8 1904 datemode tests } + +procedure TSpreadReadDateTests.TestReadDate1904_0; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,0); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,0); end; -procedure TSpreadReadDateTests.TestReadDate1; +procedure TSpreadReadDateTests.TestReadDate1904_1; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,1); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,1); end; -procedure TSpreadReadDateTests.TestReadDate2; +procedure TSpreadReadDateTests.TestReadDate1904_2; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,2); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,2); end; -procedure TSpreadReadDateTests.TestReadDate3; +procedure TSpreadReadDateTests.TestReadDate1904_3; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,3); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,3); end; -procedure TSpreadReadDateTests.TestReadDate4; +procedure TSpreadReadDateTests.TestReadDate1904_4; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,4); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,4); end; -procedure TSpreadReadDateTests.TestReadDate5; +procedure TSpreadReadDateTests.TestReadDate1904_5; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,5); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,5); end; -procedure TSpreadReadDateTests.TestReadDate6; +procedure TSpreadReadDateTests.TestReadDate1904_6; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,6); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,6); end; -procedure TSpreadReadDateTests.TestReadDate7; +procedure TSpreadReadDateTests.TestReadDate1904_7; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,7); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,7); end; -procedure TSpreadReadDateTests.TestReadDate8; +procedure TSpreadReadDateTests.TestReadDate1904_8; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,8); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,8); end; -procedure TSpreadReadDateTests.TestReadDate9; +procedure TSpreadReadDateTests.TestReadDate1904_9; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,9); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,9); end; -procedure TSpreadReadDateTests.TestReadDate10; +procedure TSpreadReadDateTests.TestReadDate1904_10; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,10); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,10); end; -procedure TSpreadReadDateTests.TestReadDate11; +procedure TSpreadReadDateTests.TestReadDate1904_11; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,11); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,11); end; -procedure TSpreadReadDateTests.TestReadDate12; +procedure TSpreadReadDateTests.TestReadDate1904_12; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,12); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,12); end; -procedure TSpreadReadDateTests.TestReadDate13; +procedure TSpreadReadDateTests.TestReadDate1904_13; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,13); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,13); end; -procedure TSpreadReadDateTests.TestReadDate14; +procedure TSpreadReadDateTests.TestReadDate1904_14; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,14); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,14); end; -procedure TSpreadReadDateTests.TestReadDate15; +procedure TSpreadReadDateTests.TestReadDate1904_15; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,15); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,15); end; -procedure TSpreadReadDateTests.TestReadDate16; +procedure TSpreadReadDateTests.TestReadDate1904_16; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,16); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,16); end; -procedure TSpreadReadDateTests.TestReadDate17; +procedure TSpreadReadDateTests.TestReadDate1904_17; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,17); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,17); end; -procedure TSpreadReadDateTests.TestReadDate18; +procedure TSpreadReadDateTests.TestReadDate1904_18; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,18); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,18); end; -procedure TSpreadReadDateTests.TestReadDate19; +procedure TSpreadReadDateTests.TestReadDate1904_19; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,19); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,19); end; -procedure TSpreadReadDateTests.TestReadDate20; +procedure TSpreadReadDateTests.TestReadDate1904_20; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,20); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,20); end; -procedure TSpreadReadDateTests.TestReadDate21; +procedure TSpreadReadDateTests.TestReadDate1904_21; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,21); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,21); end; -procedure TSpreadReadDateTests.TestReadDate22; +procedure TSpreadReadDateTests.TestReadDate1904_22; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,22); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,22); end; -procedure TSpreadReadDateTests.TestReadDate23; +procedure TSpreadReadDateTests.TestReadDate1904_23; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,23); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,23); end; -procedure TSpreadReadDateTests.TestReadDate24; +procedure TSpreadReadDateTests.TestReadDate1904_24; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,24); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,24); end; -procedure TSpreadReadDateTests.TestReadDate25; +procedure TSpreadReadDateTests.TestReadDate1904_25; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,25); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,25); end; -procedure TSpreadReadDateTests.TestReadDate26; +procedure TSpreadReadDateTests.TestReadDate1904_26; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,26); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,26); end; -procedure TSpreadReadDateTests.TestReadDate27; +procedure TSpreadReadDateTests.TestReadDate1904_27; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,27); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,27); end; -procedure TSpreadReadDateTests.TestReadDate28; +procedure TSpreadReadDateTests.TestReadDate1904_28; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,28); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,28); end; -procedure TSpreadReadDateTests.TestReadDate29; +procedure TSpreadReadDateTests.TestReadDate1904_29; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,29); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,29); end; -procedure TSpreadReadDateTests.TestReadDate30; +procedure TSpreadReadDateTests.TestReadDate1904_30; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,30); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,30); end; -procedure TSpreadReadDateTests.TestReadDate31; +procedure TSpreadReadDateTests.TestReadDate1904_31; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,31); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,31); end; -procedure TSpreadReadDateTests.TestReadDate32; +procedure TSpreadReadDateTests.TestReadDate1904_32; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,32); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,32); end; -procedure TSpreadReadDateTests.TestReadDate33; +procedure TSpreadReadDateTests.TestReadDate1904_33; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,33); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,33); end; -procedure TSpreadReadDateTests.TestReadDate34; +procedure TSpreadReadDateTests.TestReadDate1904_34; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,34); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,34); end; -procedure TSpreadReadDateTests.TestReadDate35; +procedure TSpreadReadDateTests.TestReadDate1904_35; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,35); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,35); end; -procedure TSpreadReadDateTests.TestReadDate36; +procedure TSpreadReadDateTests.TestReadDate1904_36; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,36); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,36); end; -procedure TSpreadReadDateTests.TestReadDate37; +procedure TSpreadReadDateTests.TestReadDate1904_37; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,37); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1904,37); end; + +{ BIFF8 1899 datemode tests } + procedure TSpreadReadDateTests.TestReadDate1899_0; begin TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1899,0); @@ -789,205 +798,202 @@ begin TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileBIFF8_1899,37); end; -procedure TSpreadReadDateTests.TestReadODFDate0; + +{ ODS 1904 datemode tests } + +procedure TSpreadReadDateTests.TestReadODFDate1904_0; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,0); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,0); end; -procedure TSpreadReadDateTests.TestReadODFDate1; +procedure TSpreadReadDateTests.TestReadODFDate1904_1; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,1); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,1); end; -procedure TSpreadReadDateTests.TestReadODFDate2; +procedure TSpreadReadDateTests.TestReadODFDate1904_2; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,2); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,2); end; -procedure TSpreadReadDateTests.TestReadODFDate3; +procedure TSpreadReadDateTests.TestReadODFDate1904_3; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,3); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,3); end; -procedure TSpreadReadDateTests.TestReadODFDate4; +procedure TSpreadReadDateTests.TestReadODFDate1904_4; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,4); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,4); end; -procedure TSpreadReadDateTests.TestReadODFDate5; +procedure TSpreadReadDateTests.TestReadODFDate1904_5; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,5); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,5); end; -procedure TSpreadReadDateTests.TestReadODFDate6; +procedure TSpreadReadDateTests.TestReadODFDate1904_6; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,6); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,6); end; -procedure TSpreadReadDateTests.TestReadODFDate7; +procedure TSpreadReadDateTests.TestReadODFDate1904_7; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,7); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,7); end; -procedure TSpreadReadDateTests.TestReadODFDate8; +procedure TSpreadReadDateTests.TestReadODFDate1904_8; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,8); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,8); end; -procedure TSpreadReadDateTests.TestReadODFDate9; +procedure TSpreadReadDateTests.TestReadODFDate1904_9; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,9); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,9); end; -procedure TSpreadReadDateTests.TestReadODFDate10; +procedure TSpreadReadDateTests.TestReadODFDate1904_10; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,10); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,10); end; -procedure TSpreadReadDateTests.TestReadODFDate11; +procedure TSpreadReadDateTests.TestReadODFDate1904_11; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,11); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,11); end; -procedure TSpreadReadDateTests.TestReadODFDate12; +procedure TSpreadReadDateTests.TestReadODFDate1904_12; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,12); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,12); end; -procedure TSpreadReadDateTests.TestReadODFDate13; +procedure TSpreadReadDateTests.TestReadODFDate1904_13; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,13); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,13); end; -procedure TSpreadReadDateTests.TestReadODFDate14; +procedure TSpreadReadDateTests.TestReadODFDate1904_14; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,14); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,14); end; -procedure TSpreadReadDateTests.TestReadODFDate15; +procedure TSpreadReadDateTests.TestReadODFDate1904_15; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,15); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,15); end; -procedure TSpreadReadDateTests.TestReadODFDate16; +procedure TSpreadReadDateTests.TestReadODFDate1904_16; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,16); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,16); end; -procedure TSpreadReadDateTests.TestReadODFDate17; +procedure TSpreadReadDateTests.TestReadODFDate1904_17; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,17); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,17); end; -procedure TSpreadReadDateTests.TestReadODFDate18; +procedure TSpreadReadDateTests.TestReadODFDate1904_18; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,18); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,18); end; -procedure TSpreadReadDateTests.TestReadODFDate19; +procedure TSpreadReadDateTests.TestReadODFDate1904_19; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,19); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,19); end; -procedure TSpreadReadDateTests.TestReadODFDate20; +procedure TSpreadReadDateTests.TestReadODFDate1904_20; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,20); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,20); end; -procedure TSpreadReadDateTests.TestReadODFDate21; +procedure TSpreadReadDateTests.TestReadODFDate1904_21; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,21); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,21); end; -procedure TSpreadReadDateTests.TestReadODFDate22; +procedure TSpreadReadDateTests.TestReadODFDate1904_22; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,22); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,22); end; -procedure TSpreadReadDateTests.TestReadODFDate23; +procedure TSpreadReadDateTests.TestReadODFDate1904_23; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,23); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,23); end; -procedure TSpreadReadDateTests.TestReadODFDate24; +procedure TSpreadReadDateTests.TestReadODFDate1904_24; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,24); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,24); end; -procedure TSpreadReadDateTests.TestReadODFDate25; +procedure TSpreadReadDateTests.TestReadODFDate1904_25; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,25); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,25); end; -procedure TSpreadReadDateTests.TestReadODFDate26; +procedure TSpreadReadDateTests.TestReadODFDate1904_26; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,26); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,26); end; -procedure TSpreadReadDateTests.TestReadODFDate27; +procedure TSpreadReadDateTests.TestReadODFDate1904_27; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,27); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,27); end; -procedure TSpreadReadDateTests.TestReadODFDate28; +procedure TSpreadReadDateTests.TestReadODFDate1904_28; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,28); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,28); end; -procedure TSpreadReadDateTests.TestReadODFDate29; +procedure TSpreadReadDateTests.TestReadODFDate1904_29; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,29); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,29); end; -procedure TSpreadReadDateTests.TestReadODFDate30; +procedure TSpreadReadDateTests.TestReadODFDate1904_30; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,30); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,30); end; -procedure TSpreadReadDateTests.TestReadODFDate31; +procedure TSpreadReadDateTests.TestReadODFDate1904_31; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,31); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,31); end; -procedure TSpreadReadDateTests.TestReadODFDate32; +procedure TSpreadReadDateTests.TestReadODFDate1904_32; begin - //Ignore('ODF code does not support custom date format'); - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,32); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,32); end; -procedure TSpreadReadDateTests.TestReadODFDate33; +procedure TSpreadReadDateTests.TestReadODFDate1904_33; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,33); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,33); end; -procedure TSpreadReadDateTests.TestReadODFDate34; +procedure TSpreadReadDateTests.TestReadODFDate1904_34; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,34); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,34); end; -procedure TSpreadReadDateTests.TestReadODFDate35; +procedure TSpreadReadDateTests.TestReadODFDate1904_35; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,35); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,35); end; -procedure TSpreadReadDateTests.TestReadODFDate36; +procedure TSpreadReadDateTests.TestReadODFDate1904_36; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,36); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,36); end; -procedure TSpreadReadDateTests.TestReadODFDate37; +procedure TSpreadReadDateTests.TestReadODFDate1904_37; begin - TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF,37); + TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1904,37); end; + +{ ODS 1899 datemode tests } + procedure TSpreadReadDateTests.TestReadODFDate1899_0; begin TestReadDate(ExtractFilePath(ParamStr(0)) + TestFileODF_1899,0); diff --git a/components/fpspreadsheet/tests/numberstests.pas b/components/fpspreadsheet/tests/numberstests.pas index 9aee6dbe9..ea7192c8b 100644 --- a/components/fpspreadsheet/tests/numberstests.pas +++ b/components/fpspreadsheet/tests/numberstests.pas @@ -117,11 +117,6 @@ var TestWorkbook: TsWorkbook = nil; TestFileName: String = ''; -const - TestFileBIFF8='testbiff8.xls'; //with 1904 numbermode number system - TestFileBIFF8_1899='testbiff8_1899.xls'; //with 1899/1900 numbermode number system - NumbersSheet = 'Numbers'; //worksheet name - // Initialize array with variables that represent the values // we expect to be in the test spreadsheet files. // diff --git a/components/fpspreadsheet/tests/stringtests.pas b/components/fpspreadsheet/tests/stringtests.pas index 14a38cbe7..56efbf37e 100644 --- a/components/fpspreadsheet/tests/stringtests.pas +++ b/components/fpspreadsheet/tests/stringtests.pas @@ -30,7 +30,7 @@ uses var // Norm to test against - list of strings that should occur in spreadsheet - SollStrings: array[0..12] of string; //"Soll" is a German word in Dutch accountancy jargon meaning "normative value to check against". There ;) + SollStrings: array[0..14] of string; //"Soll" is a German word in Dutch accountancy jargon meaning "normative value to check against". There ;) // Initializes Soll*/normative variables. // Useful in test setup procedures to make sure the norm is correct. procedure InitSollStrings; @@ -62,6 +62,8 @@ type procedure TestReadString10; procedure TestReadString11; procedure TestReadString12; + procedure TestReadString13; + procedure TestReadString14; procedure TestReadODFString0; //OpenDocument/LibreOffice format empty string procedure TestReadODFString1; procedure TestReadODFString2; @@ -75,6 +77,8 @@ type procedure TestReadODFString10; procedure TestReadODFString11; procedure TestReadODFString12; + procedure TestReadODFString13; + procedure TestReadODFString14; end; { TSpreadWriteReadStringTests } @@ -122,6 +126,8 @@ begin SollStrings[10]:=FormatFloat('#,##0.00', 59000000.1234); // 59 million + 0.1234 formatted with thousand separator, 2 decimals SollStrings[11]:=SciFloat(-59000000.1234, 1); // minus 59 million + 0.1234, formatted as "scientific" with 1 decimal SollStrings[12]:=FormatFloat('0.00E+00', -59000000.1234); // minus 59 million + 0.1234, formatted as "exp" with 2 decimals + SollStrings[13]:=FormatFloat('#,##0.00 "EUR";(#,##0.00 "EUR")', 59000000.1234); // 59 million + 0.1234, formatted as "currencyRed" with 2 decimals, brackets and EUR + SollStrings[14]:=FormatFloat('#,##0.00 "EUR";(#,##0.00 "EUR")', -59000000.1234); // minus 59 million + 0.1234, formatted as "currencyRed" with 2 decimals, brackets and EUR end; { TSpreadWriteReadStringTests } @@ -404,6 +410,16 @@ begin TestReadString(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,12); end; +procedure TSpreadReadStringTests.TestReadString13; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,13); +end; + +procedure TSpreadReadStringTests.TestReadString14; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileBIFF8,14); +end; + procedure TSpreadReadStringTests.TestReadODFString0; begin TestReadString(ExtractFilePath(ParamStr(0)) + TestFileODF,0); @@ -469,6 +485,16 @@ begin TestReadString(ExtractFilePath(ParamStr(0)) + TestFileODF,12); end; +procedure TSpreadReadStringTests.TestReadODFString13; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileODF,13); +end; + +procedure TSpreadReadStringTests.TestReadODFString14; +begin + TestReadString(ExtractFilePath(ParamStr(0)) + TestFileODF,14); +end; + initialization // Register so these tests are included in a full run RegisterTest(TSpreadReadStringTests); diff --git a/components/fpspreadsheet/tests/testbiff8_1899.xls b/components/fpspreadsheet/tests/testbiff8_1899.xls index 84b72be7b9a9e6f40531b1caffb23ba89a3bdf38..361c4d2432832ed52d50e05773faa56b9ccc4e0b 100644 GIT binary patch delta 3328 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 Hdx3ZWwq+x5 diff --git a/components/fpspreadsheet/tests/testodf_1899.ods b/components/fpspreadsheet/tests/testodf_1899.ods index edb96235d473138df1cfd0a42954454b885ca32e..adbbb8a41333f092ce67534148289089a12c488d 100644 GIT binary patch delta 15532 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

T6>!jx>!^QoQ9h+HwS?HeooqdY*r& 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 diff --git a/components/fpspreadsheet/tests/testodf_1904.ods b/components/fpspreadsheet/tests/testodf_1904.ods new file mode 100644 index 0000000000000000000000000000000000000000..7aad1ee4b9ae18e7b29834d81652cdf853404198 GIT binary patch literal 19197 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 literal 0 HcmV?d00001 diff --git a/components/fpspreadsheet/tests/testsutility.pas b/components/fpspreadsheet/tests/testsutility.pas index 2418881cf..d1f6b4504 100644 --- a/components/fpspreadsheet/tests/testsutility.pas +++ b/components/fpspreadsheet/tests/testsutility.pas @@ -11,10 +11,12 @@ uses Classes, SysUtils, fpspreadsheet; const - TestFileBIFF8='testbiff8.xls'; //with 1904 datemode date system + TestFileBIFF8_1904='testbiff8_1904.xls'; //with 1904 datemode date system TestFileBIFF8_1899='testbiff8_1899.xls'; //with 1899/1900 datemode date system - TestFileODF='testodf.ods'; //OpenDocument/LibreOffice with 1904 datemode date system + TestFileBIFF8=TestFileBIFF8_1899; + 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; TestFileManual='testmanual.xls'; //file name for manual checking using external spreadsheet program (Excel/LibreOffice..) DatesSheet = 'Dates'; //worksheet name FormulasSheet = 'Formulas'; //worksheet name