You've already forked lazarus-ccr
fpspreadsheet: Modify numbertests, datetests and stringtests to avoid reopening the same test file again and again.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3123 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -216,6 +216,11 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
var
|
||||
TestWorksheet: TsWorksheet = nil;
|
||||
TestWorkbook: TsWorkbook = nil;
|
||||
TestFileName: String = '';
|
||||
|
||||
const
|
||||
DatesSheet = 'Dates'; //worksheet name
|
||||
|
||||
@@ -271,6 +276,7 @@ begin
|
||||
SollDates[37]:=EncodeTime(3,45,12,0) + 1 // formatted as nfTimeDuration
|
||||
end;
|
||||
|
||||
|
||||
{ TSpreadWriteReadDateTests }
|
||||
|
||||
procedure TSpreadWriteReadDateTests.SetUp;
|
||||
@@ -349,38 +355,48 @@ begin
|
||||
TestWriteReadDates(sfExcel8);
|
||||
end;
|
||||
|
||||
|
||||
{ TSpreadReadDateTests }
|
||||
|
||||
procedure TSpreadReadDateTests.TestReadDate(FileName: string; Row: integer);
|
||||
var
|
||||
MyWorksheet: TsWorksheet;
|
||||
MyWorkbook: TsWorkbook;
|
||||
ActualDateTime: TDateTime;
|
||||
begin
|
||||
if Row>High(SollDates) then
|
||||
fail('Error in test code: array bounds overflow. Check array size is correct.');
|
||||
|
||||
// Open the spreadsheet
|
||||
MyWorkbook := TsWorkbook.Create;
|
||||
case UpperCase(ExtractFileExt(FileName)) of
|
||||
'.XLSX': MyWorkbook.ReadFromFile(FileName, sfOOXML);
|
||||
'.ODS': MyWorkbook.ReadFromFile(FileName, sfOpenDocument);
|
||||
// Excel XLS/BIFF
|
||||
else MyWorkbook.ReadFromFile(FileName, sfExcel8);
|
||||
// Load the file only if is the file name changes.
|
||||
if TestFileName <> FileName then begin
|
||||
if TestWorkbook <> nil then
|
||||
TestWorkbook.Free;
|
||||
|
||||
// Open the spreadsheet
|
||||
TestWorkbook := TsWorkbook.Create;
|
||||
case UpperCase(ExtractFileExt(FileName)) of
|
||||
'.XLSX': TestWorkbook.ReadFromFile(FileName, sfOOXML);
|
||||
'.ODS': TestWorkbook.ReadFromFile(FileName, sfOpenDocument);
|
||||
// Excel XLS/BIFF
|
||||
else TestWorkbook.ReadFromFile(FileName, sfExcel8);
|
||||
end;
|
||||
TestWorksheet := GetWorksheetByName(TestWorkBook, DatesSheet);
|
||||
if TestWorksheet=nil then
|
||||
fail('Error in test code. Failed to get named worksheet');
|
||||
|
||||
TestFileName := FileName;
|
||||
end;
|
||||
MyWorksheet:=GetWorksheetByName(MyWorkBook,DatesSheet);
|
||||
if MyWorksheet=nil then
|
||||
fail('Error in test code. Failed to get named worksheet');
|
||||
|
||||
// We know these are valid time/date/datetime values....
|
||||
// Just test for empty string; we'll probably end up in a maze of localized date/time stuff
|
||||
// if we don't.
|
||||
CheckNotEquals(MyWorkSheet.ReadAsUTF8Text(Row, 0), '','Could not read date time as string for cell '+CellNotation(MyWorkSheet,Row));
|
||||
CheckNotEquals(TestWorkSheet.ReadAsUTF8Text(Row, 0), '',
|
||||
'Could not read date time as string for cell '+CellNotation(TestWorkSheet,Row));
|
||||
|
||||
if not(MyWorkSheet.ReadAsDateTime(Row, 0, ActualDateTime)) then
|
||||
Fail('Could not read date time for cell '+CellNotation(MyWorkSheet,Row));
|
||||
CheckEquals(SollDates[Row],ActualDateTime,'Test date/time value mismatch '
|
||||
+'cell '+CellNotation(MyWorksheet,Row));
|
||||
if not(TestWorkSheet.ReadAsDateTime(Row, 0, ActualDateTime)) then
|
||||
Fail('Could not read date time value for cell '+CellNotation(TestWorkSheet,Row));
|
||||
CheckEquals(SollDates[Row],ActualDateTime,'Test date/time value mismatch, '
|
||||
+'cell '+CellNotation(TestWorksheet,Row));
|
||||
|
||||
// Finalization
|
||||
MyWorkbook.Free;
|
||||
// Don't free the workbook here - it will be reused. It is destroyed at finalization.
|
||||
end;
|
||||
|
||||
procedure TSpreadReadDateTests.SetUp;
|
||||
@@ -1177,6 +1193,10 @@ initialization
|
||||
RegisterTest(TSpreadReadDateTests);
|
||||
RegisterTest(TSpreadWriteReadDateTests);
|
||||
InitSollDates; //useful to have norm data if other code want to use this unit
|
||||
|
||||
finalization
|
||||
FreeAndNil(TestWorkbook);
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
@@ -103,6 +103,11 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
var
|
||||
TestWorksheet: TsWorksheet = nil;
|
||||
TestWorkbook: TsWorkbook = nil;
|
||||
TestFileName: String = '';
|
||||
|
||||
const
|
||||
TestFileBIFF8='testbiff8.xls'; //with 1904 numbermode number system
|
||||
TestFileBIFF8_1899='testbiff8_1899.xls'; //with 1899/1900 numbermode number system
|
||||
@@ -216,33 +221,41 @@ begin
|
||||
TestWriteReadNumbers(sfExcel8);
|
||||
end;
|
||||
|
||||
|
||||
{ TSpreadReadNumberTests }
|
||||
|
||||
procedure TSpreadReadNumberTests.TestReadNumber(FileName: string; Row: integer);
|
||||
var
|
||||
MyWorksheet: TsWorksheet;
|
||||
MyWorkbook: TsWorkbook;
|
||||
ActualNumber: double;
|
||||
begin
|
||||
if Row>High(SollNumbers) then
|
||||
fail('Error in test code: array bounds overflow. Check array size is correct.');
|
||||
|
||||
// Open the spreadsheet
|
||||
MyWorkbook := TsWorkbook.Create;
|
||||
case UpperCase(ExtractFileExt(FileName)) of
|
||||
'.XLSX': MyWorkbook.ReadFromFile(FileName, sfOOXML);
|
||||
'.ODS': MyWorkbook.ReadFromFile(FileName, sfOpenDocument);
|
||||
// Excel XLS/BIFF
|
||||
else MyWorkbook.ReadFromFile(FileName, sfExcel8);
|
||||
// Load the file only if is the file name changes.
|
||||
if (FileName <> TestFileName) then begin
|
||||
if TestWorkbook <> nil then
|
||||
TestWorkbook.Free;
|
||||
|
||||
// Open the spreadsheet
|
||||
TestWorkbook := TsWorkbook.Create;
|
||||
case UpperCase(ExtractFileExt(FileName)) of
|
||||
'.XLSX': TestWorkbook.ReadFromFile(FileName, sfOOXML);
|
||||
'.ODS': TestWorkbook.ReadFromFile(FileName, sfOpenDocument);
|
||||
// Excel XLS/BIFF
|
||||
else TestWorkbook.ReadFromFile(FileName, sfExcel8);
|
||||
end;
|
||||
TestWorksheet:=GetWorksheetByName(TestWorkBook,NumbersSheet);
|
||||
if TestWorksheet=nil then
|
||||
fail('Error in test code. Failed to get named worksheet');
|
||||
|
||||
TestFileName := FileName;
|
||||
end;
|
||||
MyWorksheet:=GetWorksheetByName(MyWorkBook,NumbersSheet);
|
||||
if MyWorksheet=nil then
|
||||
fail('Error in test code. Failed to get named worksheet');
|
||||
|
||||
ActualNumber:=MyWorkSheet.ReadAsNumber(Row, 0);
|
||||
CheckEquals(SollNumbers[Row], ActualNumber,'Test value mismatch '
|
||||
+'cell '+CellNotation(MyWorkSheet,Row));
|
||||
ActualNumber := TestWorkSheet.ReadAsNumber(Row, 0);
|
||||
CheckEquals(SollNumbers[Row], ActualNumber,'Test value mismatch, '
|
||||
+'cell '+CellNotation(TestWorkSheet,Row));
|
||||
|
||||
// Finalization
|
||||
MyWorkbook.Free;
|
||||
// Don't free the workbook here - it will be reused. It is destroyed at finalization.
|
||||
end;
|
||||
|
||||
procedure TSpreadReadNumberTests.SetUp;
|
||||
@@ -462,6 +475,10 @@ initialization
|
||||
RegisterTest(TSpreadReadNumberTests);
|
||||
RegisterTest(TSpreadWriteReadNumberTests);
|
||||
InitSollNumbers; //useful to have norm data if other code want to use this unit
|
||||
|
||||
finalization
|
||||
FreeAndNil(TestWorkbook);
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
@@ -96,6 +96,11 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
var
|
||||
TestWorksheet: TsWorksheet = nil;
|
||||
TestWorkbook: TsWorkbook = nil;
|
||||
TestFileName: String = '';
|
||||
|
||||
// Initialize array with variables that represent the values
|
||||
// we expect to be in the test spreadsheet files.
|
||||
//
|
||||
@@ -283,33 +288,39 @@ begin
|
||||
DeleteFile(TempFile);
|
||||
end;
|
||||
|
||||
|
||||
{ TSpreadReadStringTests }
|
||||
|
||||
procedure TSpreadReadStringTests.TestReadString(FileName: string; Row: integer);
|
||||
var
|
||||
MyWorksheet: TsWorksheet;
|
||||
MyWorkbook: TsWorkbook;
|
||||
ActualString: string;
|
||||
begin
|
||||
if Row>High(SollStrings) then
|
||||
fail('Error in test code: array bounds overflow. Check array size is correct.');
|
||||
|
||||
// Open the spreadsheet
|
||||
MyWorkbook := TsWorkbook.Create;
|
||||
case UpperCase(ExtractFileExt(FileName)) of
|
||||
'.XLSX': MyWorkbook.ReadFromFile(FileName, sfOOXML);
|
||||
'.ODS': MyWorkbook.ReadFromFile(FileName, sfOpenDocument);
|
||||
// Excel XLS/BIFF
|
||||
else MyWorkbook.ReadFromFile(FileName, sfExcel8);
|
||||
// Load the file only if is the file name changes.
|
||||
if (FileName <> TestFileName) then begin
|
||||
if TestWorkbook <> nil then
|
||||
TestWorkbook.Free;
|
||||
|
||||
// Open the spreadsheet
|
||||
TestWorkbook := TsWorkbook.Create;
|
||||
case UpperCase(ExtractFileExt(FileName)) of
|
||||
'.XLSX': TestWorkbook.ReadFromFile(FileName, sfOOXML);
|
||||
'.ODS': TestWorkbook.ReadFromFile(FileName, sfOpenDocument);
|
||||
// Excel XLS/BIFF
|
||||
else TestWorkbook.ReadFromFile(FileName, sfExcel8);
|
||||
end;
|
||||
TestWorksheet := GetWorksheetByName(TestWorkBook, StringsSheet);
|
||||
if TestWorksheet=nil then
|
||||
fail('Error in test code: could not retrieve worksheet.');
|
||||
end;
|
||||
MyWorksheet:=GetWorksheetByName(MyWorkBook,StringsSheet);
|
||||
if MyWorksheet=nil then
|
||||
fail('Error in test code: could not retrieve worksheet.');
|
||||
|
||||
ActualString:=MyWorkSheet.ReadAsUTF8Text(Row,0);
|
||||
CheckEquals(SollStrings[Row],ActualString,'Test value mismatch '
|
||||
+'cell '+CellNotation(MyWorkSheet,Row));
|
||||
ActualString := TestWorkSheet.ReadAsUTF8Text(Row,0);
|
||||
CheckEquals(SollStrings[Row], ActualString, 'Test value mismatch, '
|
||||
+'cell '+CellNotation(TestWorkSheet,Row));
|
||||
|
||||
// Finalization
|
||||
MyWorkbook.Free;
|
||||
// Don't free the workbook here - it will be reused. It is destroyed at finalization.
|
||||
end;
|
||||
|
||||
procedure TSpreadReadStringTests.SetUp;
|
||||
@@ -458,4 +469,8 @@ initialization
|
||||
RegisterTest(TSpreadWriteReadStringTests);
|
||||
// Initialize the norm variables in case other units want to use it:
|
||||
InitSollStrings;
|
||||
|
||||
finalization
|
||||
FreeAndNil(TestWorkbook);
|
||||
|
||||
end.
|
||||
|
Reference in New Issue
Block a user