diff --git a/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingBasicTest.php b/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingBasicTest.php index ce2248640..20f6ed8d5 100644 --- a/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingBasicTest.php +++ b/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingBasicTest.php @@ -4,39 +4,30 @@ namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls; use PhpOffice\PhpSpreadsheet\Reader\Xls; use PhpOffice\PhpSpreadsheet\Style\Conditional; -use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; use PHPUnit\Framework\TestCase; class ConditionalFormattingBasicTest extends TestCase { - /** - * @var Worksheet - */ - protected $sheet; - - protected function setUp(): void - { - $filename = 'tests/data/Reader/XLS/CF_Basic_Comparisons.xls'; - $reader = new Xls(); - $spreadsheet = $reader->load($filename); - $this->sheet = $spreadsheet->getActiveSheet(); - } - /** * @dataProvider conditionalFormattingProvider */ public function testReadConditionalFormatting(string $expectedRange, array $expectedRules): void { - $hasConditionalStyles = $this->sheet->conditionalStylesExists($expectedRange); + $filename = 'tests/data/Reader/XLS/CF_Basic_Comparisons.xls'; + $reader = new Xls(); + $spreadsheet = $reader->load($filename); + $sheet = $spreadsheet->getActiveSheet(); + $hasConditionalStyles = $sheet->conditionalStylesExists($expectedRange); self::assertTrue($hasConditionalStyles); - $conditionalStyles = $this->sheet->getConditionalStyles($expectedRange); + $conditionalStyles = $sheet->getConditionalStyles($expectedRange); foreach ($conditionalStyles as $index => $conditionalStyle) { self::assertSame($expectedRules[$index]['type'], $conditionalStyle->getConditionType()); self::assertSame($expectedRules[$index]['operator'], $conditionalStyle->getOperatorType()); self::assertSame($expectedRules[$index]['conditions'], $conditionalStyle->getConditions()); } + $spreadsheet->disconnectWorksheets(); } public function conditionalFormattingProvider(): array diff --git a/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingExpressionTest.php b/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingExpressionTest.php index 6cc566c1f..a9cce8c32 100644 --- a/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingExpressionTest.php +++ b/tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingExpressionTest.php @@ -4,39 +4,30 @@ namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls; use PhpOffice\PhpSpreadsheet\Reader\Xls; use PhpOffice\PhpSpreadsheet\Style\Conditional; -use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; use PHPUnit\Framework\TestCase; class ConditionalFormattingExpressionTest extends TestCase { - /** - * @var Worksheet - */ - protected $sheet; - - protected function setUp(): void - { - $filename = 'tests/data/Reader/XLS/CF_Expression_Comparisons.xls'; - $reader = new Xls(); - $spreadsheet = $reader->load($filename); - $this->sheet = $spreadsheet->getActiveSheet(); - } - /** * @dataProvider conditionalFormattingProvider */ public function testReadConditionalFormatting(string $expectedRange, array $expectedRule): void { - $hasConditionalStyles = $this->sheet->conditionalStylesExists($expectedRange); + $filename = 'tests/data/Reader/XLS/CF_Expression_Comparisons.xls'; + $reader = new Xls(); + $spreadsheet = $reader->load($filename); + $sheet = $spreadsheet->getActiveSheet(); + $hasConditionalStyles = $sheet->conditionalStylesExists($expectedRange); self::assertTrue($hasConditionalStyles); - $conditionalStyles = $this->sheet->getConditionalStyles($expectedRange); + $conditionalStyles = $sheet->getConditionalStyles($expectedRange); foreach ($conditionalStyles as $index => $conditionalStyle) { self::assertSame($expectedRule[$index]['type'], $conditionalStyle->getConditionType()); self::assertSame($expectedRule[$index]['operator'], $conditionalStyle->getOperatorType()); self::assertSame($expectedRule[$index]['conditions'], $conditionalStyle->getConditions()); } + $spreadsheet->disconnectWorksheets(); } public function conditionalFormattingProvider(): array diff --git a/tests/PhpSpreadsheetTests/Reader/Xls/DataValidationTest.php b/tests/PhpSpreadsheetTests/Reader/Xls/DataValidationTest.php index bdefa17e2..129fb96f1 100644 --- a/tests/PhpSpreadsheetTests/Reader/Xls/DataValidationTest.php +++ b/tests/PhpSpreadsheetTests/Reader/Xls/DataValidationTest.php @@ -4,36 +4,27 @@ namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls; use PhpOffice\PhpSpreadsheet\Cell\DataValidation; use PhpOffice\PhpSpreadsheet\Reader\Xls; -use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; use PHPUnit\Framework\TestCase; class DataValidationTest extends TestCase { - /** - * @var Worksheet - */ - protected $sheet; - - protected function setUp(): void - { - $filename = 'tests/data/Reader/XLS/DataValidation.xls'; - $reader = new Xls(); - $spreadsheet = $reader->load($filename); - $this->sheet = $spreadsheet->getActiveSheet(); - } - /** * @dataProvider dataValidationProvider */ public function testDataValidation(string $expectedRange, array $expectedRule): void { - $hasDataValidation = $this->sheet->dataValidationExists($expectedRange); + $filename = 'tests/data/Reader/XLS/DataValidation.xls'; + $reader = new Xls(); + $spreadsheet = $reader->load($filename); + $sheet = $spreadsheet->getActiveSheet(); + $hasDataValidation = $sheet->dataValidationExists($expectedRange); self::assertTrue($hasDataValidation); - $dataValidation = $this->sheet->getDataValidation($expectedRange); + $dataValidation = $sheet->getDataValidation($expectedRange); self::assertSame($expectedRule['type'], $dataValidation->getType()); self::assertSame($expectedRule['operator'], $dataValidation->getOperator()); self::assertSame($expectedRule['formula'], $dataValidation->getFormula1()); + $spreadsheet->disconnectWorksheets(); } public function dataValidationProvider(): array diff --git a/tests/PhpSpreadsheetTests/Reader/Xls/FormulasTest.php b/tests/PhpSpreadsheetTests/Reader/Xls/FormulasTest.php new file mode 100644 index 000000000..c27972054 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Reader/Xls/FormulasTest.php @@ -0,0 +1,43 @@ +load($filename); + $sheet = $spreadsheet->getActiveSheet(); + $originalArray = $sheet->toArray(null, false, false, false); + + $newSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls'); + $spreadsheet->disconnectWorksheets(); + $newWorksheet = $newSpreadsheet->getActiveSheet(); + $newArray = $newWorksheet->toArray(null, false, false, false); + self::assertSame($originalArray, $newArray); + $newSpreadsheet->disconnectWorksheets(); + } + + public function testDatabaseFormulas(): void + { + // This file was created with Excel 2003. + $filename = 'tests/data/Reader/XLS/formulas.database.xls'; + $reader = new Xls(); + $spreadsheet = $reader->load($filename); + $sheet = $spreadsheet->getActiveSheet(); + $originalArray = $sheet->toArray(null, false, false, false); + + $newSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls'); + $spreadsheet->disconnectWorksheets(); + $newWorksheet = $newSpreadsheet->getActiveSheet(); + $newArray = $newWorksheet->toArray(null, false, false, false); + self::assertSame($originalArray, $newArray); + $newSpreadsheet->disconnectWorksheets(); + } +} diff --git a/tests/PhpSpreadsheetTests/Reader/Xls/HiddenWorksheetTest.php b/tests/PhpSpreadsheetTests/Reader/Xls/HiddenWorksheetTest.php index e31b38804..aa50599c3 100644 --- a/tests/PhpSpreadsheetTests/Reader/Xls/HiddenWorksheetTest.php +++ b/tests/PhpSpreadsheetTests/Reader/Xls/HiddenWorksheetTest.php @@ -15,9 +15,11 @@ class HiddenWorksheetTest extends TestCase $spreadsheet = $reader->load($filename); $assertions = $this->worksheetAssertions(); + $sheetCount = 0; foreach ($spreadsheet->getAllSheets() as $worksheet) { + ++$sheetCount; if (!array_key_exists($worksheet->getTitle(), $assertions)) { - continue; + self::fail('Unexpected worksheet' . $worksheet->getTitle()); } $sheetAssertions = $assertions[$worksheet->getTitle()]; @@ -30,6 +32,7 @@ class HiddenWorksheetTest extends TestCase ); } } + self::assertCount($sheetCount, $assertions); $spreadsheet->disconnectWorksheets(); } diff --git a/tests/PhpSpreadsheetTests/Reader/Xls/PageSetupTest.php b/tests/PhpSpreadsheetTests/Reader/Xls/PageSetupTest.php index 034ce6ee7..f90595465 100644 --- a/tests/PhpSpreadsheetTests/Reader/Xls/PageSetupTest.php +++ b/tests/PhpSpreadsheetTests/Reader/Xls/PageSetupTest.php @@ -3,7 +3,6 @@ namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls; use PhpOffice\PhpSpreadsheet\Reader\Xls; -use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup; use PHPUnit\Framework\TestCase; @@ -13,25 +12,18 @@ class PageSetupTest extends TestCase private const MARGIN_UNIT_CONVERSION = 2.54; // Inches to cm - /** - * @var Spreadsheet - */ - private $spreadsheet; - - protected function setup(): void + public function testPageSetup(): void { $filename = 'tests/data/Reader/XLS/PageSetup.xls'; $reader = new Xls(); - $this->spreadsheet = $reader->load($filename); - } - - public function testPageSetup(): void - { + $spreadsheet = $reader->load($filename); $assertions = $this->pageSetupAssertions(); - foreach ($this->spreadsheet->getAllSheets() as $worksheet) { + $sheetCount = 0; + foreach ($spreadsheet->getAllSheets() as $worksheet) { + ++$sheetCount; if (!array_key_exists($worksheet->getTitle(), $assertions)) { - continue; + self::fail('Unexpected worksheet ' . $worksheet->getTitle()); } $sheetAssertions = $assertions[$worksheet->getTitle()]; @@ -45,15 +37,22 @@ class PageSetupTest extends TestCase ); } } + self::assertCount($sheetCount, $assertions); + $spreadsheet->disconnectWorksheets(); } public function testPageMargins(): void { + $filename = 'tests/data/Reader/XLS/PageSetup.xls'; + $reader = new Xls(); + $spreadsheet = $reader->load($filename); $assertions = $this->pageMarginAssertions(); - foreach ($this->spreadsheet->getAllSheets() as $worksheet) { + $sheetCount = 0; + foreach ($spreadsheet->getAllSheets() as $worksheet) { + ++$sheetCount; if (!array_key_exists($worksheet->getTitle(), $assertions)) { - continue; + self::fail('Unexpected worksheet ' . $worksheet->getTitle()); } $sheetAssertions = $assertions[$worksheet->getTitle()]; @@ -68,6 +67,8 @@ class PageSetupTest extends TestCase ); } } + self::assertCount($sheetCount, $assertions); + $spreadsheet->disconnectWorksheets(); } private function pageSetupAssertions(): array diff --git a/tests/data/Reader/XLS/formulas.database.xls b/tests/data/Reader/XLS/formulas.database.xls new file mode 100644 index 000000000..bd18d0eb5 Binary files /dev/null and b/tests/data/Reader/XLS/formulas.database.xls differ diff --git a/tests/data/Reader/XLS/formulas.xls b/tests/data/Reader/XLS/formulas.xls new file mode 100644 index 000000000..e18c80e69 Binary files /dev/null and b/tests/data/Reader/XLS/formulas.xls differ