From 116b52229000d43c8e60d8ad238b76673c9a70b0 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Mon, 4 May 2015 21:14:29 +0000 Subject: [PATCH] fpspreadsheet: Add unit tests for page layout headers and footers. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4114 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/fpspreadsheet/fpsopendocument.pas | 7 +- .../fpspreadsheet/tests/pagelayouttests.pas | 228 +++++++++++++++++- 2 files changed, 232 insertions(+), 3 deletions(-) diff --git a/components/fpspreadsheet/fpsopendocument.pas b/components/fpspreadsheet/fpsopendocument.pas index 6f64c69c6..e0256c73a 100755 --- a/components/fpspreadsheet/fpsopendocument.pas +++ b/components/fpspreadsheet/fpsopendocument.pas @@ -1045,7 +1045,9 @@ begin nodeName := textNode.NodeName; case nodeName of '#text': - Result := Result + textNode.NodeValue; + if textNode.NodeValue = '&' + then Result := Result + '&&' + else Result := Result + textNode.NodeValue; 'text:sheet-name': Result := Result + '&A'; 'text:page-number': @@ -3746,12 +3748,13 @@ procedure TsSpreadOpenDocWriter.WriteMasterStyles(AStream: TStream); 'D': Result := Result + Format( '%s', [FormatDateTime('yyyy"-"mm"-"dd', date()), DateToStr(date())]); - 'F': Result := Result + '???'; + 'F': Result := Result + '???'; 'P': Result := Result + '1'; 'N': Result := Result + '1'; 'T': Result := Result + Format( '%s', [FormatDateTime('hh:nn:ss', time())]); 'Z': Result := Result + '???'; + '&': Result := Result + '&&'; end; end else diff --git a/components/fpspreadsheet/tests/pagelayouttests.pas b/components/fpspreadsheet/tests/pagelayouttests.pas index 8399cacc2..947fcf793 100644 --- a/components/fpspreadsheet/tests/pagelayouttests.pas +++ b/components/fpspreadsheet/tests/pagelayouttests.pas @@ -42,6 +42,14 @@ type procedure TestWriteRead_BIFF2_PageMargins_3sheets_2; procedure TestWriteRead_BIFF2_PageMargins_3sheets_3; + procedure TestWriteRead_BIFF2_HeaderFooterRegions_1sheet; + procedure TestWriteRead_BIFF2_HeaderFooterRegions_2sheets; + procedure TestWriteRead_BIFF2_HeaderFooterRegions_3sheets; + + procedure TestWriteRead_BIFF2_HeaderFooterSymbols_1sheet; + procedure TestWriteRead_BIFF2_HeaderFooterSymbols_2sheets; + procedure TestWriteRead_BIFF2_HeaderFooterSymbols_3sheets; + // no BIFF2 page orientation tests because this info is not readily available in the file @@ -83,6 +91,14 @@ type procedure TestWriteRead_BIFF5_PageNumber_2sheets; procedure TestWriteRead_BIFF5_PageNumber_3sheets; + procedure TestWriteRead_BIFF5_HeaderFooterRegions_1sheet; + procedure TestWriteRead_BIFF5_HeaderFooterRegions_2sheets; + procedure TestWriteRead_BIFF5_HeaderFooterRegions_3sheets; + + procedure TestWriteRead_BIFF5_HeaderFooterSymbols_1sheet; + procedure TestWriteRead_BIFF5_HeaderFooterSymbols_2sheets; + procedure TestWriteRead_BIFF5_HeaderFooterSymbols_3sheets; + { BIFF8 page layout tests } procedure TestWriteRead_BIFF8_PageMargins_1sheet_0; procedure TestWriteRead_BIFF8_PageMargins_1sheet_1; @@ -121,6 +137,14 @@ type procedure TestWriteRead_BIFF8_PageNumber_2sheets; procedure TestWriteRead_BIFF8_PageNumber_3sheets; + procedure TestWriteRead_BIFF8_HeaderFooterRegions_1sheet; + procedure TestWriteRead_BIFF8_HeaderFooterRegions_2sheets; + procedure TestWriteRead_BIFF8_HeaderFooterRegions_3sheets; + + procedure TestWriteRead_BIFF8_HeaderFooterSymbols_1sheet; + procedure TestWriteRead_BIFF8_HeaderFooterSymbols_2sheets; + procedure TestWriteRead_BIFF8_HeaderFooterSymbols_3sheets; + { OOXML page layout tests } procedure TestWriteRead_OOXML_PageMargins_1sheet_0; procedure TestWriteRead_OOXML_PageMargins_1sheet_1; @@ -159,6 +183,14 @@ type procedure TestWriteRead_OOXML_PageNumber_2sheets; procedure TestWriteRead_OOXML_PageNumber_3sheets; + procedure TestWriteRead_OOXML_HeaderFooterRegions_1sheet; + procedure TestWriteRead_OOXML_HeaderFooterRegions_2sheets; + procedure TestWriteRead_OOXML_HeaderFooterRegions_3sheets; + + procedure TestWriteRead_OOXML_HeaderFooterSymbols_1sheet; + procedure TestWriteRead_OOXML_HeaderFooterSymbols_2sheets; + procedure TestWriteRead_OOXML_HeaderFooterSymbols_3sheets; + { OpenDocument page layout tests } procedure TestWriteRead_ODS_PageMargins_1sheet_0; procedure TestWriteRead_ODS_PageMargins_1sheet_1; @@ -197,6 +229,14 @@ type procedure TestWriteRead_ODS_PageNumber_2sheets; procedure TestWriteRead_ODS_PageNumber_3sheets; + procedure TestWriteRead_ODS_HeaderFooterRegions_1sheet; + procedure TestWriteRead_ODS_HeaderFooterRegions_2sheets; + procedure TestWriteRead_ODS_HeaderFooterRegions_3sheets; + + procedure TestWriteRead_ODS_HeaderFooterSymbols_1sheet; + procedure TestWriteRead_ODS_HeaderFooterSymbols_2sheets; + procedure TestWriteRead_ODS_HeaderFooterSymbols_3sheets; + end; implementation @@ -314,6 +354,7 @@ end; 3 - Scale n pages to width: sheet 1 n=2, sheet 2 n=3, sheet 3 n=1 4 - Scale n pages to height: sheet 1 n=2, sheet 2 n=3, sheet 3 n=1 5 - First page number: sheet 1 - 3, sheet 2 - automatic, sheet 3 - 1 + 6 - Header/footer region test: sheet 1 - header only, sheet 2 - footer only, sheet 3 - both -------------------------------------------------------------------------------} procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageLayout( AFormat: TsSpreadsheetFormat; ANumSheets, ATestMode: Integer); @@ -370,7 +411,7 @@ begin end; 5: // Page number of first pge begin - Options := Options + [poPrintHeaders, poUseStartPageNumber]; + Options := Options + [poUseStartPageNumber]; case p of 0: StartPageNumber := 3; 1: Exclude(Options, poUseStartPageNumber); @@ -378,6 +419,24 @@ begin end; Headers[HEADER_FOOTER_INDEX_ALL] := '&LPage &P of &N'; end; + 6: // Header/footer region test + case p of + 0: Headers[HEADER_FOOTER_INDEX_ALL] := '&LLeft header&CCenter header&RRight header'; + 1: Footers[HEADER_FOOTER_INDEX_ALL] := '&LLeft foorer&CCenter footer&RRight footer'; + 2: begin + Headers[HEADER_FOOTER_INDEX_ALL] := '&LLeft header&CCenter header&RRight header'; + Footers[HEADER_FOOTER_INDEX_ALL] := '&LLeft foorer&CCenter footer&RRight footer'; + end; + end; + 7: // Header/footer symbol test + case p of + 0: Headers[HEADER_FOOTER_INDEX_ALL] := '&LPage &P / Page count &N&CDate &D - Time &T&RFile &Z&F'; + 1: Footers[HEADER_FOOTER_INDEX_ALL] := '&LSheet "&A"&C100&&'; + 2: begin + Headers[HEADER_FOOTER_INDEX_ALL] := '&LPage &P of &N&C&D &T&R&Z&F'; + Footers[HEADER_FOOTER_INDEX_ALL] := '&LSheet "&A"&C100&&'; + end; + end; end; end; end; @@ -449,6 +508,13 @@ begin CheckEquals(sollPageLayout[p].StartPageNumber, actualPageLayout.StartPageNumber, 'StartPageNumber value mismatch, sheet "' + MyWorksheet.Name + '"'); end; + 6, 7: // Header/footer tests + begin + CheckEquals(sollPageLayout[p].Headers[1], actualPageLayout.Headers[1], + 'Header value mismatch, sheet "' + MyWorksheet.Name + '"'); + CheckEquals(sollPageLayout[p].Footers[1], actualPageLayout.Footers[1], + 'Footer value mismatch, sheet "' + MyWorksheet.Name + '"'); + end; end; end; @@ -524,6 +590,38 @@ begin end; +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_HeaderFooterRegions_1sheet; +begin + TestWriteRead_PageLayout(sfExcel2, 1, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_HeaderFooterRegions_2sheets; +begin + TestWriteRead_PageLayout(sfExcel2, 2, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_HeaderFooterRegions_3sheets; +begin + TestWriteRead_PageLayout(sfExcel2, 3, 6); +end; + + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_HeaderFooterSymbols_1sheet; +begin + TestWriteRead_PageLayout(sfExcel2, 1, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_HeaderFooterSymbols_2sheets; +begin + TestWriteRead_PageLayout(sfExcel2, 2, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_HeaderFooterSymbols_3sheets; +begin + TestWriteRead_PageLayout(sfExcel2, 3, 7); +end; + + { Tests for BIFF5 file format } procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_1sheet_0; @@ -685,6 +783,38 @@ begin end; +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_HeaderFooterRegions_1sheet; +begin + TestWriteRead_PageLayout(sfExcel5, 1, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_HeaderFooterRegions_2sheets; +begin + TestWriteRead_PageLayout(sfExcel5, 2, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_HeaderFooterRegions_3sheets; +begin + TestWriteRead_PageLayout(sfExcel5, 3, 6); +end; + + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_HeaderFooterSymbols_1sheet; +begin + TestWriteRead_PageLayout(sfExcel5, 1, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_HeaderFooterSymbols_2sheets; +begin + TestWriteRead_PageLayout(sfExcel5, 2, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_HeaderFooterSymbols_3sheets; +begin + TestWriteRead_PageLayout(sfExcel5, 3, 7); +end; + + { Tests for BIFF8 file format } procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_1sheet_0; @@ -846,6 +976,38 @@ begin end; +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_HeaderFooterRegions_1sheet; +begin + TestWriteRead_PageLayout(sfExcel8, 1, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_HeaderFooterRegions_2sheets; +begin + TestWriteRead_PageLayout(sfExcel8, 2, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_HeaderFooterRegions_3sheets; +begin + TestWriteRead_PageLayout(sfExcel8, 3, 6); +end; + + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_HeaderFooterSymbols_1sheet; +begin + TestWriteRead_PageLayout(sfExcel8, 1, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_HeaderFooterSymbols_2sheets; +begin + TestWriteRead_PageLayout(sfExcel8, 2, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_HeaderFooterSymbols_3sheets; +begin + TestWriteRead_PageLayout(sfExcel8, 3, 7); +end; + + { Tests for OOXML file format } procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_1sheet_0; @@ -1007,6 +1169,38 @@ begin end; +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_HeaderFooterRegions_1sheet; +begin + TestWriteRead_PageLayout(sfOOXML, 1, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_HeaderFooterRegions_2sheets; +begin + TestWriteRead_PageLayout(sfOOXML, 2, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_HeaderFooterRegions_3sheets; +begin + TestWriteRead_PageLayout(sfOOXML, 3, 6); +end; + + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_HeaderFooterSymbols_1sheet; +begin + TestWriteRead_PageLayout(sfOOXML, 1, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_HeaderFooterSymbols_2sheets; +begin + TestWriteRead_PageLayout(sfOOXML, 2, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_HeaderFooterSymbols_3sheets; +begin + TestWriteRead_PageLayout(sfOOXML, 3, 7); +end; + + { Tests for Open Document file format } procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_1sheet_0; @@ -1168,6 +1362,38 @@ begin end; +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_HeaderFooterRegions_1sheet; +begin + TestWriteRead_PageLayout(sfOpenDocument, 1, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_HeaderFooterRegions_2sheets; +begin + TestWriteRead_PageLayout(sfOpenDocument, 2, 6); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_HeaderFooterRegions_3sheets; +begin + TestWriteRead_PageLayout(sfOpenDocument, 3, 6); +end; + + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_HeaderFooterSymbols_1sheet; +begin + TestWriteRead_PageLayout(sfOpenDocument, 1, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_HeaderFooterSymbols_2sheets; +begin + TestWriteRead_PageLayout(sfOpenDocument, 2, 7); +end; + +procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_HeaderFooterSymbols_3sheets; +begin + TestWriteRead_PageLayout(sfOpenDocument, 3, 7); +end; + + initialization RegisterTest(TSpreadWriteReadPageLayoutTests);