You've already forked lazarus-ccr
fpspreadsheet: Add number and datetime test cases for biff5 and biff2 (in unit formattests). Passed (the formats not supported by biff2 are omitted).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3001 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -57,6 +57,10 @@ type
|
|||||||
procedure TestWriteReadTextRotation(AFormat:TsSpreadsheetFormat);
|
procedure TestWriteReadTextRotation(AFormat:TsSpreadsheetFormat);
|
||||||
// Test word wrapping
|
// Test word wrapping
|
||||||
procedure TestWriteReadWordWrap(AFormat: TsSpreadsheetFormat);
|
procedure TestWriteReadWordWrap(AFormat: TsSpreadsheetFormat);
|
||||||
|
// Test number formats
|
||||||
|
procedure TestWriteReadNumberFormats(AFormat: TsSpreadsheetFormat);
|
||||||
|
// Repeat with date/times
|
||||||
|
procedure TestWriteReadDateTimeFormats(AFormat: TsSpreadsheetFormat);
|
||||||
|
|
||||||
published
|
published
|
||||||
// Writes out numbers & reads back.
|
// Writes out numbers & reads back.
|
||||||
@ -66,6 +70,8 @@ type
|
|||||||
procedure TestWriteReadBIFF2_Alignment;
|
procedure TestWriteReadBIFF2_Alignment;
|
||||||
procedure TestWriteReadBIFF2_Border;
|
procedure TestWriteReadBIFF2_Border;
|
||||||
procedure TestWriteReadBIFF2_ColWidths;
|
procedure TestWriteReadBIFF2_ColWidths;
|
||||||
|
procedure TestWriteReadBIFF2_DateTimeFormats;
|
||||||
|
procedure TestWriteReadBIFF2_NumberFormats;
|
||||||
// These features are not supported by Excel2 --> no test cases required!
|
// These features are not supported by Excel2 --> no test cases required!
|
||||||
// - BorderStyle
|
// - BorderStyle
|
||||||
// - TextRotation
|
// - TextRotation
|
||||||
@ -76,6 +82,8 @@ type
|
|||||||
procedure TestWriteReadBIFF5_Border;
|
procedure TestWriteReadBIFF5_Border;
|
||||||
procedure TestWriteReadBIFF5_BorderStyles;
|
procedure TestWriteReadBIFF5_BorderStyles;
|
||||||
procedure TestWriteReadBIFF5_ColWidths;
|
procedure TestWriteReadBIFF5_ColWidths;
|
||||||
|
procedure TestWriteReadBIFF5_DateTimeFormats;
|
||||||
|
procedure TestWriteReadBIFF5_NumberFormats;
|
||||||
procedure TestWriteReadBIFF5_TextRotation;
|
procedure TestWriteReadBIFF5_TextRotation;
|
||||||
procedure TestWriteReadBIFF5_WordWrap;
|
procedure TestWriteReadBIFF5_WordWrap;
|
||||||
|
|
||||||
@ -84,11 +92,10 @@ type
|
|||||||
procedure TestWriteReadBIFF8_Border;
|
procedure TestWriteReadBIFF8_Border;
|
||||||
procedure TestWriteReadBIFF8_BorderStyles;
|
procedure TestWriteReadBIFF8_BorderStyles;
|
||||||
procedure TestWriteReadBIFF8_ColWidths;
|
procedure TestWriteReadBIFF8_ColWidths;
|
||||||
|
procedure TestWriteReadBIFF8_DateTimeFormats;
|
||||||
|
procedure TestWriteReadBIFF8_NumberFormats;
|
||||||
procedure TestWriteReadBIFF8_TextRotation;
|
procedure TestWriteReadBIFF8_TextRotation;
|
||||||
procedure TestWriteReadBIFF8_WordWrap;
|
procedure TestWriteReadBIFF8_WordWrap;
|
||||||
procedure TestWriteReadNumberFormats;
|
|
||||||
// Repeat with date/times
|
|
||||||
procedure TestWriteReadDateTimeFormats;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -131,9 +138,9 @@ begin
|
|||||||
SollNumberFormats[3] := nfFixedTh; SollNumberDecimals[3] := 0;
|
SollNumberFormats[3] := nfFixedTh; SollNumberDecimals[3] := 0;
|
||||||
SollNumberFormats[4] := nfFixedTh; SollNumberDecimals[4] := 2;
|
SollNumberFormats[4] := nfFixedTh; SollNumberDecimals[4] := 2;
|
||||||
SollNumberFormats[5] := nfExp; SollNumberDecimals[5] := 2;
|
SollNumberFormats[5] := nfExp; SollNumberDecimals[5] := 2;
|
||||||
SollNumberFormats[6] := nfSci; SollNumberDecimals[6] := 1;
|
SollNumberFormats[6] := nfPercentage; SollNumberDecimals[6] := 0;
|
||||||
SollNumberFormats[7] := nfPercentage; SollNumberDecimals[7] := 0;
|
SollNumberFormats[7] := nfPercentage; SollNumberDecimals[7] := 2;
|
||||||
SollNumberFormats[8] := nfPercentage; SollNumberDecimals[8] := 2;
|
SollNumberFormats[8] := nfSci; SollNumberDecimals[8] := 1;
|
||||||
|
|
||||||
for i:=Low(SollNumbers) to High(SollNumbers) do begin
|
for i:=Low(SollNumbers) to High(SollNumbers) do begin
|
||||||
SollNumberStrings[i, 0] := FloatToStr(SollNumbers[i]);
|
SollNumberStrings[i, 0] := FloatToStr(SollNumbers[i]);
|
||||||
@ -142,9 +149,9 @@ begin
|
|||||||
SollNumberStrings[i, 3] := FormatFloat('#,##0', SollNumbers[i]);
|
SollNumberStrings[i, 3] := FormatFloat('#,##0', SollNumbers[i]);
|
||||||
SollNumberStrings[i, 4] := FormatFloat('#,##0.00', SollNumbers[i]);
|
SollNumberStrings[i, 4] := FormatFloat('#,##0.00', SollNumbers[i]);
|
||||||
SollNumberStrings[i, 5] := FormatFloat('0.00E+00', SollNumbers[i]);
|
SollNumberStrings[i, 5] := FormatFloat('0.00E+00', SollNumbers[i]);
|
||||||
SollNumberStrings[i, 6] := SciFloat(SollNumbers[i], 1);
|
SollNumberStrings[i, 6] := FormatFloat('0', SollNumbers[i]*100) + '%';
|
||||||
SollNumberStrings[i, 7] := FormatFloat('0', SollNumbers[i]*100) + '%';
|
SollNumberStrings[i, 7] := FormatFloat('0.00', SollNumbers[i]*100) + '%';
|
||||||
SollNumberStrings[i, 8] := FormatFloat('0.00', SollNumbers[i]*100) + '%';
|
SollNumberStrings[i, 8] := SciFloat(SollNumbers[i], 1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Date/time values
|
// Date/time values
|
||||||
@ -229,7 +236,7 @@ begin
|
|||||||
inherited TearDown;
|
inherited TearDown;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadFormatTests.TestWriteReadNumberFormats;
|
procedure TSpreadWriteReadFormatTests.TestWriteReadNumberFormats(AFormat: TsSpreadsheetFormat);
|
||||||
var
|
var
|
||||||
MyWorksheet: TsWorksheet;
|
MyWorksheet: TsWorksheet;
|
||||||
MyWorkbook: TsWorkbook;
|
MyWorkbook: TsWorkbook;
|
||||||
@ -249,19 +256,26 @@ begin
|
|||||||
for Col := ord(Low(SollNumberFormats)) to ord(High(SollNumberFormats)) do begin
|
for Col := ord(Low(SollNumberFormats)) to ord(High(SollNumberFormats)) do begin
|
||||||
MyWorksheet.WriteNumber(Row, Col, SollNumbers[Row], SollNumberFormats[Col], SollNumberDecimals[Col]);
|
MyWorksheet.WriteNumber(Row, Col, SollNumbers[Row], SollNumberFormats[Col], SollNumberDecimals[Col]);
|
||||||
ActualString := MyWorksheet.ReadAsUTF8Text(Row, Col);
|
ActualString := MyWorksheet.ReadAsUTF8Text(Row, Col);
|
||||||
|
if (AFormat=sfExcel2) and (SollNumberFormats[Col] = nfSci) then
|
||||||
|
Continue; // BIFF2 does not support nfSci -> ignore
|
||||||
CheckEquals(SollNumberStrings[Row, Col], ActualString, 'Test unsaved string mismatch cell ' + CellNotation(MyWorksheet,Row,Col));
|
CheckEquals(SollNumberStrings[Row, Col], ActualString, 'Test unsaved string mismatch cell ' + CellNotation(MyWorksheet,Row,Col));
|
||||||
end;
|
end;
|
||||||
MyWorkBook.WriteToFile(TempFile,sfExcel8,true);
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
|
|
||||||
// Open the spreadsheet, as biff8
|
// Open the spreadsheet, as biff8
|
||||||
MyWorkbook := TsWorkbook.Create;
|
MyWorkbook := TsWorkbook.Create;
|
||||||
MyWorkbook.ReadFromFile(TempFile, sfExcel8);
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
||||||
MyWorksheet:=GetWorksheetByName(MyWorkBook, FmtNumbersSheet);
|
if AFormat = sfExcel2 then
|
||||||
|
MyWorksheet := MyWorkbook.GetFirstWorksheet
|
||||||
|
else
|
||||||
|
MyWorksheet := GetWorksheetByName(MyWorkBook, FmtNumbersSheet);
|
||||||
if MyWorksheet=nil then
|
if MyWorksheet=nil then
|
||||||
fail('Error in test code. Failed to get named worksheet');
|
fail('Error in test code. Failed to get named worksheet');
|
||||||
for Row := Low(SollNumbers) to High(SollNumbers) do
|
for Row := Low(SollNumbers) to High(SollNumbers) do
|
||||||
for Col := Low(SollNumberFormats) to High(SollNumberFormats) do begin
|
for Col := Low(SollNumberFormats) to High(SollNumberFormats) do begin
|
||||||
|
if (AFormat=sfExcel2) and (SollNumberFormats[Col] = nfSci) then
|
||||||
|
Continue; // BIFF2 does not support nfSci --> ignore
|
||||||
ActualString := MyWorkSheet.ReadAsUTF8Text(Row,Col);
|
ActualString := MyWorkSheet.ReadAsUTF8Text(Row,Col);
|
||||||
CheckEquals(SollNumberStrings[Row,Col],ActualString,'Test saved string mismatch cell '+CellNotation(MyWorkSheet,Row,Col));
|
CheckEquals(SollNumberStrings[Row,Col],ActualString,'Test saved string mismatch cell '+CellNotation(MyWorkSheet,Row,Col));
|
||||||
end;
|
end;
|
||||||
@ -272,7 +286,22 @@ begin
|
|||||||
DeleteFile(TempFile);
|
DeleteFile(TempFile);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadFormatTests.TestWriteReadDateTimeFormats;
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF2_NumberFormats;
|
||||||
|
begin
|
||||||
|
TestWriteReadNumberFormats(sfExcel2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF5_NumberFormats;
|
||||||
|
begin
|
||||||
|
TestWriteReadNumberFormats(sfExcel5);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF8_NumberFormats;
|
||||||
|
begin
|
||||||
|
TestWriteReadNumberFormats(sfExcel8);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadDateTimeFormats(AFormat: TsSpreadsheetFormat);
|
||||||
var
|
var
|
||||||
MyWorksheet: TsWorksheet;
|
MyWorksheet: TsWorksheet;
|
||||||
MyWorkbook: TsWorkbook;
|
MyWorkbook: TsWorkbook;
|
||||||
@ -286,22 +315,29 @@ begin
|
|||||||
MyWorksheet := MyWorkbook.AddWorksheet(FmtDateTimesSheet);
|
MyWorksheet := MyWorkbook.AddWorksheet(FmtDateTimesSheet);
|
||||||
for Row := Low(SollDateTimes) to High(SollDateTimes) do
|
for Row := Low(SollDateTimes) to High(SollDateTimes) do
|
||||||
for Col := Low(SollDateTimeFormats) to High(SollDateTimeFormats) do begin
|
for Col := Low(SollDateTimeFormats) to High(SollDateTimeFormats) do begin
|
||||||
|
if (AFormat = sfExcel2) and (SollDateTimeFormats[Col] in [nfFmtDateTime, nfTimeInterval]) then
|
||||||
|
Continue; // The formats nfFmtDateTime and nfTimeInterval are not supported by BIFF2
|
||||||
MyWorksheet.WriteDateTime(Row, Col, SollDateTimes[Row], SollDateTimeFormats[Col], SollDateTimeFormatStrings[Col]);
|
MyWorksheet.WriteDateTime(Row, Col, SollDateTimes[Row], SollDateTimeFormats[Col], SollDateTimeFormatStrings[Col]);
|
||||||
ActualString := MyWorksheet.ReadAsUTF8Text(Row, Col);
|
ActualString := MyWorksheet.ReadAsUTF8Text(Row, Col);
|
||||||
CheckEquals(SollDateTimeStrings[Row, Col], ActualString, 'Test unsaved string mismatch cell ' + CellNotation(MyWorksheet,Row,Col));
|
CheckEquals(SollDateTimeStrings[Row, Col], ActualString, 'Test unsaved string mismatch cell ' + CellNotation(MyWorksheet,Row,Col));
|
||||||
end;
|
end;
|
||||||
MyWorkBook.WriteToFile(TempFile,sfExcel8,true);
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
|
|
||||||
// Open the spreadsheet, as biff8
|
// Open the spreadsheet, as biff8
|
||||||
MyWorkbook := TsWorkbook.Create;
|
MyWorkbook := TsWorkbook.Create;
|
||||||
MyWorkbook.ReadFromFile(TempFile, sfExcel8);
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
||||||
MyWorksheet := GetWorksheetByName(MyWorkbook, FmtDateTimesSheet);
|
if AFormat = sfExcel2 then
|
||||||
|
MyWorksheet := MyWorkbook.GetFirstWorksheet
|
||||||
|
else
|
||||||
|
MyWorksheet := GetWorksheetByName(MyWorkbook, FmtDateTimesSheet);
|
||||||
if MyWorksheet = nil then
|
if MyWorksheet = nil then
|
||||||
fail('Error in test code. Failed to get named worksheet');
|
fail('Error in test code. Failed to get named worksheet');
|
||||||
for Row := Low(SollDateTimes) to High(SollDateTimes) do
|
for Row := Low(SollDateTimes) to High(SollDateTimes) do
|
||||||
for Col := Low(SollDateTimeFormats) to High(SollDateTimeFormats) do begin
|
for Col := Low(SollDateTimeFormats) to High(SollDateTimeFormats) do begin
|
||||||
ActualString := myWorksheet.ReadAsUTF8Text(Row,Col);
|
if (AFormat = sfExcel2) and (SollDateTimeFormats[Col] in [nfFmtDateTime, nfTimeInterval]) then
|
||||||
|
Continue; // The formats nfFmtDateTime and nfTimeInterval are not supported by BIFF2
|
||||||
|
ActualString := MyWorksheet.ReadAsUTF8Text(Row,Col);
|
||||||
CheckEquals(SollDateTimeStrings[Row, Col], ActualString, 'Test saved string mismatch cell '+CellNotation(MyWorksheet,Row,Col));
|
CheckEquals(SollDateTimeStrings[Row, Col], ActualString, 'Test saved string mismatch cell '+CellNotation(MyWorksheet,Row,Col));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -311,6 +347,21 @@ begin
|
|||||||
DeleteFile(TempFile);
|
DeleteFile(TempFile);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF2_DateTimeFormats;
|
||||||
|
begin
|
||||||
|
TestWriteReadDateTimeFormats(sfExcel2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF5_DateTimeFormats;
|
||||||
|
begin
|
||||||
|
TestWriteReadDateTimeFormats(sfExcel5);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadFormatTests.TestWriteReadBIFF8_DateTimeFormats;
|
||||||
|
begin
|
||||||
|
TestWriteReadDateTimeFormats(sfExcel8);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadFormatTests.TestWriteReadAlignment(AFormat: TsSpreadsheetFormat);
|
procedure TSpreadWriteReadFormatTests.TestWriteReadAlignment(AFormat: TsSpreadsheetFormat);
|
||||||
const
|
const
|
||||||
CELLTEXT = 'This is a text.';
|
CELLTEXT = 'This is a text.';
|
||||||
|
Reference in New Issue
Block a user