fpspreadsheet: Add test cases for xlsx number and date/time formats. Two fails.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3384 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2014-07-26 21:52:59 +00:00
parent 77d6fd704d
commit 565df8a3e3
5 changed files with 64 additions and 16 deletions

View File

@ -215,6 +215,7 @@ type
procedure TestWriteReadDates_BIFF5;
procedure TestWriteReadDates_BIFF8;
procedure TestWriteReadDates_ODS;
procedure TestWriteReadDates_OOXML;
end;
@ -364,6 +365,11 @@ begin
TestWriteReadDates(sfOpenDocument);
end;
procedure TSpreadWriteReadDateTests.TestWriteReadDates_OOXML;
begin
TestWriteReadDates(sfOOXML);
end;
{ TSpreadReadDateTests }

View File

@ -113,8 +113,15 @@ type
procedure TestWriteRead_ODS_BorderStyles;
procedure TestWriteRead_ODS_ColWidths;
procedure TestWriteRead_ODS_RowHeights;
procedure TestWriteRead_ODS_DateTimeFormats;
procedure TestWriteRead_ODS_NumberFormats;
procedure TestWriteRead_ODS_TextRotation;
procedure TestWriteRead_ODS_WordWrap;
{ OOXML Tests }
procedure TestWriteRead_OOXML_DateTimeFormats;
procedure TestWriteRead_OOXML_NumberFormats;
end;
implementation
@ -155,7 +162,7 @@ begin
SollNumbers[0] := 0.0;
SollNumbers[1] := 1.0;
SollNumbers[2] := -1.0;
SollNumbers[3] := 1.2345E6;
SollNumbers[3] := 1.23456E6;
SollNumbers[4] := -1.23456E6;
SollNumbers[5] := 1.23456E-6;
SollNumbers[6] := -1.23456E-6;
@ -292,13 +299,14 @@ begin
begin
MyWorksheet.WriteNumber(Row, Col, SollNumbers[Row], SollNumberFormats[Col], SollNumberDecimals[Col]);
ActualString := MyWorksheet.ReadAsUTF8Text(Row, Col);
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;
TempFile:=NewTempFile;
MyWorkBook.WriteToFile(TempFile, AFormat, true);
MyWorkbook.Free;
// Open the spreadsheet, as biff8
// Open the spreadsheet
MyWorkbook := TsWorkbook.Create;
MyWorkbook.ReadFromFile(TempFile, AFormat);
if AFormat = sfExcel2 then
@ -311,7 +319,8 @@ begin
for Col := Low(SollNumberFormats) to High(SollNumberFormats) do
begin
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;
// Finalization
@ -335,6 +344,16 @@ begin
TestWriteReadNumberFormats(sfExcel8);
end;
procedure TSpreadWriteReadFormatTests.TestWriteRead_ODS_NumberFormats;
begin
TestWriteReadNumberFormats(sfOpenDocument);
end;
procedure TSpreadWriteReadFormatTests.TestWriteRead_OOXML_NumberFormats;
begin
TestWriteReadNumberFormats(sfOOXML);
end;
{ --- Date/time formats --- }
@ -409,6 +428,15 @@ begin
TestWriteReadDateTimeFormats(sfExcel8);
end;
procedure TSpreadWriteReadFormatTests.TestWriteRead_ODS_DateTimeFormats;
begin
TestWriteReadDateTimeFormats(sfOpenDocument);
end;
procedure TSpreadWriteReadFormatTests.TestWriteRead_OOXML_DateTimeFormats;
begin
TestWriteReadDateTimeFormats(sfOOXML);
end;
{ --- Alignment tests --- }

View File

@ -105,6 +105,7 @@ type
procedure TestWriteReadNumbers_BIFF5;
procedure TestWriteReadNumbers_BIFF8;
procedure TestWriteReadNumbers_ODS;
procedure TestWriteReadNumbers_OOXML;
end;
@ -169,7 +170,6 @@ var
Row: Cardinal;
TempFile: string; //write xls/xml to this file and read back from it
begin
//todo: add support for ODF format
{// Not needed: use workbook.writetofile with overwrite=true
if fileexists(TempFile) then
DeleteFile(TempFile);
@ -230,6 +230,11 @@ begin
TestWriteReadNumbers(sfOpenDocument);
end;
procedure TSpreadWriteReadNumberTests.TestWriteReadNumbers_OOXML;
begin
TestWriteReadNumbers(sfOOXML);
end;
{ TSpreadReadNumberTests }

View File

@ -89,6 +89,7 @@
<Unit3>
<Filename Value="numberstests.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="numberstests"/>
</Unit3>
<Unit4>
<Filename Value="manualtests.pas"/>
@ -106,6 +107,7 @@
<Unit7>
<Filename Value="formattests.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="formattests"/>
</Unit7>
<Unit8>
<Filename Value="colortests.pas"/>

View File

@ -597,6 +597,7 @@ var
fmtStr: String;
nodeName: String;
begin
if Assigned(ANode) then begin
node := ANode.FirstChild;
while Assigned(node) do begin
nodeName := node.NodeName;
@ -608,6 +609,7 @@ begin
node := node.NextSibling;
end;
end;
end;
procedure TsSpreadOOXMLReader.ReadSharedStrings(ANode: TDOMNode);
var
@ -1373,7 +1375,8 @@ begin
'<sheets>');
for i:=1 to Workbook.GetWorksheetCount do
AppendToStream(FSWorkbook, Format(
'<sheet name="Sheet%d" sheetId="%d" r:id="rId%d" />', [i, i, i+2]));
'<sheet name="%s" sheetId="%d" r:id="rId%d" />', [Workbook.GetWorksheetByIndex(i-1).Name, i, i+2]));
// '<sheet name="Sheet%d" sheetId="%d" r:id="rId%d" />', [i, i, i+2]));
AppendToStream(FSWorkbook,
'</sheets>');
AppendToStream(FSWorkbook,
@ -1831,7 +1834,11 @@ begin
CellPosText := TsWorksheet.CellPosToText(ARow, ACol);
lStyleIndex := GetStyleIndex(ACell);
lDateTime := ConvertDateTimeToExcelDateTime(AValue, FDateMode);
CellValueText := Format('%g', [lDateTime], FPointSeparatorSettings);
// !!!!!!!!!!!!!!!!!!!!! NEED "IF" TO CHECK FOR DATE/TIME !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// CellValueText := Format('%g', [lDateTime], FPointSeparatorSettings);
CellValueText := FloatToStr(lDateTime, FPointSeparatorSettings);
AppendToStream(AStream, Format(
'<c r="%s" s="%d" t="n"><v>%s</v></c>', [CellPosText, lStyleIndex, CellValueText]));
end;