You've already forked lazarus-ccr
fpspreadsheet: Add cell border test case for BIFF2 --> pass. Update wiki
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2967 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -29,6 +29,7 @@ var
|
|||||||
SollDateTimeFormatStrings: array[0..9] of String;
|
SollDateTimeFormatStrings: array[0..9] of String;
|
||||||
|
|
||||||
SollColWidths: array[0..1] of Single;
|
SollColWidths: array[0..1] of Single;
|
||||||
|
SollBorders: array[0..15] of TsCellBorders;
|
||||||
|
|
||||||
procedure InitSollFmtData;
|
procedure InitSollFmtData;
|
||||||
|
|
||||||
@ -41,28 +42,40 @@ type
|
|||||||
// Set up expected values:
|
// Set up expected values:
|
||||||
procedure SetUp; override;
|
procedure SetUp; override;
|
||||||
procedure TearDown; override;
|
procedure TearDown; override;
|
||||||
|
procedure TestWriteReadBorder(AFormat: TsSpreadsheetFormat);
|
||||||
procedure TestWriteReadColWidths(AFormat: TsSpreadsheetFormat);
|
procedure TestWriteReadColWidths(AFormat: TsSpreadsheetFormat);
|
||||||
published
|
published
|
||||||
// Writes out numbers & reads back.
|
// Writes out numbers & reads back.
|
||||||
// If previous read tests are ok, this effectively tests writing.
|
// If previous read tests are ok, this effectively tests writing.
|
||||||
|
|
||||||
|
{ BIFF2 Tests }
|
||||||
|
procedure TestWriteReadBIFF2_ColWidths;
|
||||||
|
procedure TestWriteReadBIFF2_Border;
|
||||||
|
|
||||||
|
{ BIFF8 Tests }
|
||||||
procedure TestWriteReadNumberFormats;
|
procedure TestWriteReadNumberFormats;
|
||||||
// Repeat with date/times
|
// Repeat with date/times
|
||||||
procedure TestWriteReadDateTimeFormats;
|
procedure TestWriteReadDateTimeFormats;
|
||||||
// Test column width
|
// Test column width
|
||||||
procedure TestWriteReadBIFF2_ColWidths;
|
|
||||||
procedure TestWriteReadBIFF8_ColWidths;
|
procedure TestWriteReadBIFF8_ColWidths;
|
||||||
// Test word wrapping
|
// Test word wrapping
|
||||||
procedure TestWriteReadWordWrap;
|
procedure TestWriteReadWordWrap;
|
||||||
// Test alignments
|
// Test alignments
|
||||||
procedure TestWriteReadAlignments;
|
procedure TestWriteReadAlignments;
|
||||||
|
// Test border
|
||||||
|
procedure TestWriteReadBIFF8_Border;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
TypInfo;
|
||||||
|
|
||||||
const
|
const
|
||||||
FmtNumbersSheet = 'NumbersFormat'; //let's distinguish it from the regular numbers sheet
|
FmtNumbersSheet = 'NumbersFormat'; //let's distinguish it from the regular numbers sheet
|
||||||
FmtDateTimesSheet = 'DateTimesFormat';
|
FmtDateTimesSheet = 'DateTimesFormat';
|
||||||
ColWidthSheet = 'ColWidths';
|
ColWidthSheet = 'ColWidths';
|
||||||
|
BordersSheet = 'CellBorders';
|
||||||
|
|
||||||
// Initialize array with variables that represent the values
|
// Initialize array with variables that represent the values
|
||||||
// we expect to be in the test spreadsheet files.
|
// we expect to be in the test spreadsheet files.
|
||||||
@ -140,6 +153,24 @@ begin
|
|||||||
// Column width
|
// Column width
|
||||||
SollColWidths[0] := 20; // characters based on width of "0"
|
SollColWidths[0] := 20; // characters based on width of "0"
|
||||||
SollColWidths[1] := 40;
|
SollColWidths[1] := 40;
|
||||||
|
|
||||||
|
// Cell borders
|
||||||
|
SollBorders[0] := [];
|
||||||
|
SollBorders[1] := [cbEast];
|
||||||
|
SollBorders[2] := [cbSouth];
|
||||||
|
SollBorders[3] := [cbWest];
|
||||||
|
SollBorders[4] := [cbNorth];
|
||||||
|
SollBorders[5] := [cbEast, cbSouth];
|
||||||
|
SollBorders[6] := [cbEast, cbWest];
|
||||||
|
SollBorders[7] := [cbEast, cbNorth];
|
||||||
|
SollBorders[8] := [cbSouth, cbWest];
|
||||||
|
SollBorders[9] := [cbSouth, cbNorth];
|
||||||
|
SollBorders[10] := [cbWest, cbNorth];
|
||||||
|
SollBorders[11] := [cbEast, cbSouth, cbWest];
|
||||||
|
SollBorders[12] := [cbEast, cbSouth, cbNorth];
|
||||||
|
SollBorders[13] := [cbSouth, cbWest, cbNorth];
|
||||||
|
SollBorders[14] := [cbWest, cbNorth, cbEast];
|
||||||
|
SollBorders[15] := [cbEast, cbSouth, cbWest, cbNorth];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSpreadWriteReadFormatTests }
|
{ TSpreadWriteReadFormatTests }
|
||||||
@ -237,6 +268,70 @@ begin
|
|||||||
DeleteFile(TempFile);
|
DeleteFile(TempFile);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBorder(AFormat: TsSpreadsheetFormat);
|
||||||
|
const
|
||||||
|
row = 0;
|
||||||
|
var
|
||||||
|
MyWorksheet: TsWorksheet;
|
||||||
|
MyWorkbook: TsWorkbook;
|
||||||
|
MyCell: PCell;
|
||||||
|
ActualColWidth: Single;
|
||||||
|
col: Integer;
|
||||||
|
expected: String;
|
||||||
|
current: String;
|
||||||
|
TempFile: string; //write xls/xml to this file and read back from it
|
||||||
|
begin
|
||||||
|
TempFile:=GetTempFileName;
|
||||||
|
{// Not needed: use workbook.writetofile with overwrite=true
|
||||||
|
if fileexists(TempFile) then
|
||||||
|
DeleteFile(TempFile);
|
||||||
|
}
|
||||||
|
// Write out all test values
|
||||||
|
MyWorkbook := TsWorkbook.Create;
|
||||||
|
MyWorkSheet:= MyWorkBook.AddWorksheet(BordersSheet);
|
||||||
|
for col := Low(SollBorders) to High(SollBorders) do begin
|
||||||
|
MyWorksheet.WriteUsedFormatting(row, col, [uffBorder]);
|
||||||
|
MyCell := MyWorksheet.GetCell(row, col);
|
||||||
|
Include(MyCell^.UsedFormattingFields, uffBorder);
|
||||||
|
MyCell^.Border := SollBorders[col];
|
||||||
|
end;
|
||||||
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
||||||
|
MyWorkbook.Free;
|
||||||
|
|
||||||
|
// Open the spreadsheet
|
||||||
|
MyWorkbook := TsWorkbook.Create;
|
||||||
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
||||||
|
if AFormat = sfExcel2 then
|
||||||
|
MyWorksheet := MyWorkbook.GetFirstWorksheet
|
||||||
|
else
|
||||||
|
MyWorksheet := GetWorksheetByName(MyWorkBook, BordersSheet);
|
||||||
|
if MyWorksheet=nil then
|
||||||
|
fail('Error in test code. Failed to get named worksheet');
|
||||||
|
for col := 0 to MyWorksheet.GetLastColNumber do begin
|
||||||
|
MyCell := MyWorksheet.FindCell(row, col);
|
||||||
|
if MyCell = nil then
|
||||||
|
fail('Error in test code. Failed to get cell');
|
||||||
|
current := GetEnumName(TypeInfo(TsCellBorders), byte(MyCell^.Border));
|
||||||
|
expected := GetEnumName(TypeInfo(TsCellBorders), byte(SollBorders[col]));
|
||||||
|
CheckEquals(current, expected,
|
||||||
|
'Test saved border mismatch, cell ' + CellNotation(MyWorksheet, row, col));
|
||||||
|
end;
|
||||||
|
// Finalization
|
||||||
|
MyWorkbook.Free;
|
||||||
|
|
||||||
|
DeleteFile(TempFile);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF2_Border;
|
||||||
|
begin
|
||||||
|
TestWriteReadBorder(sfExcel2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF8_Border;
|
||||||
|
begin
|
||||||
|
TestWriteReadBorder(sfExcel8);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadFormatTests.TestWriteReadColWidths(AFormat: TsSpreadsheetFormat);
|
procedure TSpreadWriteReadFormatTests.TestWriteReadColWidths(AFormat: TsSpreadsheetFormat);
|
||||||
var
|
var
|
||||||
MyWorksheet: TsWorksheet;
|
MyWorksheet: TsWorksheet;
|
||||||
|
Reference in New Issue
Block a user