
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8126 8e941d3f-bd1b-0410-a28a-d453659cc2b4
831 lines
26 KiB
ObjectPascal
831 lines
26 KiB
ObjectPascal
{ Protection tests
|
|
These unit tests are writing out to and reading back from file.
|
|
}
|
|
|
|
unit protectiontests;
|
|
|
|
{$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;
|
|
|
|
type
|
|
{ TSpreadWriteReadProtectionTests }
|
|
//Write to xls/xml file and read back
|
|
TSpreadWriteReadProtectionTests = class(TTestCase)
|
|
private
|
|
protected
|
|
// Set up expected values:
|
|
procedure SetUp; override;
|
|
procedure TearDown; override;
|
|
procedure TestWriteRead_WorkbookProtection(AFormat: TsSpreadsheetFormat;
|
|
ACondition: Integer);
|
|
procedure TestWriteRead_WorksheetProtection(AFormat: TsSpreadsheetFormat;
|
|
ACondition: Integer);
|
|
procedure TestWriteRead_CellProtection(AFormat: TsSpreadsheetFormat);
|
|
procedure TestWriteRead_Passwords(AFormat: TsSpreadsheetFormat);
|
|
published
|
|
// Writes out protection & reads back.
|
|
|
|
{ BIFF2 protection tests }
|
|
procedure TestWriteRead_BIFF2_WorkbookProtection_None;
|
|
procedure TestWriteRead_BIFF2_WorkbookProtection_Struct;
|
|
procedure TestWriteRead_BIFF2_WorkbookProtection_Win;
|
|
procedure TestWriteRead_BIFF2_WorkbookProtection_StructWin;
|
|
|
|
procedure TestWriteRead_BIFF2_WorksheetProtection_Default;
|
|
procedure TestWriteRead_BIFF2_WorksheetProtection_Objects;
|
|
|
|
procedure TestWriteRead_BIFF2_CellProtection;
|
|
procedure TestWriteRead_BIFF2_Passwords;
|
|
|
|
{ BIFF5 protection tests }
|
|
procedure TestWriteRead_BIFF5_WorkbookProtection_None;
|
|
procedure TestWriteRead_BIFF5_WorkbookProtection_Struct;
|
|
procedure TestWriteRead_BIFF5_WorkbookProtection_Win;
|
|
procedure TestWriteRead_BIFF5_WorkbookProtection_StructWin;
|
|
|
|
procedure TestWriteRead_BIFF5_WorksheetProtection_Default;
|
|
procedure TestWriteRead_BIFF5_WorksheetProtection_SelectLockedCells;
|
|
procedure TestWriteRead_BIFF5_WorksheetProtection_SelectUnlockedCells;
|
|
procedure TestWriteRead_BIFF5_WorksheetProtection_Objects;
|
|
|
|
procedure TestWriteRead_BIFF5_CellProtection;
|
|
procedure TestWriteRead_BIFF5_Passwords;
|
|
|
|
{ BIFF8 protection tests }
|
|
procedure TestWriteRead_BIFF8_WorkbookProtection_None;
|
|
procedure TestWriteRead_BIFF8_WorkbookProtection_Struct;
|
|
procedure TestWriteRead_BIFF8_WorkbookProtection_Win;
|
|
procedure TestWriteRead_BIFF8_WorkbookProtection_StructWin;
|
|
|
|
procedure TestWriteRead_BIFF8_WorksheetProtection_Default;
|
|
procedure TestWriteRead_BIFF8_WorksheetProtection_SelectLockedCells;
|
|
procedure TestWriteRead_BIFF8_WorksheetProtection_SelectUnlockedCells;
|
|
procedure TestWriteRead_BIFF8_WorksheetProtection_Objects;
|
|
|
|
procedure TestWriteRead_BIFF8_CellProtection;
|
|
procedure TestWriteRead_BIFF8_Passwords;
|
|
|
|
{ OOXML protection tests }
|
|
procedure TestWriteRead_OOXML_WorkbookProtection_None;
|
|
procedure TestWriteRead_OOXML_WorkbookProtection_Struct;
|
|
procedure TestWriteRead_OOXML_WorkbookProtection_Win;
|
|
procedure TestWriteRead_OOXML_WorkbookProtection_StructWin;
|
|
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_Default;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_FormatCells;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_FormatColumns;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_FormatRows;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_DeleteColumns;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_DeleteRows;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_InsertColumns;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_InsertHyperlinks;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_InsertRows;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_Sort;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_SelectLockedCells;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_SelectUnlockedCells;
|
|
procedure TestWriteRead_OOXML_WorksheetProtection_Objects;
|
|
|
|
procedure TestWriteRead_OOXML_CellProtection;
|
|
procedure TestWriteRead_OOXML_Passwords;
|
|
|
|
{ Excedl2003/XML protection tests }
|
|
procedure TestWriteRead_XML_WorkbookProtection_None;
|
|
procedure TestWriteRead_XML_WorkbookProtection_Struct;
|
|
procedure TestWriteRead_XML_WorkbookProtection_Win;
|
|
procedure TestWriteRead_XML_WorkbookProtection_StructWin;
|
|
|
|
procedure TestWriteRead_XML_WorksheetProtection_Default;
|
|
procedure TestWriteRead_XML_WorksheetProtection_FormatCells;
|
|
procedure TestWriteRead_XML_WorksheetProtection_FormatColumns;
|
|
procedure TestWriteRead_XML_WorksheetProtection_FormatRows;
|
|
procedure TestWriteRead_XML_WorksheetProtection_DeleteColumns;
|
|
procedure TestWriteRead_XML_WorksheetProtection_DeleteRows;
|
|
procedure TestWriteRead_XML_WorksheetProtection_InsertColumns;
|
|
procedure TestWriteRead_XML_WorksheetProtection_InsertHyperlinks;
|
|
procedure TestWriteRead_XML_WorksheetProtection_InsertRows;
|
|
procedure TestWriteRead_XML_WorksheetProtection_Sort;
|
|
procedure TestWriteRead_XML_WorksheetProtection_SelectLockedCells;
|
|
procedure TestWriteRead_XML_WorksheetProtection_SelectUnlockedCells;
|
|
procedure TestWriteRead_XML_WorksheetProtection_Objects;
|
|
|
|
procedure TestWriteRead_XML_CellProtection;
|
|
//procedure TestWriteRead_XML_Passwords; // not allowed
|
|
|
|
{ ODS protection tests }
|
|
procedure TestWriteRead_ODS_WorkbookProtection_None;
|
|
procedure TestWriteRead_ODS_WorkbookProtection_Struct;
|
|
//procedure TestWriteRead_ODS_WorkbookProtection_Win;
|
|
//procedure TestWriteRead_ODS_WorkbookProtection_StructWin;
|
|
|
|
procedure TestWriteRead_ODS_WorksheetProtection_Default;
|
|
procedure TestWriteRead_ODS_WorksheetProtection_SelectLockedCells;
|
|
procedure TestWriteRead_ODS_WorksheetProtection_SelectUnlockedCells;
|
|
|
|
procedure TestWriteRead_ODS_CellProtection;
|
|
procedure TestWriteRead_ODS_Passwords;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
fpsUtils;
|
|
|
|
const
|
|
ProtectionSheet = 'Protection';
|
|
|
|
{ TSpreadWriteReadProtectionTests }
|
|
|
|
procedure TSpreadWriteReadProtectionTests.SetUp;
|
|
begin
|
|
inherited SetUp;
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TearDown;
|
|
begin
|
|
inherited TearDown;
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_WorkbookProtection(
|
|
AFormat: TsSpreadsheetFormat; ACondition: Integer);
|
|
var
|
|
MyWorkbook: TsWorkbook;
|
|
TempFile: string; //write xls/xml to this file and read back from it
|
|
expected, actual: TsWorkbookProtections;
|
|
msg: String;
|
|
begin
|
|
TempFile := GetTempFileName;
|
|
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorkBook.AddWorksheet(ProtectionSheet);
|
|
case ACondition of
|
|
0: expected := [];
|
|
1: expected := [bpLockStructure];
|
|
2: expected := [bpLockWindows];
|
|
3: expected := [bpLockStructure, bpLockWindows];
|
|
end;
|
|
MyWorkbook.Protection := expected;
|
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
|
finally
|
|
MyWorkbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
|
actual := MyWorkbook.Protection;
|
|
if actual <> expected then begin
|
|
msg := 'Test saved workbook protection mismatch: ';
|
|
case ACondition of
|
|
0: fail(msg + 'no protection');
|
|
1: fail(msg + 'bpLockStructure');
|
|
2: fail(msg + 'bpLockWindows');
|
|
3: fail(msg + 'bpLockStructure, bpLockWindows');
|
|
end;
|
|
end;
|
|
|
|
finally
|
|
MyWorkbook.Free;
|
|
DeleteFile(TempFile);
|
|
end;
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_WorksheetProtection(
|
|
AFormat: TsSpreadsheetFormat; ACondition: Integer);
|
|
var
|
|
MyWorkbook: TsWorkbook;
|
|
MyWorksheet: TsWorksheet;
|
|
TempFile: string; //write xls/xml to this file and read back from it
|
|
expected, actual: TsWorksheetProtections;
|
|
msg: String = '';
|
|
begin
|
|
TempFile := GetTempFileName;
|
|
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorksheet := MyWorkBook.AddWorksheet(ProtectionSheet);
|
|
expected := DEFAULT_SHEET_PROTECTION;
|
|
case ACondition of
|
|
0: ;
|
|
1: Exclude(expected, spFormatCells);
|
|
2: Exclude(expected, spFormatColumns);
|
|
3: Exclude(expected, spFormatRows);
|
|
4: Exclude(expected, spDeleteColumns);
|
|
5: Exclude(expected, spDeleteRows);
|
|
6: Exclude(expected, spInsertColumns);
|
|
7: Exclude(expected, spInsertHyperlinks);
|
|
8: Exclude(expected, spInsertRows);
|
|
9: Exclude(expected, spSort);
|
|
10: Exclude(expected, spSelectLockedCells);
|
|
11: Exclude(expected, spSelectUnlockedCells);
|
|
12: Include(expected, spObjects);
|
|
end;
|
|
{
|
|
case ACondition of
|
|
0: expected := [];
|
|
1: expected := [spFormatCells];
|
|
2: expected := [spFormatColumns];
|
|
3: expected := [spFormatRows];
|
|
4: expected := [spDeleteColumns];
|
|
5: expected := [spDeleteRows];
|
|
6: expected := [spInsertColumns];
|
|
7: expected := [spInsertHyperlinks];
|
|
8: expected := [spInsertRows];
|
|
9: expected := [spSort];
|
|
10: expected := [spSelectLockedCells];
|
|
11: expected := [spSelectUnlockedCells];
|
|
12: expected := [spObjects];
|
|
13: expected := ALL_SHEET_PROTECTIONS;
|
|
end;
|
|
}
|
|
MyWorksheet.Protection := expected;
|
|
MyWorksheet.Protect(true);
|
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
|
finally
|
|
MyWorkbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
|
MyWorksheet := MyWorkbook.GetFirstWorksheet;
|
|
if (ACondition > 0) and not MyWorksheet.IsProtected then
|
|
fail(msg + 'Sheet protection not active');
|
|
|
|
actual := MyWorksheet.Protection;
|
|
// if actual <> [] then actual := actual - [spCells];
|
|
msg := 'Test saved worksheet protection mismatch: ';
|
|
if actual <> expected then
|
|
case ACondition of
|
|
0: fail(msg + 'default protection');
|
|
1: fail(msg + 'spFormatCells');
|
|
2: fail(msg + 'spFormatColumns');
|
|
3: fail(msg + 'spFormatRows');
|
|
4: fail(msg + 'spDeleteColumns');
|
|
5: fail(msg + 'spDeleteRows');
|
|
6: fail(msg + 'spInsertColumns');
|
|
7: fail(msg + 'spInsertHyperlinks');
|
|
8: fail(msg + 'spInsertRows');
|
|
9: fail(msg + 'spSort');
|
|
10: fail(msg + 'spSelectLockedCells');
|
|
11: fail(msg + 'spSelectUnlockedCells');
|
|
12: fail(msg + 'spObjects');
|
|
end;
|
|
|
|
finally
|
|
MyWorkbook.Free;
|
|
DeleteFile(TempFile);
|
|
end;
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_CellProtection(
|
|
AFormat: TsSpreadsheetFormat);
|
|
var
|
|
MyWorkbook: TsWorkbook;
|
|
MyWorksheet: TsWorksheet;
|
|
cell: PCell;
|
|
TempFile: string; //write xls/xml to this file and read back from it
|
|
actual: TsCellProtections;
|
|
msg: String;
|
|
begin
|
|
TempFile := GetTempFileName;
|
|
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorksheet := MyWorkBook.AddWorksheet(ProtectionSheet);
|
|
// A1 --> lock cell
|
|
cell := Myworksheet.WriteText(0, 0, 'Protected');
|
|
MyWorksheet.WriteCellProtection(cell, [cpLockCell]);
|
|
// A2 --> not protected at all
|
|
cell := MyWorksheet.WriteText(1, 0, 'Not protected');
|
|
MyWorksheet.WriteCellProtection(cell, []);
|
|
// B1 --> lock cell & hide formulas
|
|
cell := Myworksheet.WriteFormula(0, 1, '=A1');
|
|
MyWorksheet.WriteCellProtection(cell, [cpLockCell, cpHideFormulas]);
|
|
// B2 --> hide formula only
|
|
cell := MyWorksheet.WriteFormula(1, 1, '=A2');
|
|
Myworksheet.WriteCellProtection(Cell, [cpHideFormulas]);
|
|
MyWorksheet.Protect(true);
|
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
|
finally
|
|
MyWorkbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
|
MyWorksheet := MyWorkbook.GetFirstWorksheet;
|
|
msg := 'Test saved worksheet protection mismatch: ';
|
|
if not MyWorksheet.IsProtected then begin
|
|
fail(msg + 'Sheet protection not active');
|
|
exit;
|
|
end;
|
|
|
|
cell := MyWorksheet.FindCell(0, 0);
|
|
if cell = nil then
|
|
fail(msg + 'Protected cell A1 not found.');
|
|
actual := MyWorksheet.ReadCellProtection(cell);
|
|
if actual <> [cpLockCell] then
|
|
fail(msg + 'cell A1 protection = [cpLockCells]');
|
|
|
|
cell := MyWorksheet.FindCell(1, 0);
|
|
if cell = nil then
|
|
fail(msg + 'Unprotected cell A2 not found.');
|
|
actual := MyWorksheet.ReadCellProtection(cell);
|
|
if actual <> [] then
|
|
fail(msg + 'cell A2 protection = []');
|
|
|
|
cell := Myworksheet.FindCell(0, 1);
|
|
if cell = nil then
|
|
fail(msg + 'Cell B1 not found.');
|
|
actual := MyWorksheet.ReadCellProtection(cell);
|
|
if actual <> [cpLockCell, cpHideFormulas] then
|
|
fail(msg + 'cell B1 protection = [cpLockCells, cpHideFormulas]');
|
|
|
|
cell := MyWorksheet.FindCell(1, 1);
|
|
if cell = nil then
|
|
fail(msg + 'Cell B2 protection = [cpHideFormulas]');
|
|
|
|
finally
|
|
MyWorkbook.Free;
|
|
DeleteFile(TempFile);
|
|
end;
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_Passwords(
|
|
AFormat: TsSpreadsheetFormat);
|
|
var
|
|
MyWorkbook: TsWorkbook;
|
|
MyWorksheet: TsWorksheet;
|
|
TempFile: string; //write xls/xml to this file and read back from it
|
|
bi, si, cinfo: TsCryptoInfo;
|
|
begin
|
|
TempFile := GetTempFileName;
|
|
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorksheet := MyWorkBook.AddWorksheet(ProtectionSheet);
|
|
|
|
MyWorkbook.Protection := [bpLockStructure];
|
|
InitCryptoInfo(bi);
|
|
bi.PasswordHash := 'ABCD';
|
|
bi.Algorithm := caExcel;
|
|
MyWorkbook.CryptoInfo := bi;
|
|
|
|
MyWorksheet.Protect(true);
|
|
if AFormat = sfExcel2 then
|
|
si := bi // in BIFF2: use the same crypto info for sheet and book
|
|
else begin
|
|
InitCryptoInfo(si);
|
|
si.PasswordHash := 'DCBA';
|
|
si.Algorithm := caExcel;
|
|
end;
|
|
MyWorksheet.CryptoInfo := si;
|
|
|
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
|
finally
|
|
MyWorkbook.Free;
|
|
end;
|
|
|
|
// Open the spreadsheet
|
|
MyWorkbook := TsWorkbook.Create;
|
|
try
|
|
MyWorkbook.ReadFromFile(TempFile, AFormat);
|
|
MyWorksheet := MyWorkbook.GetFirstWorksheet;
|
|
|
|
cInfo := MyWorkbook.CryptoInfo;
|
|
CheckEquals(
|
|
bi.PasswordHash, cinfo.PasswordHash,
|
|
'Workbook protection password hash mismatch'
|
|
);
|
|
|
|
cInfo := MyWorksheet.CryptoInfo;
|
|
CheckEquals(
|
|
si.PasswordHash, cinfo.PasswordHash,
|
|
'Worksheet protection password hash mismatch'
|
|
);
|
|
|
|
finally
|
|
MyWorkbook.Free;
|
|
DeleteFile(TempFile);
|
|
end;
|
|
end;
|
|
|
|
|
|
{------------------------------------------------------------------------------}
|
|
{ Tests for BIFF2 file format }
|
|
{------------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_WorkbookProtection_None;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel2, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_WorkbookProtection_Struct;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel2, 1);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_WorkbookProtection_Win;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel2, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_WorkbookProtection_StructWin;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel2, 3);
|
|
end;
|
|
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_WorksheetProtection_Default;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel2, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_WorksheetProtection_Objects;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel2, 12);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_CellProtection;
|
|
begin
|
|
TestWriteRead_CellProtection(sfExcel2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF2_Passwords;
|
|
begin
|
|
TestWriteRead_Passwords(sfExcel2);
|
|
end;
|
|
|
|
|
|
{------------------------------------------------------------------------------}
|
|
{ Tests for BIFF5 file format }
|
|
{------------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorkbookProtection_None;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel5, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorkbookProtection_Struct;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel5, 1);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorkbookProtection_Win;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel5, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorkbookProtection_StructWin;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel5, 3);
|
|
end;
|
|
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorksheetProtection_Default;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel5, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorksheetProtection_SelectLockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel5, 10);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorksheetProtection_SelectUnlockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel5, 11);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_WorksheetProtection_Objects;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel5, 12);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_CellProtection;
|
|
begin
|
|
TestWriteRead_CellProtection(sfExcel5);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF5_Passwords;
|
|
begin
|
|
TestWriteRead_Passwords(sfExcel5);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------}
|
|
{ Tests for BIFF8 file format }
|
|
{------------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorkbookProtection_None;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel8, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorkbookProtection_Struct;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel8, 1);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorkbookProtection_Win;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel8, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorkbookProtection_StructWin;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcel8, 3);
|
|
end;
|
|
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorksheetProtection_Default;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel8, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorksheetProtection_SelectLockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel8, 10);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorksheetProtection_SelectUnlockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel8, 11);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_WorksheetProtection_Objects;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcel8, 12);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_CellProtection;
|
|
begin
|
|
TestWriteRead_CellProtection(sfExcel8);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_BIFF8_Passwords;
|
|
begin
|
|
TestWriteRead_Passwords(sfExcel8);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------}
|
|
{ Tests for OOXML file format }
|
|
{------------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorkbookProtection_None;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOOXML, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorkbookProtection_Struct;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOOXML, 1);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorkbookProtection_Win;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOOXML, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorkbookProtection_StructWin;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOOXML, 3);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_Default;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_FormatCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 1);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_FormatColumns;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_FormatRows;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 3);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_DeleteColumns;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 4);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_DeleteRows;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 5);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_InsertColumns;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 6);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_InsertHyperlinks;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 7);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_InsertRows;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 8);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_Sort;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 9);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_SelectLockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 10);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_SelectUnlockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 11);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_WorksheetProtection_Objects;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOOXML, 12);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_CellProtection;
|
|
begin
|
|
TestWriteRead_CellProtection(sfOOXML);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_OOXML_Passwords;
|
|
begin
|
|
TestWriteRead_Passwords(sfOOXML);
|
|
end;
|
|
|
|
|
|
{------------------------------------------------------------------------------}
|
|
{ Tests for OOXML file format }
|
|
{------------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorkbookProtection_None;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcelXML, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorkbookProtection_Struct;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcelXML, 1);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorkbookProtection_Win;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcelXML, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorkbookProtection_StructWin;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfExcelXML, 3);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_Default;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_FormatCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 1);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_FormatColumns;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_FormatRows;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 3);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_DeleteColumns;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 4);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_DeleteRows;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 5);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_InsertColumns;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 6);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_InsertHyperlinks;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 7);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_InsertRows;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 8);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_Sort;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 9);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_SelectLockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 10);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_SelectUnlockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 11);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_WorksheetProtection_Objects;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfExcelXML, 12);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_XML_CellProtection;
|
|
begin
|
|
TestWriteRead_CellProtection(sfExcelXML);
|
|
end;
|
|
|
|
|
|
{------------------------------------------------------------------------------}
|
|
{ Tests for OpenDocument file format }
|
|
{------------------------------------------------------------------------------}
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_WorkbookProtection_None;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOpenDocument, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_WorkbookProtection_Struct;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOpenDocument, 1);
|
|
end;
|
|
{
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_WorkbookProtection_Win;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOpenDocument, 2);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_WorkbookProtection_StructWin;
|
|
begin
|
|
TestWriteRead_WorkbookProtection(sfOpenDocument, 3);
|
|
end;}
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_WorksheetProtection_Default;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOpenDocument, 0);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_WorksheetProtection_SelectLockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOpenDocument, 10);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_WorksheetProtection_SelectUnlockedCells;
|
|
begin
|
|
TestWriteRead_WorksheetProtection(sfOpenDocument, 11);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_CellProtection;
|
|
begin
|
|
TestWriteRead_CellProtection(sfOpenDocument);
|
|
end;
|
|
|
|
procedure TSpreadWriteReadProtectionTests.TestWriteRead_ODS_Passwords;
|
|
begin
|
|
TestWriteRead_Passwords(sfOpenDocument);
|
|
end;
|
|
|
|
|
|
initialization
|
|
RegisterTest(TSpreadWriteReadProtectionTests);
|
|
|
|
end.
|
|
|