Skip to content

Commit a2282ec

Browse files
authored
Additional Coverage for Reader Xls (#3340)
* Additional Coverage for Reader Xls More than 750 lines are newly covered, increasing overall coverage on my machine from 91.14% to 93.09%. * Update FormulasTest.php
1 parent e573b45 commit a2282ec

File tree

8 files changed

+82
-62
lines changed

8 files changed

+82
-62
lines changed

tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingBasicTest.php

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,30 @@
44

55
use PhpOffice\PhpSpreadsheet\Reader\Xls;
66
use PhpOffice\PhpSpreadsheet\Style\Conditional;
7-
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
87
use PHPUnit\Framework\TestCase;
98

109
class ConditionalFormattingBasicTest extends TestCase
1110
{
1211
/**
13-
* @var Worksheet
12+
* @dataProvider conditionalFormattingProvider
1413
*/
15-
protected $sheet;
16-
17-
protected function setUp(): void
14+
public function testReadConditionalFormatting(string $expectedRange, array $expectedRules): void
1815
{
1916
$filename = 'tests/data/Reader/XLS/CF_Basic_Comparisons.xls';
2017
$reader = new Xls();
2118
$spreadsheet = $reader->load($filename);
22-
$this->sheet = $spreadsheet->getActiveSheet();
23-
}
24-
25-
/**
26-
* @dataProvider conditionalFormattingProvider
27-
*/
28-
public function testReadConditionalFormatting(string $expectedRange, array $expectedRules): void
29-
{
30-
$hasConditionalStyles = $this->sheet->conditionalStylesExists($expectedRange);
19+
$sheet = $spreadsheet->getActiveSheet();
20+
$hasConditionalStyles = $sheet->conditionalStylesExists($expectedRange);
3121
self::assertTrue($hasConditionalStyles);
3222

33-
$conditionalStyles = $this->sheet->getConditionalStyles($expectedRange);
23+
$conditionalStyles = $sheet->getConditionalStyles($expectedRange);
3424

3525
foreach ($conditionalStyles as $index => $conditionalStyle) {
3626
self::assertSame($expectedRules[$index]['type'], $conditionalStyle->getConditionType());
3727
self::assertSame($expectedRules[$index]['operator'], $conditionalStyle->getOperatorType());
3828
self::assertSame($expectedRules[$index]['conditions'], $conditionalStyle->getConditions());
3929
}
30+
$spreadsheet->disconnectWorksheets();
4031
}
4132

4233
public function conditionalFormattingProvider(): array

tests/PhpSpreadsheetTests/Reader/Xls/ConditionalFormattingExpressionTest.php

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,30 @@
44

55
use PhpOffice\PhpSpreadsheet\Reader\Xls;
66
use PhpOffice\PhpSpreadsheet\Style\Conditional;
7-
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
87
use PHPUnit\Framework\TestCase;
98

109
class ConditionalFormattingExpressionTest extends TestCase
1110
{
1211
/**
13-
* @var Worksheet
12+
* @dataProvider conditionalFormattingProvider
1413
*/
15-
protected $sheet;
16-
17-
protected function setUp(): void
14+
public function testReadConditionalFormatting(string $expectedRange, array $expectedRule): void
1815
{
1916
$filename = 'tests/data/Reader/XLS/CF_Expression_Comparisons.xls';
2017
$reader = new Xls();
2118
$spreadsheet = $reader->load($filename);
22-
$this->sheet = $spreadsheet->getActiveSheet();
23-
}
24-
25-
/**
26-
* @dataProvider conditionalFormattingProvider
27-
*/
28-
public function testReadConditionalFormatting(string $expectedRange, array $expectedRule): void
29-
{
30-
$hasConditionalStyles = $this->sheet->conditionalStylesExists($expectedRange);
19+
$sheet = $spreadsheet->getActiveSheet();
20+
$hasConditionalStyles = $sheet->conditionalStylesExists($expectedRange);
3121
self::assertTrue($hasConditionalStyles);
3222

33-
$conditionalStyles = $this->sheet->getConditionalStyles($expectedRange);
23+
$conditionalStyles = $sheet->getConditionalStyles($expectedRange);
3424

3525
foreach ($conditionalStyles as $index => $conditionalStyle) {
3626
self::assertSame($expectedRule[$index]['type'], $conditionalStyle->getConditionType());
3727
self::assertSame($expectedRule[$index]['operator'], $conditionalStyle->getOperatorType());
3828
self::assertSame($expectedRule[$index]['conditions'], $conditionalStyle->getConditions());
3929
}
30+
$spreadsheet->disconnectWorksheets();
4031
}
4132

4233
public function conditionalFormattingProvider(): array

tests/PhpSpreadsheetTests/Reader/Xls/DataValidationTest.php

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,27 @@
44

55
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
66
use PhpOffice\PhpSpreadsheet\Reader\Xls;
7-
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
87
use PHPUnit\Framework\TestCase;
98

109
class DataValidationTest extends TestCase
1110
{
1211
/**
13-
* @var Worksheet
12+
* @dataProvider dataValidationProvider
1413
*/
15-
protected $sheet;
16-
17-
protected function setUp(): void
14+
public function testDataValidation(string $expectedRange, array $expectedRule): void
1815
{
1916
$filename = 'tests/data/Reader/XLS/DataValidation.xls';
2017
$reader = new Xls();
2118
$spreadsheet = $reader->load($filename);
22-
$this->sheet = $spreadsheet->getActiveSheet();
23-
}
24-
25-
/**
26-
* @dataProvider dataValidationProvider
27-
*/
28-
public function testDataValidation(string $expectedRange, array $expectedRule): void
29-
{
30-
$hasDataValidation = $this->sheet->dataValidationExists($expectedRange);
19+
$sheet = $spreadsheet->getActiveSheet();
20+
$hasDataValidation = $sheet->dataValidationExists($expectedRange);
3121
self::assertTrue($hasDataValidation);
3222

33-
$dataValidation = $this->sheet->getDataValidation($expectedRange);
23+
$dataValidation = $sheet->getDataValidation($expectedRange);
3424
self::assertSame($expectedRule['type'], $dataValidation->getType());
3525
self::assertSame($expectedRule['operator'], $dataValidation->getOperator());
3626
self::assertSame($expectedRule['formula'], $dataValidation->getFormula1());
27+
$spreadsheet->disconnectWorksheets();
3728
}
3829

3930
public function dataValidationProvider(): array
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls;
4+
5+
use PhpOffice\PhpSpreadsheet\Reader\Xls;
6+
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
7+
8+
class FormulasTest extends AbstractFunctional
9+
{
10+
public function testFormulas(): void
11+
{
12+
// This file was created with Excel 365.
13+
$filename = 'tests/data/Reader/XLS/formulas.xls';
14+
$reader = new Xls();
15+
$spreadsheet = $reader->load($filename);
16+
$sheet = $spreadsheet->getActiveSheet();
17+
$originalArray = $sheet->toArray(null, false, false, false);
18+
19+
$newSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
20+
$spreadsheet->disconnectWorksheets();
21+
$newWorksheet = $newSpreadsheet->getActiveSheet();
22+
$newArray = $newWorksheet->toArray(null, false, false, false);
23+
self::assertSame($originalArray, $newArray);
24+
$newSpreadsheet->disconnectWorksheets();
25+
}
26+
27+
public function testDatabaseFormulas(): void
28+
{
29+
// This file was created with Excel 2003.
30+
$filename = 'tests/data/Reader/XLS/formulas.database.xls';
31+
$reader = new Xls();
32+
$spreadsheet = $reader->load($filename);
33+
$sheet = $spreadsheet->getActiveSheet();
34+
$originalArray = $sheet->toArray(null, false, false, false);
35+
36+
$newSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
37+
$spreadsheet->disconnectWorksheets();
38+
$newWorksheet = $newSpreadsheet->getActiveSheet();
39+
$newArray = $newWorksheet->toArray(null, false, false, false);
40+
self::assertSame($originalArray, $newArray);
41+
$newSpreadsheet->disconnectWorksheets();
42+
}
43+
}

tests/PhpSpreadsheetTests/Reader/Xls/HiddenWorksheetTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ public function testPageSetup(): void
1515
$spreadsheet = $reader->load($filename);
1616
$assertions = $this->worksheetAssertions();
1717

18+
$sheetCount = 0;
1819
foreach ($spreadsheet->getAllSheets() as $worksheet) {
20+
++$sheetCount;
1921
if (!array_key_exists($worksheet->getTitle(), $assertions)) {
20-
continue;
22+
self::fail('Unexpected worksheet' . $worksheet->getTitle());
2123
}
2224

2325
$sheetAssertions = $assertions[$worksheet->getTitle()];
@@ -30,6 +32,7 @@ public function testPageSetup(): void
3032
);
3133
}
3234
}
35+
self::assertCount($sheetCount, $assertions);
3336
$spreadsheet->disconnectWorksheets();
3437
}
3538

tests/PhpSpreadsheetTests/Reader/Xls/PageSetupTest.php

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls;
44

55
use PhpOffice\PhpSpreadsheet\Reader\Xls;
6-
use PhpOffice\PhpSpreadsheet\Spreadsheet;
76
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
87
use PHPUnit\Framework\TestCase;
98

@@ -13,25 +12,18 @@ class PageSetupTest extends TestCase
1312

1413
private const MARGIN_UNIT_CONVERSION = 2.54; // Inches to cm
1514

16-
/**
17-
* @var Spreadsheet
18-
*/
19-
private $spreadsheet;
20-
21-
protected function setup(): void
15+
public function testPageSetup(): void
2216
{
2317
$filename = 'tests/data/Reader/XLS/PageSetup.xls';
2418
$reader = new Xls();
25-
$this->spreadsheet = $reader->load($filename);
26-
}
27-
28-
public function testPageSetup(): void
29-
{
19+
$spreadsheet = $reader->load($filename);
3020
$assertions = $this->pageSetupAssertions();
3121

32-
foreach ($this->spreadsheet->getAllSheets() as $worksheet) {
22+
$sheetCount = 0;
23+
foreach ($spreadsheet->getAllSheets() as $worksheet) {
24+
++$sheetCount;
3325
if (!array_key_exists($worksheet->getTitle(), $assertions)) {
34-
continue;
26+
self::fail('Unexpected worksheet ' . $worksheet->getTitle());
3527
}
3628

3729
$sheetAssertions = $assertions[$worksheet->getTitle()];
@@ -45,15 +37,22 @@ public function testPageSetup(): void
4537
);
4638
}
4739
}
40+
self::assertCount($sheetCount, $assertions);
41+
$spreadsheet->disconnectWorksheets();
4842
}
4943

5044
public function testPageMargins(): void
5145
{
46+
$filename = 'tests/data/Reader/XLS/PageSetup.xls';
47+
$reader = new Xls();
48+
$spreadsheet = $reader->load($filename);
5249
$assertions = $this->pageMarginAssertions();
5350

54-
foreach ($this->spreadsheet->getAllSheets() as $worksheet) {
51+
$sheetCount = 0;
52+
foreach ($spreadsheet->getAllSheets() as $worksheet) {
53+
++$sheetCount;
5554
if (!array_key_exists($worksheet->getTitle(), $assertions)) {
56-
continue;
55+
self::fail('Unexpected worksheet ' . $worksheet->getTitle());
5756
}
5857

5958
$sheetAssertions = $assertions[$worksheet->getTitle()];
@@ -68,6 +67,8 @@ public function testPageMargins(): void
6867
);
6968
}
7069
}
70+
self::assertCount($sheetCount, $assertions);
71+
$spreadsheet->disconnectWorksheets();
7172
}
7273

7374
private function pageSetupAssertions(): array
13.5 KB
Binary file not shown.

tests/data/Reader/XLS/formulas.xls

39.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)