
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7588 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2136 lines
64 KiB
ObjectPascal
2136 lines
64 KiB
ObjectPascal
{ Tests for conditional formatting
|
|
These unit tests write out to and read back from files.
|
|
}
|
|
|
|
unit conditionalformattests;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$modeswitch advancedrecords}
|
|
|
|
interface
|
|
|
|
uses
|
|
// Not using Lazarus package as the user may be working with multiple versions
|
|
// Instead, add .. to unit search path
|
|
Classes, SysUtils, fpcunit, testutils, testregistry, testsutility,
|
|
Math, Variants,
|
|
fpsTypes, fpsUtils, fpsAllFormats, fpSpreadsheet, fpsConditionalFormat;
|
|
|
|
type
|
|
{ TSpreadWriteReadCFTests }
|
|
//Write to xls/xml file and read back
|
|
TSpreadWriteReadCFTests = class(TTestCase)
|
|
private
|
|
protected
|
|
// Set up expected values:
|
|
procedure SetUp; override;
|
|
procedure TearDown; override;
|
|
|
|
// Test conditional cell format
|
|
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);
|
|
|
|
// Test color range format
|
|
procedure TestWriteRead_CF_ColorRange(AFileFormat: TsSpreadsheetFormat;
|
|
ThreeColors: Boolean; FullSyntax: Boolean);
|
|
|
|
// Test data bars format
|
|
procedure TestWriteRead_CF_DataBars(AFileFormat: TsSpreadsheetFormat;
|
|
FullSyntax: Boolean);
|
|
|
|
// Test icon set format
|
|
procedure TestWriteRead_CF_IconSet(AFileFormat: TsSpreadsheetFormat;
|
|
AIconSet: TsCFIconSet; FullSyntax: Boolean);
|
|
|
|
published
|
|
{ Excel XLSX }
|
|
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_Yesterday;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_Today;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_Tomorrow;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_Last7Days;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_LastWeek;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_ThisWeek;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_NextWeek;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_LastMonth;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_ThisMonth;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_NextMonth;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_LastYear;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_ThisYear;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_NextYear;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_Expression;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_Background;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_Border4;
|
|
procedure TestWriteRead_CF_CellFmt_XLSX_Border2;
|
|
|
|
procedure TestWriteRead_CF_ColorRange_XLSX_3C_Full;
|
|
procedure TestWriteRead_CF_ColorRange_XLSX_2C_Full;
|
|
procedure TestWriteRead_CF_ColorRange_XLSX_3C_Simple;
|
|
procedure TestWriteRead_CF_ColorRange_XLSX_2C_Simple;
|
|
|
|
procedure TestWriteRead_CF_Databars_XLSX_Full;
|
|
procedure TestWriteRead_CF_Databars_XLSX_Simple;
|
|
|
|
procedure TestWriteRead_CF_Iconset_XLSX_Full_5Quarters;
|
|
procedure TestWriteRead_CF_IconSet_XLSX_Simple_3Arrows;
|
|
procedure TestWriteRead_CF_IconSet_XLSX_Simple_5Rating;
|
|
|
|
{ Excel XML }
|
|
procedure TestWriteRead_CF_CellFmt_XML_Equal_Const;
|
|
procedure TestWriteRead_CF_CellFmt_XML_NotEqual_Const;
|
|
procedure TestWriteRead_CF_CellFmt_XML_GreaterThan_Const;
|
|
procedure TestWriteRead_CF_CellFmt_XML_LessThan_Const;
|
|
procedure TestWriteRead_CF_CellFmt_XML_GreaterEqual_Const;
|
|
procedure TestWriteRead_CF_CellFmt_XML_LessEqual_Const;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Between_Const;
|
|
procedure TestWriteRead_CF_CellFmt_XML_NotBetween_Const;
|
|
|
|
procedure TestWriteRead_CF_CellFmt_XML_AboveAverage;
|
|
procedure TestWriteRead_CF_CellFmt_XML_BelowAverage;
|
|
procedure TestWriteRead_CF_CellFmt_XML_AboveEqualAverage;
|
|
procedure TestWriteRead_CF_CellFmt_XML_BelowEqualAverage;
|
|
|
|
procedure TestWriteRead_CF_CellFmt_XML_BeginsWith;
|
|
procedure TestWriteRead_CF_CellFmt_XML_EndsWith;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Contains;
|
|
procedure TestWriteRead_CF_CellFmt_XML_NotContains;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Unique;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Duplicate;
|
|
procedure TestWriteRead_CF_CellFmt_XML_ContainsErrors;
|
|
procedure TestWriteRead_CF_CellFmt_XML_NotContainsErrors;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Yesterday;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Today;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Tomorrow;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Last7Days;
|
|
procedure TestWriteRead_CF_CellFmt_XML_LastWeek;
|
|
procedure TestWriteRead_CF_CellFmt_XML_ThisWeek;
|
|
procedure TestWriteRead_CF_CellFmt_XML_NextWeek;
|
|
procedure TestWriteRead_CF_CellFmt_XML_LastMonth;
|
|
procedure TestWriteRead_CF_CellFmt_XML_ThisMonth;
|
|
procedure TestWriteRead_CF_CellFmt_XML_NextMonth;
|
|
procedure TestWriteRead_CF_CellFmt_XML_LastYear;
|
|
procedure TestWriteRead_CF_CellFmt_XML_ThisYear;
|
|
procedure TestWriteRead_CF_CellFmt_XML_NextYear;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Expression;
|
|
|
|
procedure TestWriteRead_CF_CellFmt_XML_Background;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Border4;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Border2;
|
|
procedure TestWriteRead_CF_CellFmt_XML_Font;
|
|
|
|
{ OpenDocument ODS }
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Equal_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_NotEqual_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_GreaterThan_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_LessThan_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_GreaterEqual_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_LessEqual_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Between_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_NotBetween_Const;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_AboveAverage;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_BelowAverage;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_AboveEqualAverage;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_BelowEqualAverage;
|
|
// procedure TestWriteRead_CF_CellFmt_ODS_AboveAverage_2StdDev; // not supported by ODS
|
|
// procedure TestWriteRead_CF_CellFmt_ODS_BelowAverage_2StdDev;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Top3;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Top10Percent;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Bottom3;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Bottom10Percent;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_BeginsWith;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_EndsWith;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Contains;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_NotContains;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Unique;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Duplicate;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_ContainsErrors;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_NotContainsErrors;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Yesterday;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Today;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Tomorrow;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Last7Days;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_LastWeek;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_ThisWeek;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_NextWeek;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_LastMonth;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_ThisMonth;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_NextMonth;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_LastYear;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_ThisYear;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_NextYear;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Expression;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Background;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Border4;
|
|
procedure TestWriteRead_CF_CellFmt_ODS_Border2;
|
|
|
|
procedure TestWriteRead_CF_ColorRange_ODS_3C_Full;
|
|
procedure TestWriteRead_CF_ColorRange_ODS_2C_Full;
|
|
procedure TestWriteRead_CF_ColorRange_ODS_3C_Simple;
|
|
procedure TestWriteRead_CF_ColorRange_ODS_2C_Simple;
|
|
|
|
procedure TestWriteRead_CF_Databars_ODS_Full;
|
|
procedure TestWriteRead_CF_Databars_ODS_Simple;
|
|
|
|
procedure TestWriteRead_CF_Iconset_ODS_Full_5Quarters;
|
|
procedure TestWriteRead_CF_IconSet_ODS_Simple_3Arrows;
|
|
procedure TestWriteRead_CF_IconSet_ODS_Simple_5Rating;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
TypInfo;
|
|
|
|
|
|
{ TSpreadWriteReadCFTests }
|
|
|
|
procedure TSpreadWriteReadCFTests.SetUp;
|
|
begin
|
|
inherited SetUp;
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TearDown;
|
|
begin
|
|
inherited TearDown;
|
|
end;
|
|
|
|
|
|
{-------------------------------------------------------------------------------
|
|
Conditional cell format tests
|
|
-------------------------------------------------------------------------------}
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt(
|
|
AFileFormat: TsSpreadsheetFormat; ACondition: TsCFCondition; ACellFormat: TsCellFormat);
|
|
var
|
|
dummy: variant;
|
|
begin
|
|
VarClear(dummy);
|
|
TestWriteRead_CF_CellFmt(AFileFormat, ACondition, dummy, dummy, ACellFormat);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt(
|
|
AFileFormat: TsSpreadsheetFormat; ACondition: TsCFCondition;
|
|
AValue1: Variant; ACellFormat: TsCellFormat);
|
|
var
|
|
dummy: Variant;
|
|
begin
|
|
VarClear(dummy);
|
|
TestWriteRead_CF_CellFmt(AFileFormat, ACondition, AValue1, dummy, ACellFormat);
|
|
end;
|
|
|
|
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');
|
|
FONT_STYLE = [fssBold, fssItalic];
|
|
FONT_COLOR = scGreen;
|
|
NUMBER_FORMAT = '0.000';
|
|
var
|
|
worksheet: TsWorksheet;
|
|
workbook: TsWorkbook;
|
|
row, col: Cardinal;
|
|
tempFile: string;
|
|
sollFmtIdx: Integer;
|
|
sollRange: TsCellRange;
|
|
sollFont: TsFont = nil;
|
|
actFMT: TsCellFormat;
|
|
actFmtIdx: Integer;
|
|
actRange: TsCellRange;
|
|
actCondition: TsCFCondition;
|
|
actFont: TsFont;
|
|
actValue1, actValue2: Variant;
|
|
cf: TsConditionalFormat;
|
|
begin
|
|
// Write out all test values
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.Options := [boAutoCalc];
|
|
worksheet:= workBook.AddWorksheet(SHEET_NAME);
|
|
|
|
row := 0;
|
|
for Col := 0 to High(TEXTS) do
|
|
worksheet.WriteText(row, col, TEXTS[col]);
|
|
|
|
row := 1;
|
|
for col := 0 to 9 do
|
|
worksheet.WriteNumber(row, col, col+1);
|
|
worksheet.WriteFormula(row, col, '=1/0');
|
|
|
|
row := 2;
|
|
for col := 0 to 20 do
|
|
worksheet.WriteDateTime(row, col, Date() - 10 + col);
|
|
|
|
// Write format used by the cells detected by conditional formatting
|
|
if ACellFormat.FontIndex = MaxInt then
|
|
begin
|
|
ACellFormat.SetFont(workbook.AddFont(workbook.GetDefaultFont.FontName, workbook.GetDefaultFont.Size, FONT_STYLE, FONT_COLOR));
|
|
sollFont := workbook.CloneFont(ACellFormat.FontIndex);
|
|
end;
|
|
if ACellFormat.NumberFormatIndex = MaxInt then
|
|
ACellFormat.SetNumberFormat(workbook.AddNumberFormat(NUMBER_FORMAT));
|
|
sollFmtIdx := workbook.AddCellFormat(ACellFormat);
|
|
|
|
// Write instruction for conditional formatting
|
|
sollRange := Range(0, 0, 2, 10);
|
|
if VarIsEmpty(AValue1) and VarIsEmpty(AValue2) then
|
|
worksheet.WriteConditionalCellFormat(sollRange, ACondition, sollFmtIdx)
|
|
else
|
|
if VarIsEmpty(AValue2) then
|
|
worksheet.WriteConditionalCellFormat(sollRange, ACondition, AValue1, sollFmtIdx)
|
|
else
|
|
worksheet.WriteConditionalCellFormat(sollRange, ACondition, AValue1, AValue2, sollFmtIdx);
|
|
|
|
// Save to file
|
|
tempFile := NewTempFile;
|
|
workBook.WriteToFile(tempFile, AFileFormat, true);
|
|
finally
|
|
workbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.ReadFromFile(TempFile, AFileFormat);
|
|
worksheet := GetWorksheetByName(workBook, SHEET_NAME);
|
|
|
|
if worksheet=nil then
|
|
fail('Error in test code. Failed to get named worksheet');
|
|
|
|
// Check count of conditional formats
|
|
CheckEquals(1, workbook.GetNumConditionalFormats, 'ConditionalFormat count mismatch.');
|
|
|
|
// Read conditional format
|
|
cf := Workbook.GetConditionalFormat(0);
|
|
|
|
//Check range
|
|
actRange := cf.CellRange;
|
|
CheckEquals(sollRange.Row1, actRange.Row1, 'Conditional format range mismatch (Row1)');
|
|
checkEquals(sollRange.Col1, actRange.Col1, 'Conditional format range mismatch (Col1)');
|
|
CheckEquals(sollRange.Row2, actRange.Row2, 'Conditional format range mismatch (Row2)');
|
|
checkEquals(sollRange.Col2, actRange.Col2, 'Conditional format range mismatch (Col2)');
|
|
|
|
// Check rules count
|
|
CheckEquals(1, cf.RulesCount, 'Conditional format rules count mismatch');
|
|
|
|
// Check rules class
|
|
CheckEquals(TsCFCellRule, cf.Rules[0].ClassType, 'Conditional format rule class mismatch');
|
|
|
|
if cf.Rules[0] is TsCFCellRule then
|
|
begin
|
|
// 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
|
|
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
|
|
actFont := workbook.GetFont(actFmt.FontIndex);
|
|
CheckEquals(
|
|
sollFont.FontName,
|
|
actFont.Fontname,
|
|
'Conditional format font name mismatch'
|
|
);
|
|
CheckEquals(
|
|
sollFont.Size,
|
|
actFont.Size,
|
|
'Conditional format font size mismatch'
|
|
);
|
|
CheckEquals(
|
|
Integer(sollFont.Style),
|
|
Integer(actFont.Style),
|
|
'Conditional format font style mismatch'
|
|
);
|
|
CheckEquals(
|
|
Integer(sollFont.Color),
|
|
Integer(actFont.Color),
|
|
'Conditional format font color mismatch'
|
|
);
|
|
end;
|
|
|
|
// - Number format // not yet implemented for xlsx
|
|
if (uffNumberFormat in ACellFormat.UsedFormattingFields) then
|
|
begin
|
|
CheckEquals(
|
|
NUMBER_FORMAT,
|
|
workbook.GetNumberFormat(actFmt.NumberFormatIndex).NumFormatStr,
|
|
'Conditional number format mismatch'
|
|
);
|
|
end;
|
|
end;
|
|
|
|
finally
|
|
workbook.Free;
|
|
sollFont.Free;
|
|
DeleteFile(tempFile);
|
|
end;
|
|
end;
|
|
|
|
|
|
{ Excel XLSX }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Equal_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcNotEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_GreaterThan_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcGreaterThan, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_LessThan_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcLessThan, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_GreaterEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcGreaterEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_LessEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcLessEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Between_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcBetween, 3, 7, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotBetween_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcNotBetween, 3, 7, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_AboveAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcAboveAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BelowAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcBelowAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_AboveEqualAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcAboveEqualAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BelowEqualAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcBelowEqualAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_AboveAverage_2StdDev;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcAboveAverage, 2.0, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BelowAverage_2StdDev;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcBelowAverage, 2.0, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Top3;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcTop, 3, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Top10Percent;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcTopPercent, 10, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Bottom3;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcBottom, 3, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Bottom10Percent;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcBottomPercent, 10, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_BeginsWith;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcBeginsWith, 'ab', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_EndsWith;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcEndsWith, 'kl', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Contains;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcEndsWith, 'b', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotContains;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcEndsWith, 'b', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Unique;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcUnique, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Duplicate;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcDuplicate, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_ContainsErrors;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcContainsErrors, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NotContainsErrors;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcNotContainsErrors, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Yesterday;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcYesterday, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Today;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcToday, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Tomorrow;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcTomorrow, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Last7Days;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcLast7Days, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_LastWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcLastWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_ThisWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcThisWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NextWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcNextWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_LastMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcLastMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_ThisMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcThisMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NextMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcNextMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_LastYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcLastYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_ThisYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcThisYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_NextYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcNextYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Expression;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcExpression, 'ISNUMBER($A$1)', 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_Border4;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBorders([cbNorth, cbEast, cbSouth, cbWest], scBlue, lsDotted);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XLSX_Border2;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBorders([cbNorth,cbSouth], scBlue, lsDashed);
|
|
TestWriteRead_CF_CellFmt(sfOOXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
|
|
{ Excel XML }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Equal_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_NotEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcNotEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_GreaterThan_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcGreaterThan, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_LessThan_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcLessThan, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_GreaterEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcGreaterEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_LessEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcLessEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Between_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcBetween, 3, 7, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_NotBetween_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcNotBetween, 3, 7, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_AboveAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcAboveAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_BelowAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcBelowAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_AboveEqualAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcAboveEqualAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_BelowEqualAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcBelowEqualAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_BeginsWith;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcBeginsWith, 'ab', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_EndsWith;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEndsWith, 'kl', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Contains;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEndsWith, 'b', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_NotContains;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEndsWith, 'b', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Unique;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcUnique, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Duplicate;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcDuplicate, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_ContainsErrors;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcContainsErrors, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_NotContainsErrors;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcNotContainsErrors, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Yesterday;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcYesterday, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Today;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcToday, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Tomorrow;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcTomorrow, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Last7Days;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcLast7Days, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_LastWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcLastWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_ThisWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcThisWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_NextWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcNextWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_LastMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcLastMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_ThisMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcThisMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_NextMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcNextMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_LastYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcLastYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_ThisYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcThisYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_NextYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcNextYear, fmt);
|
|
end;
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Expression;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcExpression, 'ISNUMBER($A$1)', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Background;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackground(fsHatchDiag, scYellow, scRed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Border4;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBorders([cbNorth, cbEast, cbSouth, cbWest], scBlue, lsDotted);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Border2;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBorders([cbNorth,cbSouth], scBlue, lsDashed);
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_XML_Font;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.FontIndex := MaxInt; // Indicator for the test routine to create a predefined font
|
|
TestWriteRead_CF_CellFmt(sfExcelXML, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
|
|
{ OpenDocument ODS }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Equal_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_NotEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcNotEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_GreaterThan_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcGreaterThan, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_LessThan_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcLessThan, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_GreaterEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcGreaterEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_LessEqual_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcLessEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Between_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcBetween, 3, 7, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_NotBetween_Const;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcNotBetween, 3, 7, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_AboveAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcAboveAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_BelowAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcBelowAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_AboveEqualAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcAboveEqualAverage, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_BelowEqualAverage;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcBelowEqualAverage, fmt);
|
|
end;
|
|
|
|
{ not supported by ODS
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_AboveAverage_2StdDev;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcAboveAverage, 2.0, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_BelowAverage_2StdDev;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcBelowAverage, 2.0, fmt);
|
|
end;
|
|
}
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Top3;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcTop, 3, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Top10Percent;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcTopPercent, 10, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Bottom3;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcBottom, 3, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Bottom10Percent;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcBottomPercent, 10, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_BeginsWith;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcBeginsWith, 'ab', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_EndsWith;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcEndsWith, 'kl', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Contains;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcEndsWith, 'b', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_NotContains;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcEndsWith, 'b', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Unique;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcUnique, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Duplicate;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcDuplicate, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_ContainsErrors;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcContainsErrors, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_NotContainsErrors;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcNotContainsErrors, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Yesterday;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcYesterday, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Today;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcToday, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Tomorrow;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcTomorrow, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Last7Days;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcLast7Days, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_LastWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcLastWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_ThisWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcThisWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_NextWeek;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcNextWeek, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_LastMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcLastMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_ThisMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcThisMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_NextMonth;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcNextMonth, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_LastYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcLastYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_ThisYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcThisYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_NextYear;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcNextYear, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Expression;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBackgroundColor(scRed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcExpression, 'ISNUMBER($A$1)', fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Background;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
// ODS supports only solid fill
|
|
//fmt.SetBackground(fsHatchDiag, scYellow, scRed);
|
|
fmt.SetBackground(fsSolidFill, scYellow, scYellow);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Border4;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBorders([cbNorth, cbEast, cbSouth, cbWest], scBlue, lsDotted);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_CellFmt_ODS_Border2;
|
|
var
|
|
fmt: TsCellFormat;
|
|
begin
|
|
InitFormatRecord(fmt);
|
|
fmt.SetBorders([cbNorth,cbSouth], scBlue, lsDashed);
|
|
TestWriteRead_CF_CellFmt(sfOpenDocument, cfcEqual, 5, fmt);
|
|
end;
|
|
|
|
|
|
{-------------------------------------------------------------------------------
|
|
Color range tests
|
|
--------------------------------------------------------------------------------}
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange(
|
|
AFileFormat: TsSpreadsheetFormat; ThreeColors: Boolean; FullSyntax: Boolean);
|
|
const
|
|
SHEET_NAME = 'CF';
|
|
var
|
|
worksheet: TsWorksheet;
|
|
workbook: TsWorkbook;
|
|
row, col: Cardinal;
|
|
tempFile: string;
|
|
cf: TsConditionalFormat;
|
|
rule: TsCFColorRangeRule;
|
|
sollRange: TsCellRange;
|
|
sollColor1: TsColor = scRed;
|
|
sollColor2: TsColor = scYellow;
|
|
sollColor3: TsColor = scWhite;
|
|
sollValueKind1: TsCFValueKind = vkMin;
|
|
sollValueKind2: TsCFValueKind = vkPercentile;
|
|
sollValueKind3: TsCFValueKind = vkMax;
|
|
sollValue1: Double = 0.0;
|
|
sollValue2: Double = 50.0;
|
|
sollValue3: Double = 0.0;
|
|
actRange: TsCellRange;
|
|
begin
|
|
// Write out all test values
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.Options := [boAutoCalc];
|
|
workSheet:= workBook.AddWorksheet(SHEET_NAME);
|
|
|
|
// Add test cells (numeric)
|
|
row := 0;
|
|
for Col := 0 to 9 do
|
|
worksheet.WriteNumber(row, col, col*10.0);
|
|
|
|
// Write conditional formats
|
|
sollRange := Range(0, 0, 0, 9);
|
|
if not FullSyntax then
|
|
begin
|
|
if ThreeColors then
|
|
worksheet.WriteColorrange(sollRange, sollColor1, sollColor2, sollColor3)
|
|
else
|
|
worksheet.WriteColorRange(sollRange, sollColor1, sollColor3);
|
|
end else
|
|
begin
|
|
if ThreeColors then
|
|
worksheet.WriteColorRange(sollRange,
|
|
sollColor1, sollValueKind1, sollValue1,
|
|
sollColor2, sollValueKind2, sollValue2,
|
|
sollColor3, sollValueKind3, sollValue3)
|
|
else
|
|
worksheet.WriteColorRange(sollRange,
|
|
sollColor1, sollValueKind1, sollValue1,
|
|
sollColor3, sollValueKind3, sollValue3);
|
|
end;
|
|
|
|
// Save to file
|
|
tempFile := NewTempFile;
|
|
workBook.WriteToFile(tempFile, AFileFormat, true);
|
|
finally
|
|
workbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.ReadFromFile(TempFile, AFileFormat);
|
|
worksheet := GetWorksheetByName(workBook, SHEET_NAME);
|
|
|
|
if worksheet=nil then
|
|
fail('Error in test code. Failed to get named worksheet');
|
|
|
|
// Check count of conditional formats
|
|
CheckEquals(1, workbook.GetNumConditionalFormats, 'ConditionalFormat count mismatch.');
|
|
|
|
// Read conditional format
|
|
cf := Workbook.GetConditionalFormat(0);
|
|
|
|
//Check range
|
|
actRange := cf.CellRange;
|
|
CheckEquals(sollRange.Row1, actRange.Row1, 'Conditional format range mismatch (Row1)');
|
|
checkEquals(sollRange.Col1, actRange.Col1, 'Conditional format range mismatch (Col1)');
|
|
CheckEquals(sollRange.Row2, actRange.Row2, 'Conditional format range mismatch (Row2)');
|
|
checkEquals(sollRange.Col2, actRange.Col2, 'Conditional format range mismatch (Col2)');
|
|
|
|
// Check rules count
|
|
CheckEquals(1, cf.RulesCount, 'Conditional format rules count mismatch');
|
|
|
|
// Check rules class
|
|
CheckEquals(TsCFColorRangeRule, cf.Rules[0].ClassType, 'Conditional format rule class mismatch');
|
|
|
|
// Now know that the rule is a TsCFColorRangeRule
|
|
rule := TsCFColorRangeRule(cf.Rules[0]);
|
|
|
|
// Check two-color vs three color case
|
|
CheckEquals(ThreeColors, rule.ThreeColors, 'Color range format: three color case mismatch');
|
|
|
|
// Start parameters
|
|
CheckEquals(TsColor(sollColor1), TsColor(rule.StartColor), 'Color range format: start color mismatch');
|
|
if FullSyntax then
|
|
begin
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(sollValueKind1)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.StartValueKind)),
|
|
'Color range format: start value kind mismatch.'
|
|
);
|
|
CheckEquals(sollValue1, rule.StartValue, 'Color range format: start value mismatch');
|
|
end;
|
|
|
|
// Center parameters
|
|
if ThreeColors then
|
|
begin
|
|
CheckEquals(TsColor(sollColor2), TsColor(rule.CenterColor), 'Color range format: center color mismatch');
|
|
if FullSyntax then
|
|
begin
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(sollValueKind2)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.CenterValueKind)),
|
|
'Color range format: center value kind mismatch.'
|
|
);
|
|
CheckEquals(sollValue2, rule.CenterValue, 'Color range format: center value mismatch');
|
|
end;
|
|
end;
|
|
|
|
// End parameters
|
|
CheckEquals(TsColor(sollColor3), TsColor(rule.EndColor), 'Color range format: end color mismatch');
|
|
if FullSyntax then
|
|
begin
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(sollValueKind3)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.EndValueKind)),
|
|
'Color range format: end value kind mismatch.'
|
|
);
|
|
CheckEquals(sollValue3, rule.EndValue, 'Color range format: end value mismatch');
|
|
end;
|
|
|
|
finally
|
|
workbook.Free;
|
|
DeleteFile(tempFile);
|
|
end;
|
|
end;
|
|
|
|
|
|
{ Excel XLSX }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_XLSX_3C_Full;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOOXML, true, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_XLSX_2C_Full;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOOXML, false, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_XLSX_3C_Simple;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOOXML, true, false);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_XLSX_2C_Simple;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOOXML, false, false);
|
|
end;
|
|
|
|
|
|
{ OpenDocument }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_ODS_3C_Full;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOpenDocument, true, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_ODS_2C_Full;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOpenDocument, false, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_ODS_3C_Simple;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOpenDocument, true, false);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_ColorRange_ODS_2C_Simple;
|
|
begin
|
|
TestWriteRead_CF_ColorRange(sfOpenDocument, false, false);
|
|
end;
|
|
|
|
|
|
{-------------------------------------------------------------------------------
|
|
DataBar tests
|
|
-------------------------------------------------------------------------------}
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Databars(
|
|
AFileFormat: TsSpreadsheetFormat; FullSyntax: Boolean);
|
|
const
|
|
SHEET_NAME = 'CF';
|
|
var
|
|
worksheet: TsWorksheet;
|
|
workbook: TsWorkbook;
|
|
row, col: Cardinal;
|
|
tempFile: string;
|
|
cf: TsConditionalFormat;
|
|
rule: TsCFDataBarRule;
|
|
sollRange: TsCellRange;
|
|
sollColor: TsColor = scRed;
|
|
sollValueKind1: TsCFValueKind = vkMin;
|
|
sollValueKind2: TsCFValueKind = vkMax;
|
|
sollValue1: Double = 0.0;
|
|
sollValue2: Double = 0.0;
|
|
actRange: TsCellRange;
|
|
begin
|
|
// Write out all test values
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.Options := [boAutoCalc];
|
|
workSheet:= workBook.AddWorksheet(SHEET_NAME);
|
|
|
|
// Add test cells (numeric)
|
|
row := 0;
|
|
for Col := 0 to 9 do
|
|
worksheet.WriteNumber(row, col, col*10.0);
|
|
|
|
// Write conditional formats
|
|
sollRange := Range(0, 0, 0, 9);
|
|
if FullSyntax then
|
|
worksheet.WriteDataBars(sollRange, sollColor, sollValueKind1, sollValue1, sollValueKind2, sollValue2)
|
|
else
|
|
worksheet.WriteDataBArs(sollRange, sollColor);
|
|
|
|
// Save to file
|
|
tempFile := NewTempFile;
|
|
workBook.WriteToFile(tempFile, AFileFormat, true);
|
|
finally
|
|
workbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.ReadFromFile(TempFile, AFileFormat);
|
|
worksheet := GetWorksheetByName(workBook, SHEET_NAME);
|
|
|
|
if worksheet=nil then
|
|
fail('Error in test code. Failed to get named worksheet');
|
|
|
|
// Check count of conditional formats
|
|
CheckEquals(1, workbook.GetNumConditionalFormats, 'ConditionalFormat count mismatch.');
|
|
|
|
// Read conditional format
|
|
cf := Workbook.GetConditionalFormat(0);
|
|
|
|
//Check range
|
|
actRange := cf.CellRange;
|
|
CheckEquals(sollRange.Row1, actRange.Row1, 'Conditional format range mismatch (Row1)');
|
|
checkEquals(sollRange.Col1, actRange.Col1, 'Conditional format range mismatch (Col1)');
|
|
CheckEquals(sollRange.Row2, actRange.Row2, 'Conditional format range mismatch (Row2)');
|
|
checkEquals(sollRange.Col2, actRange.Col2, 'Conditional format range mismatch (Col2)');
|
|
|
|
// Check rules count
|
|
CheckEquals(1, cf.RulesCount, 'Conditional format rules count mismatch');
|
|
|
|
// Check rules class
|
|
CheckEquals(TsCFDataBarRule, cf.Rules[0].ClassType, 'Conditional format rule class mismatch');
|
|
|
|
// Now know that the rule is a TsCFDataBarRule
|
|
rule := TsCFDataBarRule(cf.Rules[0]);
|
|
|
|
// Color of bars
|
|
CheckEquals(TsColor(sollColor), TsColor(rule.Color), 'Data bar format: bar color mismatch');
|
|
|
|
// Parameters
|
|
if FullSyntax then
|
|
begin
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(sollValueKind1)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.StartValueKind)),
|
|
'Data bar format: start value kind mismatch.'
|
|
);
|
|
if not (sollValueKind1 in [vkMin, vkMax]) then
|
|
CheckEquals(sollValue1, rule.StartValue, 'Data bar format: start value mismatch');
|
|
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(sollValueKind2)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.EndValueKind)),
|
|
'Data bar format: end value kind mismatch.'
|
|
);
|
|
if not (sollValueKind2 in [vkMin, vkMax]) then
|
|
CheckEquals(sollValue2, rule.EndValue, 'Data bar format: end value mismatch');
|
|
end;
|
|
|
|
finally
|
|
workbook.Free;
|
|
DeleteFile(tempFile);
|
|
end;
|
|
end;
|
|
|
|
|
|
{ Excel XLSX }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Databars_XLSX_Full;
|
|
begin
|
|
TestWriteRead_CF_DataBars(sfOOXML, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Databars_XLSX_Simple;
|
|
begin
|
|
TestWriteRead_CF_DataBars(sfOOXML, false);
|
|
end;
|
|
|
|
|
|
{ OpenDocument }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Databars_ODS_Full;
|
|
begin
|
|
TestwriteRead_CF_DataBars(sfOpenDocument, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Databars_ODS_Simple;
|
|
begin
|
|
TestwriteRead_CF_DataBars(sfOpenDocument, false);
|
|
end;
|
|
|
|
|
|
|
|
{-------------------------------------------------------------------------------
|
|
IconSet tests
|
|
-------------------------------------------------------------------------------}
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_IconSet(
|
|
AFileFormat: TsSpreadsheetFormat; AIconSet: TsCFIconSet; FullSyntax: Boolean);
|
|
const
|
|
SHEET_NAME = 'CF';
|
|
SOLL_VALUE_KIND_1 = vkValue;
|
|
SOLL_VALUE_KIND_2 = vkPercent;
|
|
SOLL_VALUE_KIND_3 = vkPercentile;
|
|
SOLL_VALUE_KIND_4 = vkPercent;
|
|
SOLL_VALUE_1 = 15;
|
|
SOLL_VALUE_2 = 42;
|
|
SOLL_VALUE_3 = 62;
|
|
SOLL_VALUE_4 = 85;
|
|
|
|
var
|
|
worksheet: TsWorksheet;
|
|
workbook: TsWorkbook;
|
|
row, col: Cardinal;
|
|
tempFile: string;
|
|
cf: TsConditionalFormat;
|
|
rule: TsCFIconSetRule;
|
|
sollRange: TsCellRange;
|
|
actRange: TsCellRange;
|
|
actIconSet: TsCFIconSet;
|
|
n: Integer;
|
|
begin
|
|
// Write out all test values
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.Options := [boAutoCalc];
|
|
workSheet:= workBook.AddWorksheet(SHEET_NAME);
|
|
|
|
// Add test cells (numeric)
|
|
row := 0;
|
|
for Col := 0 to 9 do
|
|
worksheet.WriteNumber(row, col, col*10.0);
|
|
|
|
// Write conditional formats
|
|
sollRange := Range(0, 0, 0, 9);
|
|
if FullSyntax then
|
|
begin
|
|
n := GetCFIconCount(AIconSet);
|
|
case n of
|
|
3: worksheet.WriteIconSet(sollRange, AIconSet, SOLL_VALUE_KIND_1, SOLL_VALUE_1, SOLL_VALUE_KIND_2, SOLL_VALUE_2);
|
|
4: worksheet.WriteIconSet(sollRange, AIconSet, SOLL_VALUE_KIND_1, SOLL_VALUE_1, SOLL_VALUE_KIND_2, SOLL_VALUE_2, SOLL_VALUE_KIND_3, SOLL_VALUE_3);
|
|
5: worksheet.WriteIconSet(sollRange, AIconSet, SOLL_VALUE_KIND_1, SOLL_VALUE_1, SOLL_VALUE_KIND_2, SOLL_VALUE_2, SOLL_VALUE_KIND_3, SOLL_VALUE_3, SOLL_VALUE_KIND_4, SOLL_VALUE_4);
|
|
end;
|
|
end else
|
|
worksheet.WriteIconSet(sollRange, AIconSet);
|
|
|
|
// Save to file
|
|
tempFile := NewTempFile;
|
|
workBook.WriteToFile(tempFile, AFileFormat, true);
|
|
finally
|
|
workbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
workbook := TsWorkbook.Create;
|
|
try
|
|
workbook.ReadFromFile(TempFile, AFileFormat);
|
|
worksheet := GetWorksheetByName(workBook, SHEET_NAME);
|
|
|
|
if worksheet=nil then
|
|
fail('Error in test code. Failed to get named worksheet');
|
|
|
|
// Check count of conditional formats
|
|
CheckEquals(1, workbook.GetNumConditionalFormats, 'ConditionalFormat count mismatch.');
|
|
|
|
// Read conditional format
|
|
cf := Workbook.GetConditionalFormat(0);
|
|
|
|
//Check range
|
|
actRange := cf.CellRange;
|
|
CheckEquals(sollRange.Row1, actRange.Row1, 'Conditional format range mismatch (Row1)');
|
|
checkEquals(sollRange.Col1, actRange.Col1, 'Conditional format range mismatch (Col1)');
|
|
CheckEquals(sollRange.Row2, actRange.Row2, 'Conditional format range mismatch (Row2)');
|
|
checkEquals(sollRange.Col2, actRange.Col2, 'Conditional format range mismatch (Col2)');
|
|
|
|
// Check rules count
|
|
CheckEquals(1, cf.RulesCount, 'Conditional format rules count mismatch');
|
|
|
|
// Check rules class
|
|
CheckEquals(TsCFIconSetRule, cf.Rules[0].ClassType, 'Conditional format rule class mismatch');
|
|
|
|
// Now know that the rule is a TsCFIconsetRule
|
|
rule := TsCFIconSetRule(cf.Rules[0]);
|
|
|
|
// Check icon set
|
|
actIconSet := rule.IconSet;
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFIconSet), Integer(AIconSet)),
|
|
GetEnumName(TypeInfo(TsCFIconSet), Integer(actIconSet)),
|
|
'IconSet format: icon set mismatch');
|
|
|
|
// Parameters
|
|
if FullSyntax then
|
|
begin
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(SOLL_VALUE_KIND_1)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.ValueKinds[0])),
|
|
'IconSet format: value kind 0 mismatch.'
|
|
);
|
|
if not (SOLL_VALUE_KIND_1 in [vkMin, vkMax]) then
|
|
CheckEquals(SOLL_VALUE_1, rule.Values[0], 'IconSet format: value 0 mismatch');
|
|
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(SOLL_VALUE_KIND_2)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.ValueKinds[1])),
|
|
'IconSet format: value kind 1 mismatch.'
|
|
);
|
|
if not (SOLL_VALUE_KIND_2 in [vkMin, vkMax]) then
|
|
CheckEquals(SOLL_VALUE_2, rule.Values[1], 'IconSet format: value 1 mismatch');
|
|
|
|
if n > 2 then
|
|
begin
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(SOLL_VALUE_KIND_3)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.ValueKinds[2])),
|
|
'IconSet format: value kind 2 mismatch.'
|
|
);
|
|
if not (SOLL_VALUE_KIND_3 in [vkMin, vkMax]) then
|
|
CheckEquals(SOLL_VALUE_3, rule.Values[2], 'IconSet format: value 2 mismatch');
|
|
end;
|
|
|
|
if n = 3 then
|
|
begin
|
|
CheckEquals(
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(SOLL_VALUE_KIND_4)),
|
|
GetEnumName(TypeInfo(TsCFValueKind), integer(rule.ValueKinds[3])),
|
|
'IconSet format: value kind 3 mismatch.'
|
|
);
|
|
if not (SOLL_VALUE_KIND_4 in [vkMin, vkMax]) then
|
|
CheckEquals(SOLL_VALUE_4, rule.Values[3], 'IconSet format: value 3 mismatch');
|
|
end;
|
|
end;
|
|
|
|
finally
|
|
workbook.Free;
|
|
DeleteFile(tempFile);
|
|
end;
|
|
end;
|
|
|
|
|
|
{ Excel XLSX }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Iconset_XLSX_Full_5Quarters;
|
|
begin
|
|
TestWriteRead_CF_IconSet(sfOOXML, is5Quarters, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_IconSet_XLSX_Simple_3Arrows;
|
|
begin
|
|
TestWriteRead_CF_IconSet(sfOOXML, is3Arrows, false);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_IconSet_XLSX_Simple_5Rating;
|
|
begin
|
|
TestWriteRead_CF_IconSet(sfOOXML, is5Rating, false);
|
|
end;
|
|
|
|
{ OpenDocument }
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_Iconset_ODS_Full_5Quarters;
|
|
begin
|
|
TestWriteRead_CF_IconSet(sfOpenDocument, is5Quarters, true);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_IconSet_ODS_Simple_3Arrows;
|
|
begin
|
|
TestWriteRead_CF_IconSet(sfOpenDocument, is3Arrows, false);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadCFTests.TestWriteRead_CF_IconSet_ODS_Simple_5Rating;
|
|
begin
|
|
TestWriteRead_CF_IconSet(sfOpenDocument, is5Rating, false);
|
|
end;
|
|
|
|
|
|
initialization
|
|
RegisterTest(TSpreadWriteReadCFTests);
|
|
|
|
end.
|
|
|