Completed
Push — master ( 545fc8...ff5087 )
by Mark
36s queued 28s
created

AutoSizeTest::readColumnSizes()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
c 1
b 0
f 0
dl 0
loc 10
rs 10
cc 2
nc 2
nop 0
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Worksheet;
4
5
use PhpOffice\PhpSpreadsheet\Spreadsheet;
6
use PhpOffice\PhpSpreadsheet\Worksheet\Table;
7
use PhpOffice\PhpSpreadsheet\Worksheet\Table\TableStyle;
8
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
9
use PHPUnit\Framework\TestCase;
10
11
class AutoSizeTest extends TestCase
12
{
13
    protected Spreadsheet $spreadsheet;
14
15
    protected Worksheet $worksheet;
16
17
    protected function setUp(): void
18
    {
19
        parent::setUp();
20
21
        $spreadsheet = new Spreadsheet();
22
        $this->worksheet = $spreadsheet->getActiveSheet();
23
24
        $this->worksheet->setCellValue('A1', 'YEAR')
25
            ->setCellValue('B1', 'QUARTER')
26
            ->setCellValue('C1', 'COUNTRY')
27
            ->setCellValue('D1', 'SALES');
28
        $dataArray = [
29
            ['10', 'Q1', 'United States', 790],
30
            ['10', 'Q2', 'United States', 730],
31
            ['10', 'Q3', 'United States', 860],
32
            ['10', 'Q4', 'United States', 850],
33
        ];
34
35
        $this->worksheet->fromArray($dataArray, null, 'A2');
36
37
        $toColumn = $this->worksheet->getHighestColumn();
38
        ++$toColumn;
39
        for ($i = 'A'; $i !== $toColumn; ++$i) {
40
            $this->worksheet->getColumnDimension($i)->setAutoSize(true);
41
        }
42
    }
43
44
    protected function setTable(): Table
45
    {
46
        $table = new Table('A1:D5', 'Sales_Data');
47
        $tableStyle = new TableStyle();
48
        $tableStyle->setTheme(TableStyle::TABLE_STYLE_MEDIUM2);
49
        $table->setStyle($tableStyle);
50
        $this->worksheet->addTable($table);
51
52
        return $table;
53
    }
54
55
    protected function readColumnSizes(): array
56
    {
57
        $columnSizes = [];
58
        $toColumn = $this->worksheet->getHighestColumn();
59
        ++$toColumn;
60
        for ($column = 'A'; $column !== $toColumn; ++$column) {
61
            $columnSizes[$column] = $this->worksheet->getColumnDimension($column)->getWidth();
62
        }
63
64
        return $columnSizes;
65
    }
66
67
    public function testStandardAutoSize(): void
68
    {
69
        $this->worksheet->calculateColumnWidths();
70
        $columnSizes = $this->readColumnSizes();
71
72
        self::assertSame(['A' => 5.856, 'B' => 9.283, 'C' => 16.425, 'D' => 6.998], $columnSizes);
73
    }
74
75
    public function testAutoFilterAutoSize(): void
76
    {
77
        $this->worksheet->setAutoFilter('A1:D5');
78
79
        $this->worksheet->calculateColumnWidths();
80
        $columnSizes = $this->readColumnSizes();
81
82
        self::assertSame(['A' => 8.141, 'B' => 11.569, 'C' => 16.425, 'D' => 9.283], $columnSizes);
83
    }
84
85
    public function testTableWithAutoFilterAutoSize(): void
86
    {
87
        $this->setTable();
88
89
        $this->worksheet->calculateColumnWidths();
90
        $columnSizes = $this->readColumnSizes();
91
92
        self::assertSame(['A' => 8.141, 'B' => 11.569, 'C' => 16.425, 'D' => 9.283], $columnSizes);
93
    }
94
95
    public function testTableWithoutHiddenHeadersAutoSize(): void
96
    {
97
        $table = $this->setTable();
98
        $table->setShowHeaderRow(false);
99
100
        $this->worksheet->calculateColumnWidths();
101
        $columnSizes = $this->readColumnSizes();
102
103
        self::assertSame(['A' => 5.856, 'B' => 9.283, 'C' => 16.425, 'D' => 6.998], $columnSizes);
104
    }
105
}
106