
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4168 8e941d3f-bd1b-0410-a28a-d453659cc2b4
1753 lines
56 KiB
ObjectPascal
1753 lines
56 KiB
ObjectPascal
{ Tests for insertion and deletion of columns and rows
|
|
This unit test is writing out to and reading back from files.
|
|
}
|
|
|
|
unit insertdeletetests;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
// Not using Lazarus package as the user may be working with multiple versions
|
|
// Instead, add .. to unit search path
|
|
Classes, SysUtils, fpcunit, testregistry,
|
|
fpstypes, fpspreadsheet, xlsbiff8, {and a project requirement for lclbase for utf8 handling}
|
|
testsutility;
|
|
|
|
type
|
|
TInsDelTestDataItem = record
|
|
Layout: string;
|
|
InsertCol: Integer;
|
|
InsertRow: Integer;
|
|
DeleteCol: Integer;
|
|
DeleteRow: Integer;
|
|
Formula: String;
|
|
SollFormula: String;
|
|
{
|
|
SharedFormulaRowCount: Integer; // Size of shared formula block before insert/delete
|
|
SharedFormulaColCount: Integer;
|
|
SharedFormulaBaseCol_After: Integer; // Position of shared formula base after insert/delete
|
|
SharedFormulaBaseRow_After: Integer;
|
|
SharedFormulaRowCount_After: Integer; // Size of shared formula block after insert/delete
|
|
SharedFormulaColCount_After: Integer;
|
|
}
|
|
MergedColCount: Integer; // size of merged block before insert/delete
|
|
MergedRowCount: Integer;
|
|
MergedColCount_After: Integer; // size of merged block after insert/delete
|
|
MergedRowCount_After: Integer;
|
|
SollLayout: String;
|
|
end;
|
|
|
|
var
|
|
InsDelTestData: array[0..34] of TInsDelTestDataItem;
|
|
|
|
procedure InitTestData;
|
|
|
|
type
|
|
{ TSpreadWriteReadInsertColRowTests }
|
|
TSpreadWriteRead_InsDelColRow_Tests = class(TTestCase)
|
|
private
|
|
protected
|
|
// Set up expected values:
|
|
procedure SetUp; override;
|
|
procedure TearDown; override;
|
|
procedure TestWriteRead_InsDelColRow(ATestIndex: Integer;
|
|
AFormat: TsSpreadsheetFormat);
|
|
|
|
published
|
|
|
|
// *** Excel 8 tests ***
|
|
|
|
// Writes out simple cell layout and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_0_BIFF8; // before first
|
|
procedure TestWriteRead_InsDelColRow_1_BIFF8; // middle
|
|
procedure TestWriteRead_InsDelColRow_2_BIFF8; // before last
|
|
// Writes out simple cell layout and deletes columns
|
|
procedure TestWriteRead_InsDelColRow_3_BIFF8; // first
|
|
procedure TestWriteRead_InsDelColRow_4_BIFF8; // middle
|
|
procedure TestWriteRead_InsDelColRow_5_BIFF8; // last
|
|
// Writes out simple cell layout and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_6_BIFF8; // before first
|
|
procedure TestWriteRead_InsDelColRow_7_BIFF8; // middle
|
|
procedure TestWriteRead_InsDelColRow_8_BIFF8; // before last
|
|
// Writes out simple cell layout and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_9_BIFF8; // first
|
|
procedure TestWriteRead_InsDelColRow_10_BIFF8; // middle
|
|
procedure TestWriteRead_InsDelColRow_11_BIFF8; // last
|
|
|
|
// Writes out cell layout with formula and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_12_BIFF8; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_13_BIFF8; // after formula cell
|
|
// Writes out cell layout with formula and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_14_BIFF8; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_15_BIFF8; // after formula cell
|
|
// Writes out cell layout with formula and deletes columns
|
|
procedure TestWriteRead_InsDelColRow_16_BIFF8; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_17_BIFF8; // after formula cell
|
|
procedure TestWriteRead_InsDelColRow_18_BIFF8; // cell in formula
|
|
// Writes out cell layout with formula and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_19_BIFF8; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_20_BIFF8; // after formula cell
|
|
procedure TestWriteRead_InsDelColRow_21_BIFF8; // cell in formula
|
|
|
|
// Writes out cell layout with merged cells
|
|
procedure TestWriteRead_InsDelColRow_22_BIFF8; // no insert/delete; just test merged block
|
|
// ... and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_23_BIFF8; // column before merged block
|
|
procedure TestWriteRead_InsDelColRow_24_BIFF8; // column through merged block
|
|
procedure TestWriteRead_InsDelColRow_25_BIFF8; // column after merged block
|
|
// ... and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_26_BIFF8; // row before merged block
|
|
procedure TestWriteRead_InsDelColRow_27_BIFF8; // row through merged block
|
|
procedure TestWriteRead_InsDelColRow_28_BIFF8; // row after merged block
|
|
// ... and deletes columns
|
|
procedure TestWriteRead_DelColBeforeMerge_BIFF8; // column before merged block
|
|
procedure TestWriteRead_DelColInMerge_BIFF8; // column through merged block
|
|
procedure TestWriteRead_DelColAfterMerge_BIFF8; // column after merged block
|
|
// ... and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_32_BIFF8; // row before merged block
|
|
procedure TestWriteRead_InsDelColRow_33_BIFF8; // row through merged block
|
|
procedure TestWriteRead_InsDelColRow_34_BIFF8; // row after merged block
|
|
|
|
// *** OOXML tests ***
|
|
|
|
// Writes out simple cell layout and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_0_OOXML; // before first
|
|
procedure TestWriteRead_InsDelColRow_1_OOXML; // middle
|
|
procedure TestWriteRead_InsDelColRow_2_OOXML; // before last
|
|
// Writes out simple cell layout and deletes columns
|
|
procedure TestWriteRead_InsDelColRow_3_OOXML; // first
|
|
procedure TestWriteRead_InsDelColRow_4_OOXML; // middle
|
|
procedure TestWriteRead_InsDelColRow_5_OOXML; // last
|
|
// Writes out simple cell layout and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_6_OOXML; // before first
|
|
procedure TestWriteRead_InsDelColRow_7_OOXML; // middle
|
|
procedure TestWriteRead_InsDelColRow_8_OOXML; // before last
|
|
// Writes out simple cell layout and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_9_OOXML; // first
|
|
procedure TestWriteRead_InsDelColRow_10_OOXML; // middle
|
|
procedure TestWriteRead_InsDelColRow_11_OOXML; // last
|
|
|
|
// Writes out cell layout with formula and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_12_OOXML; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_13_OOXML; // after formula cell
|
|
// Writes out cell layout with formula and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_14_OOXML; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_15_OOXML; // after formula cell
|
|
// Writes out cell layout with formula and deletes columns
|
|
procedure TestWriteRead_InsDelColRow_16_OOXML; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_17_OOXML; // after formula cell
|
|
procedure TestWriteRead_InsDelColRow_18_OOXML; // cell in formula
|
|
// Writes out cell layout with formula and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_19_OOXML; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_20_OOXML; // after formula cell
|
|
procedure TestWriteRead_InsDelColRow_21_OOXML; // cell in formula
|
|
|
|
// Writes out cell layout with merged cells
|
|
procedure TestWriteRead_InsDelColRow_22_OOXML; // no insert/delete; just test merged block
|
|
// ... and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_23_OOXML; // column before merged block
|
|
procedure TestWriteRead_InsDelColRow_24_OOXML; // column through merged block
|
|
procedure TestWriteRead_InsDelColRow_25_OOXML; // column after merged block
|
|
// ... and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_26_OOXML; // row before merged block
|
|
procedure TestWriteRead_InsDelColRow_27_OOXML; // row through merged block
|
|
procedure TestWriteRead_InsDelColRow_28_OOXML; // row after merged block
|
|
// ... and deletes columns
|
|
procedure TestWriteRead_DelColBeforeMerge_OOXML; // column before merged block
|
|
procedure TestWriteRead_DelColInMerge_OOXML; // column through merged block
|
|
procedure TestWriteRead_DelColAfterMerge_OOXML; // column after merged block
|
|
// ... and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_32_OOXML; // row before merged block
|
|
procedure TestWriteRead_InsDelColRow_33_OOXML; // row through merged block
|
|
procedure TestWriteRead_InsDelColRow_34_OOXML; // row after merged block
|
|
|
|
// *** OpenDocument tests ***
|
|
|
|
// Writes out simple cell layout and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_0_ODS; // before first
|
|
procedure TestWriteRead_InsDelColRow_1_ODS; // middle
|
|
procedure TestWriteRead_InsDelColRow_2_ODS; // before last
|
|
// Writes out simple cell layout and deletes columns
|
|
procedure TestWriteRead_InsDelColRow_3_ODS; // first
|
|
procedure TestWriteRead_InsDelColRow_4_ODS; // middle
|
|
procedure TestWriteRead_InsDelColRow_5_ODS; // last
|
|
// Writes out simple cell layout and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_6_ODS; // before first
|
|
procedure TestWriteRead_InsDelColRow_7_ODS; // middle
|
|
procedure TestWriteRead_InsDelColRow_8_ODS; // before last
|
|
// Writes out simple cell layout and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_9_ODS; // first
|
|
procedure TestWriteRead_InsDelColRow_10_ODS; // middle
|
|
procedure TestWriteRead_InsDelColRow_11_ODS; // last
|
|
|
|
// Writes out cell layout with formula and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_12_ODS; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_13_ODS; // after formula cell
|
|
// Writes out cell layout with formula and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_14_ODS; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_15_ODS; // after formula cell
|
|
// Writes out cell layout with formula and deletes columns
|
|
procedure TestWriteRead_InsDelColRow_16_ODS; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_17_ODS; // after formula cell
|
|
procedure TestWriteRead_InsDelColRow_18_ODS; // cell in formula
|
|
// Writes out cell layout with formula and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_19_ODS; // before formula cell
|
|
procedure TestWriteRead_InsDelColRow_20_ODS; // after formula cell
|
|
procedure TestWriteRead_InsDelColRow_21_ODS; // cell in formula
|
|
|
|
// Writes out cell layout with merged cells
|
|
procedure TestWriteRead_InsDelColRow_22_ODS; // no insert/delete; just test merged block
|
|
// ... and inserts columns
|
|
procedure TestWriteRead_InsDelColRow_23_ODS; // column before merged block
|
|
procedure TestWriteRead_InsDelColRow_24_ODS; // column through merged block
|
|
procedure TestWriteRead_InsDelColRow_25_ODS; // column after merged block
|
|
// ... and inserts rows
|
|
procedure TestWriteRead_InsDelColRow_26_ODS; // row before merged block
|
|
procedure TestWriteRead_InsDelColRow_27_ODS; // row through merged block
|
|
procedure TestWriteRead_InsDelColRow_28_ODS; // row after merged block
|
|
// ... and deletes columns
|
|
procedure TestWriteRead_DelColBeforeMerge_ODS; // column before merged block
|
|
procedure TestWriteRead_DelColInMerge_ODS; // column through merged block
|
|
procedure TestWriteRead_DelColAfterMerge_ODS; // column after merged block
|
|
// ... and deletes rows
|
|
procedure TestWriteRead_InsDelColRow_32_ODS; // row before merged block
|
|
procedure TestWriteRead_InsDelColRow_33_ODS; // row through merged block
|
|
procedure TestWriteRead_InsDelColRow_34_ODS; // row after merged block
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
StrUtils, fpsUtils;
|
|
|
|
const
|
|
InsertColRowSheet = 'InsertDelete_ColumnsRows';
|
|
|
|
procedure InitTestData;
|
|
var
|
|
i: Integer;
|
|
begin
|
|
for i := 0 to High(InsDelTestData) do
|
|
with InsDelTestData[i] do
|
|
begin
|
|
Layout := '';
|
|
InsertCol := -1;
|
|
InsertRow := -1;
|
|
DeleteCol := -1;
|
|
DeleteRow := -1;
|
|
Formula := '';
|
|
SollFormula := '';
|
|
{
|
|
SharedFormulaColCount := 0;
|
|
SharedFormulaRowCount := 0;
|
|
SharedFormulaBaseCol_After := -1;
|
|
SharedFormulaBaseRow_After := -1;
|
|
SharedFormulaColCount_After := 0;
|
|
SharedFormulaRowCount_After := 0;
|
|
}
|
|
MergedColCount := 0;
|
|
MergedRowCount := 0;
|
|
end;
|
|
|
|
{ ---------------------------------------------------------------------------}
|
|
{ Simple layouts }
|
|
{ ---------------------------------------------------------------------------}
|
|
|
|
// Insert a column before col 0
|
|
with InsDelTestData[0] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'34567890|'+
|
|
'45678901';
|
|
InsertCol := 0;
|
|
SollLayout := ' 12345678|'+
|
|
' 23456789|'+
|
|
' 34567890|'+
|
|
' 45678901';
|
|
end;
|
|
|
|
// Insert a column before col 2
|
|
with InsDelTestData[1] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'34567890|'+
|
|
'45678901';
|
|
InsertCol := 2;
|
|
SollLayout := '12 345678|'+
|
|
'23 456789|'+
|
|
'34 567890|'+
|
|
'45 678901';
|
|
end;
|
|
|
|
// Insert a column before last col
|
|
with InsDelTestData[2] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'34567890|'+
|
|
'45678901';
|
|
InsertCol := 7;
|
|
SollLayout := '1234567 8|'+
|
|
'2345678 9|'+
|
|
'3456789 0|'+
|
|
'4567890 1';
|
|
end;
|
|
|
|
// Delete column 0
|
|
with InsDelTestData[3] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'34567890|'+
|
|
'45678901';
|
|
DeleteCol := 0;
|
|
SollLayout := '2345678|'+
|
|
'3456789|'+
|
|
'4567890|'+
|
|
'5678901';
|
|
end;
|
|
|
|
// Delete column 2
|
|
with InsDelTestData[4] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'34567890|'+
|
|
'45678901';
|
|
DeleteCol := 2;
|
|
SollLayout := '1245678|'+
|
|
'2356789|'+
|
|
'3467890|'+
|
|
'4578901';
|
|
end;
|
|
|
|
// Delete last column
|
|
with InsDelTestData[5] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'34567890|'+
|
|
'45678901';
|
|
DeleteCol := 7;
|
|
SollLayout := '1234567|'+
|
|
'2345678|'+
|
|
'3456789|'+
|
|
'4567890';
|
|
end;
|
|
|
|
// Insert a ROW before row 0
|
|
with InsDelTestData[6] do begin
|
|
Layout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
InsertRow := 0;
|
|
SollLayout := ' |'+
|
|
'12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
end;
|
|
|
|
// Insert a ROW before row 2
|
|
with InsDelTestData[7] do begin
|
|
Layout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
InsertRow := 2;
|
|
SollLayout := '12345|'+
|
|
'23456|'+
|
|
' |'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
end;
|
|
|
|
// Insert a ROW before last row
|
|
with InsDelTestData[8] do begin
|
|
Layout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
InsertRow := 5;
|
|
SollLayout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
' |'+
|
|
'67890|';
|
|
end;
|
|
|
|
// Delete the first row
|
|
with InsDelTestData[9] do begin
|
|
Layout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
DeleteRow := 0;
|
|
SollLayout := '23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
end;
|
|
|
|
// Delete row #2
|
|
with InsDelTestData[10] do begin
|
|
Layout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
DeleteRow := 2;
|
|
SollLayout := '12345|'+
|
|
'23456|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
end;
|
|
|
|
// Delete last row
|
|
with InsDelTestData[11] do begin
|
|
Layout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789|'+
|
|
'67890|';
|
|
DeleteRow := 5;
|
|
SollLayout := '12345|'+
|
|
'23456|'+
|
|
'34567|'+
|
|
'45678|'+
|
|
'56789';
|
|
end;
|
|
|
|
{ ---------------------------------------------------------------------------}
|
|
{ Layouts with formula }
|
|
{ ---------------------------------------------------------------------------}
|
|
|
|
// Insert a column before #1, i.e. before formula cell
|
|
with InsDelTestData[12] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
InsertCol := 1;
|
|
Formula := 'C3';
|
|
SollFormula := 'D3'; // col index increases due to inserted col
|
|
SollLayout := '1 2345678|'+
|
|
'2 3456789|'+
|
|
'3 4565890|'+
|
|
'4 5678901|'+
|
|
'5 6789012|'+
|
|
'6 7890123';
|
|
end;
|
|
|
|
// Insert a column before #3, i.e. after formula cell
|
|
with InsDelTestData[13] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
InsertCol := 3;
|
|
Formula := 'C3';
|
|
SollFormula := 'C3'; // no change of cell because insertion is behind
|
|
SollLayout := '123 45678|'+
|
|
'234 56789|'+
|
|
'345 65890|'+
|
|
'456 78901|'+
|
|
'567 89012|'+
|
|
'678 90123';
|
|
end;
|
|
|
|
// Insert a row before #1, i.e. before formula cell
|
|
with InsDelTestData[14] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
InsertRow := 1;
|
|
Formula := 'E4';
|
|
SollFormula := 'E5'; // row index increaes due to inserted row
|
|
SollLayout := '12345678|'+
|
|
' |'+
|
|
'23456789|'+
|
|
'34568890|'+
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Insert a row before #4, i.e. after formula cell
|
|
with InsDelTestData[15] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
InsertRow := 5;
|
|
Formula := 'E4';
|
|
SollFormula := 'E4'; // row index not changed dur to insert after cell
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'34568890|'+
|
|
'45678901|'+
|
|
'56789012|'+
|
|
' |'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Deletes column #1, i.e. before formula cell
|
|
with InsDelTestData[16] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
DeleteCol := 1;
|
|
Formula := 'C3';
|
|
SollFormula := 'B3'; // col index decreases due to delete before cell
|
|
SollLayout := '1345678|'+
|
|
'2456789|'+
|
|
'3565890|'+
|
|
'4678901|'+
|
|
'5789012|'+
|
|
'6890123';
|
|
end;
|
|
|
|
// Deletes column #5, i.e. after formula cell
|
|
with InsDelTestData[17] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
DeleteCol := 5;
|
|
Formula := 'C3';
|
|
SollFormula := 'C3'; // col index unchanged due to deleted after cell
|
|
SollLayout := '1234578|'+
|
|
'2345689|'+
|
|
'3456590|'+
|
|
'4567801|'+
|
|
'5678912|'+
|
|
'6789023';
|
|
end;
|
|
|
|
// Deletes column #2, i.e. cell appearing in formula is gone --> #REF! error
|
|
with InsDelTestData[18] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
DeleteCol := 2;
|
|
Formula := 'C3';
|
|
SollFormula := '#REF!'; // col index unchanged due to deletion after cell
|
|
SollLayout := '1245678|'+
|
|
'2356789|'+
|
|
'346E890|'+ // "E" = error
|
|
'4578901|'+
|
|
'5689012|'+
|
|
'6790123';
|
|
end;
|
|
|
|
// Deletes row #1, i.e. before formula cell
|
|
with InsDelTestData[19] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
DeleteRow := 1;
|
|
Formula := 'E4';
|
|
SollFormula := 'E3'; // row index decreases due to delete before cell
|
|
SollLayout := '12345678|'+
|
|
// '23456789|'+
|
|
'34568890|'+
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Deletes row #4, i.e. after formula cell
|
|
with InsDelTestData[20] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
DeleteRow := 4;
|
|
Formula := 'E4';
|
|
SollFormula := 'E4'; // row index unchanged (delete is after cell)
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'34568890|'+
|
|
'45678901|'+
|
|
// '56789012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Deletes row #2, i.e. row containing cell used in formula --> #REF! error!
|
|
with InsDelTestData[21] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'3456F890|'+ // "F" = Formula in row 2, col 4
|
|
'45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
DeleteRow := 3;
|
|
Formula := 'E4';
|
|
SollFormula := '#REF!';
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'3456E890|'+ // "E" = error
|
|
// '45678901|'+
|
|
'56789012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
|
|
{ ---------------------------------------------------------------------------}
|
|
{ Layouts with merged cells }
|
|
{ ---------------------------------------------------------------------------}
|
|
|
|
// No insert/delete, just to test the merged block
|
|
with InsDelTestData[22] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Insert column before merged block
|
|
with InsDelTestData[23] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
InsertCol := 1;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '1 2345678|'+
|
|
'2 3456789|'+
|
|
'3 45M 890|'+
|
|
'4 56 901|'+
|
|
'5 67 012|'+
|
|
'6 7890123';
|
|
end;
|
|
|
|
// Insert column through merged block
|
|
with InsDelTestData[24] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
InsertCol := 4;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 3;
|
|
SollLayout := '1234 5678|'+
|
|
'2345 6789|'+
|
|
'345M 890|'+
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'6789 0123';
|
|
end;
|
|
|
|
// Insert column behind merged block
|
|
with InsDelTestData[25] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
InsertCol := 7;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '1234567 8|'+
|
|
'2345678 9|'+
|
|
'345M 89 0|'+
|
|
'456 90 1|'+
|
|
'567 01 2|'+
|
|
'6789012 3';
|
|
end;
|
|
|
|
// Insert row above merged block
|
|
with InsDelTestData[26] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
InsertRow := 0;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := ' |'+
|
|
'12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Insert row through merged block
|
|
with InsDelTestData[27] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
InsertRow := 3;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 4;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+
|
|
' |'+
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Insert row below merged block
|
|
with InsDelTestData[28] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
InsertRow := 5;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+
|
|
'456 901|'+
|
|
'567 012|'+
|
|
' |'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Delete column before merged block
|
|
with InsDelTestData[29] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
DeleteCol := 1;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '1345678|'+
|
|
'2456789|'+
|
|
'35M 890|'+
|
|
'46 901|'+
|
|
'57 012|'+
|
|
'6890123';
|
|
end;
|
|
|
|
// Delete column through merged block
|
|
with InsDelTestData[30] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
DeleteCol := 4;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 1;
|
|
SollLayout := '1234678|'+
|
|
'2345789|'+
|
|
'345M890|'+
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'6789123';
|
|
end;
|
|
|
|
// Delete column behind merged block
|
|
with InsDelTestData[31] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
DeleteCol := 7;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '1234567|'+
|
|
'2345678|'+
|
|
'345M 89|'+
|
|
'456 90|'+
|
|
'567 01|'+
|
|
'6789012';
|
|
end;
|
|
|
|
// Delete row above merged block
|
|
with InsDelTestData[32] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
DeleteRow := 1;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '12345678|'+
|
|
// '23456789|'+
|
|
'345M 890|'+
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Delete row through merged block
|
|
with InsDelTestData[33] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
DeleteRow := 4;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 2;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+
|
|
'456 901|'+
|
|
// '567 012|'+
|
|
'67890123';
|
|
end;
|
|
|
|
// Delete row behind merged block
|
|
with InsDelTestData[34] do begin
|
|
Layout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+ // "M" = merged block (2 cols x 3 rows)
|
|
'456 901|'+
|
|
'567 012|'+
|
|
'67890123';
|
|
DeleteRow := 5;
|
|
MergedRowCount := 3;
|
|
MergedColCount := 2;
|
|
MergedRowCount_After := 3;
|
|
MergedColCount_After := 2;
|
|
SollLayout := '12345678|'+
|
|
'23456789|'+
|
|
'345M 890|'+
|
|
'456 901|'+
|
|
'567 012';
|
|
end;
|
|
end;
|
|
|
|
|
|
{ TSpreadWriteRead_InsDelColRowTests }
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.SetUp;
|
|
begin
|
|
inherited SetUp;
|
|
InitTestData;
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TearDown;
|
|
begin
|
|
inherited TearDown;
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow(
|
|
ATestIndex: Integer; AFormat: TsSpreadsheetFormat);
|
|
var
|
|
MyWorksheet: TsWorksheet;
|
|
MyWorkbook: TsWorkbook;
|
|
row, col: Integer;
|
|
lastCol, lastRow: Cardinal;
|
|
r1,c1,r2,c2: Cardinal;
|
|
MyCell: PCell;
|
|
TempFile: string; //write xls/xml to this file and read back from it
|
|
L: TStringList;
|
|
s: String;
|
|
expected: String;
|
|
actual: String;
|
|
// expectedFormulas: array of array of String;
|
|
begin
|
|
TempFile := GetTempFileName;
|
|
|
|
L := TStringList.Create;
|
|
try
|
|
{
|
|
// Extract soll formulas into a 2D array in case of shared formulas
|
|
if (InsDelTestData[ATestIndex].SharedFormulaRowCount_After > 0) or
|
|
(InsDelTestData[ATestIndex].SharedFormulaColCount_After > 0) then
|
|
begin
|
|
with InsDelTestData[ATestIndex] do
|
|
SetLength(expectedFormulas, SharedFormulaRowCount_After, SharedFormulaColCount_After);
|
|
L.Delimiter := ';';
|
|
L.DelimitedText := InsDelTestData[ATestIndex].SollFormula;
|
|
LL := TStringList.Create;
|
|
try
|
|
LL.Delimiter := ',';
|
|
for row := 0 to InsDelTestData[ATestIndex].SharedFormulaRowCount_After-1 do
|
|
begin
|
|
s := L[row];
|
|
LL.DelimitedText := L[row];
|
|
for col := 0 to InsDelTestData[ATestIndex].SharedFormulaColCount_After-1 do
|
|
expectedFormulas[row, col] := trim(LL[col]);
|
|
end;
|
|
finally
|
|
LL.Free;
|
|
end;
|
|
end;
|
|
}
|
|
L.Delimiter := '|';
|
|
L.StrictDelimiter := true;
|
|
L.DelimitedText := InsDelTestData[ATestIndex].Layout;
|
|
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorkSheet:= MyWorkBook.AddWorksheet(InsertColRowSheet);
|
|
|
|
// Write out cells
|
|
for row := 0 to L.Count-1 do
|
|
begin
|
|
s := L[row];
|
|
for col := 0 to Length(s)-1 do
|
|
case s[col+1] of
|
|
' ' : ; // Leave cell empty
|
|
'0'..'9': MyWorksheet.WriteNumber(row, col, StrToInt(s[col+1]));
|
|
'F' : MyWorksheet.WriteFormula(row, col, InsDelTestData[ATestIndex].Formula);
|
|
'M' : begin
|
|
MyWorksheet.WriteUTF8Text(row, col, 'M');
|
|
MyWorksheet.MergeCells(
|
|
row,
|
|
col,
|
|
row + InsDelTestData[ATestIndex].MergedRowCount - 1,
|
|
col + InsDelTestData[ATestIndex].MergedColCount - 1
|
|
);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
if InsDelTestData[ATestIndex].InsertCol >= 0 then
|
|
MyWorksheet.InsertCol(InsDelTestData[ATestIndex].InsertCol);
|
|
|
|
if InsDelTestData[ATestIndex].InsertRow >= 0 then
|
|
MyWorksheet.InsertRow(InsDelTestData[ATestIndex].InsertRow);
|
|
|
|
if InsDelTestData[ATestIndex].DeleteCol >= 0 then
|
|
MyWorksheet.DeleteCol(InsDelTestData[ATestIndex].DeleteCol);
|
|
|
|
if InsDelTestData[ATestIndex].DeleteRow >= 0 then
|
|
MyWorksheet.DeleteRow(InsDelTestData[ATestIndex].DeleteRow);
|
|
|
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
|
finally
|
|
MyWorkbook.Free;
|
|
end;
|
|
|
|
L.DelimitedText := InsDelTestData[ATestIndex].SollLayout;
|
|
|
|
// Open the spreadsheet
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorkbook.Options := MyWorkbook.Options + [boReadFormulas, boAutoCalc];
|
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
|
|
|
if AFormat = sfExcel2 then
|
|
MyWorksheet := MyWorkbook.GetFirstWorksheet
|
|
else
|
|
MyWorksheet := GetWorksheetByName(MyWorkBook, InsertColRowSheet);
|
|
if MyWorksheet=nil then
|
|
fail('Error in test code. Failed to get named worksheet');
|
|
|
|
lastRow := MyWorksheet.GetLastOccupiedRowIndex;
|
|
lastCol := MyWorksheet.GetLastOccupiedColIndex;
|
|
|
|
for row := 0 to lastRow do
|
|
begin
|
|
expected := L[row];
|
|
actual := '';
|
|
for col := 0 to lastcol do
|
|
begin
|
|
MyCell := MyWorksheet.FindCell(row, col);
|
|
|
|
if MyCell = nil then
|
|
actual := actual + ' '
|
|
else
|
|
case MyCell^.ContentType of
|
|
cctEmpty : actual := actual + ' ';
|
|
cctNumber : actual := actual + IntToStr(Round(Mycell^.NumberValue));
|
|
cctUTF8String: actual := actual + MyCell^.UTF8StringValue;
|
|
cctError : actual := actual + 'E';
|
|
end;
|
|
if HasFormula(MyCell) then
|
|
begin
|
|
{
|
|
if (InsDelTestData[ATestIndex].SharedFormulaRowCount_After > 0) or
|
|
(InsDelTestData[ATestIndex].SharedFormulaColCount_After > 0)
|
|
then
|
|
CheckEquals(
|
|
expectedFormulas[row-InsDelTestData[ATestIndex].SharedFormulaBaseRow_After,
|
|
col-InsDelTestData[ATestIndex].SharedFormulaBaseCol_After],
|
|
MyWorksheet.ReadFormulaAsString(MyCell),
|
|
'Shared formula mismatch, cell ' + CellNotation(MyWorksheet, Row, Col)
|
|
)
|
|
else
|
|
}
|
|
CheckEquals(
|
|
InsDelTestData[ATestIndex].SollFormula,
|
|
MyWorksheet.ReadFormulaAsString(MyCell),
|
|
'Formula mismatch, cell '+CellNotation(MyWorksheet, Row, Col)
|
|
);
|
|
end;
|
|
if MyWorksheet.IsMerged(MyCell) then
|
|
begin
|
|
MyWorksheet.FindMergedRange(MyCell, r1, c1, r2, c2);
|
|
CheckEquals(
|
|
InsDelTestData[ATestIndex].MergedRowCount_After,
|
|
r2 - r1 + 1,
|
|
'Merged row count mismatch, cell ' + CellNotation(MyWorksheet, Row, Col)
|
|
);
|
|
CheckEquals(
|
|
InsDelTestData[ATestIndex].MergedColCount_After,
|
|
c2 - c1 + 1,
|
|
'Merged column count mismatch, cell '+CellNotation(MyWorksheet, Row, Col)
|
|
);
|
|
end;
|
|
end;
|
|
CheckEquals(expected, actual,
|
|
'Test empty cell layout mismatch, cell '+CellNotation(MyWorksheet, Row, Col));
|
|
end;
|
|
finally
|
|
MyWorkbook.Free;
|
|
DeleteFile(TempFile);
|
|
end;
|
|
|
|
finally
|
|
L.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
{------------------------------------------------------------------------------}
|
|
{ BIFF8 tests }
|
|
{------------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_0_BIFF8;
|
|
// insert a column before the first one
|
|
begin
|
|
TestWriteRead_InsDelColRow(0, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_1_BIFF8;
|
|
// insert a column before column 2
|
|
begin
|
|
TestWriteRead_InsDelColRow(1, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_2_BIFF8;
|
|
// insert a column before the last one
|
|
begin
|
|
TestWriteRead_InsDelColRow(2, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_3_BIFF8;
|
|
// delete column 0
|
|
begin
|
|
TestWriteRead_InsDelColRow(3, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_4_BIFF8;
|
|
// delete column 2
|
|
begin
|
|
TestWriteRead_InsDelColRow(4, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_5_BIFF8;
|
|
// delete last column
|
|
begin
|
|
TestWriteRead_InsDelColRow(5, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_6_BIFF8;
|
|
// insert row before first one
|
|
begin
|
|
TestWriteRead_InsDelColRow(6, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_7_BIFF8;
|
|
// insert row before #2
|
|
begin
|
|
TestWriteRead_InsDelColRow(7, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_8_BIFF8;
|
|
// insert row before last one
|
|
begin
|
|
TestWriteRead_InsDelColRow(8, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_9_BIFF8;
|
|
// delete first row
|
|
begin
|
|
TestWriteRead_InsDelColRow(9, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_10_BIFF8;
|
|
// delete row #2
|
|
begin
|
|
TestWriteRead_InsDelColRow(10, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_11_BIFF8;
|
|
// delete last row
|
|
begin
|
|
TestWriteRead_InsDelColRow(11, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_12_BIFF8;
|
|
// insert column before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(12, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_13_BIFF8;
|
|
// insert column after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(13, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_14_BIFF8;
|
|
// insert row before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(14, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_15_BIFF8;
|
|
// insert row after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(15, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_16_BIFF8;
|
|
// delete column before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(16, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_17_BIFF8;
|
|
// delete column after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(17, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_18_BIFF8;
|
|
// delete column containing a cell used in formula
|
|
begin
|
|
TestWriteRead_InsDelColRow(18, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_19_BIFF8;
|
|
// delete row before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(19, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_20_BIFF8;
|
|
// delete row after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(20, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_21_BIFF8;
|
|
// delete row containing a cell used in formula
|
|
begin
|
|
TestWriteRead_InsDelColRow(21, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_22_BIFF8;
|
|
// no insert/delete, just test merged cell block
|
|
begin
|
|
TestWriteRead_InsDelColRow(22, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_23_BIFF8;
|
|
// insert column before merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(23, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_24_BIFF8;
|
|
// insert column through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(24, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_25_BIFF8;
|
|
// insert column behind merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(25, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_26_BIFF8;
|
|
// insert row above merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(26, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_27_BIFF8;
|
|
// insert row through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(27, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_28_BIFF8;
|
|
// insert row below merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(28, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColBeforeMerge_BIFF8;
|
|
// delete column before merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(29, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColInMerge_BIFF8;
|
|
// delete column through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(30, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColAfterMerge_BIFF8;
|
|
// delete column behind merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(31, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_32_BIFF8;
|
|
// delete row above merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(32, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_33_BIFF8;
|
|
// delete row through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(33, sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_34_BIFF8;
|
|
// delete row below merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(34, sfExcel8);
|
|
end;
|
|
|
|
|
|
{ -----------------------------------------------------------------------------}
|
|
{ OOXML Tests }
|
|
{ -----------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_0_OOXML;
|
|
// insert a column before the first one
|
|
begin
|
|
TestWriteRead_InsDelColRow(0, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_1_OOXML;
|
|
// insert a column before column 2
|
|
begin
|
|
TestWriteRead_InsDelColRow(1, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_2_OOXML;
|
|
// insert a column before the last one
|
|
begin
|
|
TestWriteRead_InsDelColRow(2, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_3_OOXML;
|
|
// delete column 0
|
|
begin
|
|
TestWriteRead_InsDelColRow(3, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_4_OOXML;
|
|
// delete column 2
|
|
begin
|
|
TestWriteRead_InsDelColRow(4, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_5_OOXML;
|
|
// delete last column
|
|
begin
|
|
TestWriteRead_InsDelColRow(5, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_6_OOXML;
|
|
// insert row before first one
|
|
begin
|
|
TestWriteRead_InsDelColRow(6, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_7_OOXML;
|
|
// insert row before #2
|
|
begin
|
|
TestWriteRead_InsDelColRow(7, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_8_OOXML;
|
|
// insert row before last one
|
|
begin
|
|
TestWriteRead_InsDelColRow(8, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_9_OOXML;
|
|
// delete first row
|
|
begin
|
|
TestWriteRead_InsDelColRow(9, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_10_OOXML;
|
|
// delete row #2
|
|
begin
|
|
TestWriteRead_InsDelColRow(10, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_11_OOXML;
|
|
// delete last row
|
|
begin
|
|
TestWriteRead_InsDelColRow(11, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_12_OOXML;
|
|
// insert column before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(12, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_13_OOXML;
|
|
// insert column after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(13, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_14_OOXML;
|
|
// insert row before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(14, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_15_OOXML;
|
|
// insert row after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(15, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_16_OOXML;
|
|
// delete column before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(16, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_17_OOXML;
|
|
// delete column after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(17, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_18_OOXML;
|
|
// delete column containing a cell used in formula
|
|
begin
|
|
TestWriteRead_InsDelColRow(18, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_19_OOXML;
|
|
// delete row before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(19, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_20_OOXML;
|
|
// delete row after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(20, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_21_OOXML;
|
|
// delete row containing a cell used in formula
|
|
begin
|
|
TestWriteRead_InsDelColRow(21, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_22_OOXML;
|
|
// no insert/delete, just test merged cell block
|
|
begin
|
|
TestWriteRead_InsDelColRow(22, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_23_OOXML;
|
|
// insert column before merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(23, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_24_OOXML;
|
|
// insert column through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(24, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_25_OOXML;
|
|
// insert column behind merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(25, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_26_OOXML;
|
|
// insert row above merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(26, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_27_OOXML;
|
|
// insert row through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(27, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_28_OOXML;
|
|
// insert row below merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(28, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColBeforeMerge_OOXML;
|
|
// delete column before merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(29, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColInMerge_OOXML;
|
|
// delete column through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(30, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColAfterMerge_OOXML;
|
|
// delete column behind merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(31, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_32_OOXML;
|
|
// delete row above merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(32, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_33_OOXML;
|
|
// delete row through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(33, sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_34_OOXML;
|
|
// delete row below merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(34, sfOOXML);
|
|
end;
|
|
|
|
|
|
{ -----------------------------------------------------------------------------}
|
|
{ OpenDocument Tests }
|
|
{ -----------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_0_ODS;
|
|
// insert a column before the first one
|
|
begin
|
|
TestWriteRead_InsDelColRow(0, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_1_ODS;
|
|
// insert a column before column 2
|
|
begin
|
|
TestWriteRead_InsDelColRow(1, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_2_ODS;
|
|
// insert a column before the last one
|
|
begin
|
|
TestWriteRead_InsDelColRow(2, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_3_ODS;
|
|
// delete column 0
|
|
begin
|
|
TestWriteRead_InsDelColRow(3, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_4_ODS;
|
|
// delete column 2
|
|
begin
|
|
TestWriteRead_InsDelColRow(4, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_5_ODS;
|
|
// delete last column
|
|
begin
|
|
TestWriteRead_InsDelColRow(5, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_6_ODS;
|
|
// insert row before first one
|
|
begin
|
|
TestWriteRead_InsDelColRow(6, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_7_ODS;
|
|
// insert row before #2
|
|
begin
|
|
TestWriteRead_InsDelColRow(7, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_8_ODS;
|
|
// insert row before last one
|
|
begin
|
|
TestWriteRead_InsDelColRow(8, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_9_ODS;
|
|
// delete first row
|
|
begin
|
|
TestWriteRead_InsDelColRow(9, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_10_ODS;
|
|
// delete row #2
|
|
begin
|
|
TestWriteRead_InsDelColRow(10, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_11_ODS;
|
|
// delete last row
|
|
begin
|
|
TestWriteRead_InsDelColRow(11, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_12_ODS;
|
|
// insert column before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(12, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_13_ODS;
|
|
// insert column after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(13, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_14_ODS;
|
|
// insert row before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(14, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_15_ODS;
|
|
// insert row after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(15, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_16_ODS;
|
|
// delete column before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(16, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_17_ODS;
|
|
// delete column after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(17, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_18_ODS;
|
|
// delete column containing a cell used in formula
|
|
begin
|
|
TestWriteRead_InsDelColRow(18, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_19_ODS;
|
|
// delete row before formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(19, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_20_ODS;
|
|
// delete row after formula cell
|
|
begin
|
|
TestWriteRead_InsDelColRow(20, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_21_ODS;
|
|
// delete row containing a cell used in formula
|
|
begin
|
|
TestWriteRead_InsDelColRow(21, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_22_ODS;
|
|
// no insert/delete, just test merged cell block
|
|
begin
|
|
TestWriteRead_InsDelColRow(22, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_23_ODS;
|
|
// insert column before merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(23, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_24_ODS;
|
|
// insert column through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(24, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_25_ODS;
|
|
// insert column behind merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(25, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_26_ODS;
|
|
// insert row above merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(26, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_27_ODS;
|
|
// insert row through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(27, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_28_ODS;
|
|
// insert row below merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(28, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColBeforeMerge_ODS;
|
|
// delete column before merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(29, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColInMerge_ODS;
|
|
begin
|
|
TestWriteRead_InsDelColRow(30, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_DelColAfterMerge_ODS;
|
|
// delete column behind merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(31, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_32_ODS;
|
|
// delete row above merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(32, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_33_ODS;
|
|
// delete row through merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(33, sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteRead_InsDelColRow_Tests.TestWriteRead_InsDelColRow_34_ODS;
|
|
// delete row below merged block
|
|
begin
|
|
TestWriteRead_InsDelColRow(34, sfOpenDocument);
|
|
end;
|
|
|
|
|
|
|
|
initialization
|
|
RegisterTest(TSpreadWriteRead_InsDelColRow_Tests);
|
|
InitTestData;
|
|
|
|
end.
|
|
|