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