From 8db894695548106cdbc10d975ef3bd3b44c93279 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Thu, 9 Jul 2020 17:22:24 +0000 Subject: [PATCH] fpspreadsheet: Add format check to CF unit test. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7534 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../tests/conditionalformattests.pas | 469 +++++++++++++----- 1 file changed, 339 insertions(+), 130 deletions(-) diff --git a/components/fpspreadsheet/tests/conditionalformattests.pas b/components/fpspreadsheet/tests/conditionalformattests.pas index 5b627d6ba..5747cc65a 100644 --- a/components/fpspreadsheet/tests/conditionalformattests.pas +++ b/components/fpspreadsheet/tests/conditionalformattests.pas @@ -27,40 +27,42 @@ type procedure TearDown; override; // Test conditional cell format - procedure TestWriteRead_CF_Number(AFormat: TsSpreadsheetFormat; - ACondition: TsCFCondition; AValue1, AValue2: Variant); - procedure TestWriteRead_CF_Number(AFormat: TsSpreadsheetFormat; - ACondition: TsCFCondition; AValue1: Variant); - procedure TestWriteRead_CF_Number(AFormat: TsSpreadsheetFormat; - ACondition: TsCFCondition); + procedure TestWriteRead_CF_CellFmt(AFileFormat: TsSpreadsheetFormat; + ACondition: TsCFCondition; AValue1, AValue2: Variant; ACellFormat: TsCellFormat); + procedure TestWriteRead_CF_CellFmt(AFileFormat: TsSpreadsheetFormat; + ACondition: TsCFCondition; AValue1: Variant; ACellFormat: TsCellFormat); + procedure TestWriteRead_CF_CellFmt(AFileFormat: TsSpreadsheetFormat; + ACondition: TsCFCondition; ACellFormat: TsCellFormat); published - procedure TestWriteRead_CF_Number_XLSX_Equal_Const; - procedure TestWriteRead_CF_Number_XLSX_NotEqual_Const; - procedure TestWriteRead_CF_Number_XLSX_GreaterThan_Const; - procedure TestWriteRead_CF_Number_XLSX_LessThan_Const; - procedure TestWriteRead_CF_Number_XLSX_GreaterEqual_Const; - procedure TestWriteRead_CF_Number_XLSX_LessEqual_Const; - procedure TestWriteRead_CF_Number_XLSX_Between_Const; - procedure TestWriteRead_CF_Number_XLSX_NotBetween_Const; - procedure TestWriteRead_CF_Number_XLSX_AboveAverage; - procedure TestWriteRead_CF_Number_XLSX_BelowAverage; - procedure TestWriteRead_CF_Number_XLSX_AboveEqualAverage; - procedure TestWriteRead_CF_Number_XLSX_BelowEqualAverage; - procedure TestWriteRead_CF_Number_XLSX_AboveAverage_2StdDev; - procedure TestWriteRead_CF_Number_XLSX_BelowAverage_2StdDev; - procedure TestWriteRead_CF_NUMBER_XLSX_Top3; - procedure TestWriteRead_CF_NUMBER_XLSX_Top10Percent; - procedure TestWriteRead_CF_NUMBER_XLSX_Bottom3; - procedure TestWriteRead_CF_NUMBER_XLSX_Bottom10Percent; - procedure TestWriteRead_CF_NUMBER_XLSX_BeginsWith; - procedure TestWriteRead_CF_NUMBER_XLSX_EndsWith; - procedure TestWriteRead_CF_NUMBER_XLSX_Contains; - procedure TestWriteRead_CF_NUMBER_XLSX_NotContains; - procedure TestWriteRead_CF_NUMBER_XLSX_Unique; - procedure TestWriteRead_CF_NUMBER_XLSX_Duplicate; - procedure TestWriteRead_CF_Number_XLSX_ContainsErrors; - procedure TestWriteRead_CF_Number_XLSX_NotContainsErrors; + procedure TestWriteRead_CF_CellFmt_XLSX_Equal_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_NotEqual_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_GreaterThan_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_LessThan_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_GreaterEqual_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_LessEqual_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_Between_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_NotBetween_Const; + procedure TestWriteRead_CF_CellFmt_XLSX_AboveAverage; + procedure TestWriteRead_CF_CellFmt_XLSX_BelowAverage; + procedure TestWriteRead_CF_CellFmt_XLSX_AboveEqualAverage; + procedure TestWriteRead_CF_CellFmt_XLSX_BelowEqualAverage; + procedure TestWriteRead_CF_CellFmt_XLSX_AboveAverage_2StdDev; + procedure TestWriteRead_CF_CellFmt_XLSX_BelowAverage_2StdDev; + procedure TestWriteRead_CF_CellFmt_XLSX_Top3; + procedure TestWriteRead_CF_CellFmt_XLSX_Top10Percent; + procedure TestWriteRead_CF_CellFmt_XLSX_Bottom3; + procedure TestWriteRead_CF_CellFmt_XLSX_Bottom10Percent; + procedure TestWriteRead_CF_CellFmt_XLSX_BeginsWith; + procedure TestWriteRead_CF_CellFmt_XLSX_EndsWith; + procedure TestWriteRead_CF_CellFmt_XLSX_Contains; + procedure TestWriteRead_CF_CellFmt_XLSX_NotContains; + procedure TestWriteRead_CF_CellFmt_XLSX_Unique; + procedure TestWriteRead_CF_CellFmt_XLSX_Duplicate; + procedure TestWriteRead_CF_CellFmt_XLSX_ContainsErrors; + procedure TestWriteRead_CF_CellFmt_XLSX_NotContainsErrors; + procedure TestWriteRead_CF_CellFmt_XLSX_Background; + procedure TestWriteRead_CF_CellFmt_XLSX_Border; end; implementation @@ -82,30 +84,30 @@ begin end; -{ CFCellFormat tests. Detected cells get a red background. } +{ Conditional CellFormat tests. Detected cells get a red background. } -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number( - AFormat: TsSpreadsheetFormat; ACondition: TsCFCondition); +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt( + AFileFormat: TsSpreadsheetFormat; ACondition: TsCFCondition; ACellFormat: TsCellFormat); var dummy: variant; begin VarClear(dummy); - TestWriteRead_CF_NUMBER(AFormat, ACondition, dummy, dummy); + TestWriteRead_CF_CellFmt(AFileFormat, ACondition, dummy, dummy, ACellFormat); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number( - AFormat: TsSpreadsheetFormat; ACondition: TsCFCondition; - AValue1: Variant); +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt( + AFileFormat: TsSpreadsheetFormat; ACondition: TsCFCondition; + AValue1: Variant; ACellFormat: TsCellFormat); var dummy: Variant; begin VarClear(dummy); - TestWriteRead_CF_NUMBER(AFormat, ACondition, AValue1, dummy); + TestWriteRead_CF_CellFmt(AFileFormat, ACondition, AValue1, dummy, ACellFormat); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number( - AFormat: TsSpreadsheetFormat; ACondition: TsCFCondition; - AValue1, AValue2: Variant); +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt( + AFileFormat: TsSpreadsheetFormat; ACondition: TsCFCondition; + AValue1, AValue2: Variant; ACellFormat: TsCellFormat); const SHEET_NAME = 'CF'; TEXTS: array[0..6] of String = ('abc', 'def', 'ghi', 'abc', 'jkl', 'akl', 'ab'); @@ -114,7 +116,6 @@ var workbook: TsWorkbook; row, col: Cardinal; tempFile: string; - sollFMT: TsCellFormat; sollFmtIdx: Integer; sollRange: TsCellRange; actFMT: TsCellFormat; @@ -140,9 +141,7 @@ begin worksheet.WriteFormula(row, col, '=1/0'); // Write format used by the cells detected by conditional formatting - InitFormatRecord(sollFmt); - sollFmt.SetBackgroundColor(scRed); - sollFmtIdx := workbook.AddCellFormat(sollFmt); + sollFmtIdx := workbook.AddCellFormat(ACellFormat); // Write instruction for conditional formatting sollRange := Range(0, 0, 1, 10); @@ -156,7 +155,7 @@ begin // Save to file tempFile := NewTempFile; - workBook.WriteToFile(tempFile, AFormat, true); + workBook.WriteToFile(tempFile, AFileFormat, true); finally workbook.Free; end; @@ -164,7 +163,7 @@ begin // Open the spreadsheet workbook := TsWorkbook.Create; try - workbook.ReadFromFile(TempFile, AFormat); + workbook.ReadFromFile(TempFile, AFileFormat); worksheet := GetWorksheetByName(workBook, SHEET_NAME); if worksheet=nil then @@ -189,37 +188,125 @@ begin // Check rules class CheckEquals(TsCFCellRule, cf.Rules[0].ClassType, 'Conditional format rule class mismatch'); - // Check condition - actCondition := TsCFCellRule(cf.Rules[0]).Condition; - CheckEquals( - GetEnumName(TypeInfo(TsCFCondition), integer(ACondition)), - GetEnumName(typeInfo(TsCFCondition), integer(actCondition)), - 'Conditional format condition mismatch.' - ); - - // Check 1st parameter - actValue1 := TsCFCellRule(cf.Rules[0]).Operand1; - if not VarIsEmpty(AValue1) then + if cf.Rules[0] is TsCFCellRule then begin - if VarIsStr(AValue1) then - CheckEquals(VarToStr(AValue1), VarToStr(actValue1), 'Conditional format parameter 1 mismatch') - else if VarIsNumeric(AValue1) then - CheckEquals(Double(AValue1), Double(actValue1), 'Conditional format parameter 1 mismatch') - else - raise Exception.Create('Unknown data type in variant'); - end else - CheckEquals(true, VarIsEmpty(actValue1), 'Omitted parameter 1 detected.'); + // Check condition + actCondition := TsCFCellRule(cf.Rules[0]).Condition; + CheckEquals( + GetEnumName(TypeInfo(TsCFCondition), integer(ACondition)), + GetEnumName(typeInfo(TsCFCondition), integer(actCondition)), + 'Conditional format condition mismatch.' + ); - // Check 2nd parameter - actValue2 := TsCFCellRule(cf.Rules[0]).Operand2; - if not (VarIsEmpty(AValue2) or VarIsNull(AValue2)) then - begin - if VarIsStr(AValue2) then - CheckEquals(VarToStr(AValue2), VarToStr(actValue2), 'Conditional format parameter 2 mismatch') - else - CheckEquals(Double(AValue2), Double(actValue2), 'Conditional format parameter 2 mismatch'); - end else - CheckEquals(true, VarIsEmpty(actValue2), 'Omitted parameter 2 detected.'); + // Check 1st parameter + actValue1 := TsCFCellRule(cf.Rules[0]).Operand1; + if not VarIsEmpty(AValue1) then + begin + if VarIsStr(AValue1) then + CheckEquals(VarToStr(AValue1), VarToStr(actValue1), 'Conditional format parameter 1 mismatch') + else if VarIsNumeric(AValue1) then + CheckEquals(Double(AValue1), Double(actValue1), 'Conditional format parameter 1 mismatch') + else + raise Exception.Create('Unknown data type in variant'); + end else + CheckEquals(true, VarIsEmpty(actValue1), 'Omitted parameter 1 detected.'); + + // Check 2nd parameter + actValue2 := TsCFCellRule(cf.Rules[0]).Operand2; + if not (VarIsEmpty(AValue2) or VarIsNull(AValue2)) then + begin + if VarIsStr(AValue2) then + CheckEquals(VarToStr(AValue2), VarToStr(actValue2), 'Conditional format parameter 2 mismatch') + else + CheckEquals(Double(AValue2), Double(actValue2), 'Conditional format parameter 2 mismatch'); + end else + CheckEquals(true, VarIsEmpty(actValue2), 'Omitted parameter 2 detected.'); + + // Check format + + // - Index + actFmtIdx := TsCFCellRule(cf.Rules[0]).FormatIndex; + CheckEquals(sollFmtIdx, actFmtIdx, 'Conditional format index mismatch'); + + actFmt := workbook.GetCellFormat(actFmtIdx); + + // - formatting fields + CheckEquals(integer(ACellFormat.UsedFormattingFields), integer(actFmt.UsedFormattingFields), 'Conditional formatting fields mismatch'); + + // - background + if (uffBackground in ACellFormat.UsedFormattingFields) then + begin + CheckEquals(ACellFormat.Background.BgColor, actFmt.Background.BgColor, 'Conditional format background color mismatch'); + CheckEquals(ACellFormat.Background.FgColor, actFmt.Background.FgColor, 'Conditional format foreground color mismatch'); + CheckEquals( + GetEnumName(TypeInfo(TsFillStyle), integer(ACellFormat.Background.Style)), + GetEnumName(TypeInfo(TsFillStyle), integer(actFmt.Background.Style)), + 'Conditional format style mismatch' + ); + end; + + // - borders + if (uffBorder in ACellFormat.UsedFormattingFields) then + begin + CheckEquals(integer(ACellFormat.Border), integer(actFmt.Border), 'Conditional format border elements mismatch.'); + CheckEquals( + GetEnumName(TypeInfo(TsLineStyle), integer(ACellFormat.BorderStyles[cbNorth].LineStyle)), + GetEnumName(TypeInfo(TsLineStyle), integer(actFmt.BorderStyles[cbNorth].LineStyle)), + 'Conditional format northern border line style mismatch.' + ); + CheckEquals( + GetEnumName(TypeInfo(TsLineStyle), integer(ACellFormat.BorderStyles[cbEast].LineStyle)), + GetEnumName(TypeInfo(TsLineStyle), integer(actFmt.BorderStyles[cbEast].LineStyle)), + 'Conditional format eastern border line style mismatch.' + ); + CheckEquals( + GetEnumName(TypeInfo(TsLineStyle), integer(ACellFormat.BorderStyles[cbSouth].LineStyle)), + GetEnumName(TypeInfo(TsLineStyle), integer(actFmt.BorderStyles[cbSouth].LineStyle)), + 'Conditional format southern border line style mismatch.' + ); + CheckEquals( + GetEnumName(TypeInfo(TsLineStyle), integer(ACellFormat.BorderStyles[cbWest].LineStyle)), + GetEnumName(TypeInfo(TsLineStyle), integer(actFmt.BorderStyles[cbWest].LineStyle)), + 'Conditional format western border line style mismatch.' + ); + CheckEquals( + integer(ACellFormat.BorderStyles[cbNorth].Color), + integer(actFmt.BorderStyles[cbNorth].Color), + 'Conditional format northern border color mismatch.' + ); + CheckEquals( + integer(ACellFormat.BorderStyles[cbEast].Color), + integer(actFmt.BorderStyles[cbEast].Color), + 'Conditional format eastern border color mismatch.' + ); + CheckEquals( + integer(ACellFormat.BorderStyles[cbSouth].Color), + integer(actFmt.BorderStyles[cbSouth].Color), + 'Conditional format southern border color mismatch.' + ); + CheckEquals( + integer(ACellFormat.BorderStyles[cbWest].Color), + integer(actFmt.BorderStyles[cbWest].Color), + 'Conditional format western border color mismatch.' + ); + end; + + // - fonts // not working for xlsx + if (uffFont in ACellFormat.UsedFormattingFields) then + begin + if AFileFormat <> sfOOXML then + begin + end; + end; + + // - Number format // not yet implemented for xlsx + if (uffNumberFormat in ACEllFormat.UsedFormattingFields) then + begin + if AFileFormat <> sfOOXML then + begin + end; + end; + end; finally workbook.Free; @@ -227,134 +314,256 @@ begin end; end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_Equal_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Equal_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcEqual, 5); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcEqual, 5, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_NotEqual_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotEqual_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcNotEqual, 5); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcNotEqual, 5, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_GreaterThan_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_GreaterThan_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcGreaterThan, 5); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcGreaterThan, 5, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_LessThan_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_LessThan_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcLessThan, 5); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcLessThan, 5, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_GreaterEqual_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_GreaterEqual_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcGreaterEqual, 5); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcGreaterEqual, 5, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_LessEqual_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_LessEqual_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcLessEqual, 5); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcLessEqual, 5, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_Between_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Between_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcBetween, 3, 7); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcBetween, 3, 7, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_NotBetween_Const; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotBetween_Const; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcNotBetween, 3, 7); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcNotBetween, 3, 7, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_AboveAverage; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_AboveAverage; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcAboveAverage); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcAboveAverage, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_BelowAverage; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BelowAverage; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcBelowAverage); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcBelowAverage, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_AboveEqualAverage; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_AboveEqualAverage; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcAboveEqualAverage); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcAboveEqualAverage, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_BelowEqualAverage; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BelowEqualAverage; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcBelowEqualAverage); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcBelowEqualAverage, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_AboveAverage_2StdDev; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_AboveAverage_2StdDev; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcAboveAverage, 2.0); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcAboveAverage, 2.0, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_BelowAverage_2StdDev; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BelowAverage_2StdDev; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcBelowAverage, 2.0); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcBelowAverage, 2.0, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_Top3; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Top3; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcTop, 3); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcTop, 3, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_Top10Percent; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Top10Percent; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcTopPercent, 10); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcTopPercent, 10, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_Bottom3; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Bottom3; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcBottom, 3); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcBottom, 3, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_Bottom10Percent; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Bottom10Percent; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcBottomPercent, 10); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcBottomPercent, 10, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_BeginsWith; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BeginsWith; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcBeginsWith, 'ab'); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcBeginsWith, 'ab', fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_EndsWith; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_EndsWith; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcEndsWith, 'kl'); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcEndsWith, 'kl', fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_Contains; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Contains; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcEndsWith, 'b'); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcEndsWith, 'b', fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_NotContains; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotContains; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcEndsWith, 'b'); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcEndsWith, 'b', fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_Unique; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Unique; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcUnique); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcUnique, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_NUMBER_XLSX_Duplicate; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Duplicate; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcDuplicate); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcDuplicate, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_ContainsErrors; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_ContainsErrors; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcContainsErrors); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcContainsErrors, fmt); end; -procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Number_XLSX_NotContainsErrors; +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotContainsErrors; +var + fmt: TsCellFormat; begin - TestWriteRead_CF_Number(sfOOXML, cfcNotContainsErrors); + InitFormatRecord(fmt); + fmt.SetBackgroundColor(scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcNotContainsErrors, fmt); +end; + +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Background; +var + fmt: TsCellFormat; +begin + InitFormatRecord(fmt); + fmt.SetBackground(fsHatchDiag, scYellow, scRed); + TestWriteRead_CF_CellFmt(sfOOXML, cfcEqual, 5, fmt); +end; + +procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Border; +var + fmt: TsCellFormat; +begin + InitFormatRecord(fmt); + fmt.SetBorders([cbNorth, cbEast, cbSouth, cbWest], scBlue, lsDotted); + TestWriteRead_CF_CellFmt(sfOOXML, cfcEqual, 5, fmt); end; initialization