Completed
Push — master ( e4a770...025e90 )
by Mark
35s queued 30s
created

StyleTest::testStyleCellAddressObject()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
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 9
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Style;
4
5
use PhpOffice\PhpSpreadsheet\Cell\CellAddress;
6
use PhpOffice\PhpSpreadsheet\Cell\CellRange;
7
use PhpOffice\PhpSpreadsheet\Spreadsheet;
8
use PhpOffice\PhpSpreadsheet\Style\Fill;
9
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
10
use PHPUnit\Framework\TestCase;
11
12
class StyleTest extends TestCase
13
{
14
    public function testStyleOddMethods(): void
15
    {
16
        $spreadsheet = new Spreadsheet();
17
        $sheet = $spreadsheet->getActiveSheet();
18
        $cellCoordinate = 'A1';
19
        $cell1 = $sheet->getCell($cellCoordinate);
20
        $cell1style = $cell1->getStyle();
21
        self::assertSame($spreadsheet, $cell1style->getParent());
22
        $styleArray = ['alignment' => ['textRotation' => 45]];
23
        $outArray = $cell1style->getStyleArray($styleArray);
24
        self::assertEquals($styleArray, $outArray['quotePrefix']);
25
    }
26
27
    public function testStyleColumn(): void
28
    {
29
        $spreadsheet = new Spreadsheet();
30
        $sheet = $spreadsheet->getActiveSheet();
31
        $cellCoordinates = 'A:B';
32
        $styleArray = [
33
            'font' => [
34
                'bold' => true,
35
            ],
36
        ];
37
        $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
38
        $sheet->setCellValue('A1', 'xxxa1');
39
        $sheet->setCellValue('A2', 'xxxa2');
40
        $sheet->setCellValue('A3', 'xxxa3');
41
        $sheet->setCellValue('B1', 'xxxa1');
42
        $sheet->setCellValue('B2', 'xxxa2');
43
        $sheet->setCellValue('B3', 'xxxa3');
44
        $sheet->setCellValue('C1', 'xxxc1');
45
        $sheet->setCellValue('C2', 'xxxc2');
46
        $sheet->setCellValue('C3', 'xxxc3');
47
        $styleArray = [
48
            'font' => [
49
                'italic' => true,
50
            ],
51
        ];
52
        $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
53
        self::assertTrue($sheet->getStyle('A1')->getFont()->getBold());
54
        self::assertTrue($sheet->getStyle('B2')->getFont()->getBold());
55
        self::assertFalse($sheet->getStyle('C3')->getFont()->getBold());
56
        self::assertTrue($sheet->getStyle('A1')->getFont()->getItalic());
57
        self::assertTrue($sheet->getStyle('B2')->getFont()->getItalic());
58
        self::assertFalse($sheet->getStyle('C3')->getFont()->getItalic());
59
    }
60
61
    public function testStyleIsReused(): void
62
    {
63
        $spreadsheet = new Spreadsheet();
64
        $sheet = $spreadsheet->getActiveSheet();
65
        $styleArray = [
66
            'font' => [
67
                'italic' => true,
68
            ],
69
        ];
70
71
        $sheet->getStyle('A1')->getFont()->setBold(true);
72
        $sheet->getStyle('A2')->getFont()->setBold(true);
73
        $sheet->getStyle('A3')->getFont()->setBold(true);
74
        $sheet->getStyle('A3')->getFont()->setItalic(true);
75
76
        $sheet->getStyle('A')->applyFromArray($styleArray);
77
78
        self::assertCount(4, $spreadsheet->getCellXfCollection());
79
        $spreadsheet->garbageCollect();
80
81
        self::assertCount(3, $spreadsheet->getCellXfCollection());
82
    }
83
84
    public function testStyleRow(): void
85
    {
86
        $spreadsheet = new Spreadsheet();
87
        $sheet = $spreadsheet->getActiveSheet();
88
        $cellCoordinates = '2:3';
89
        $styleArray = [
90
            'font' => [
91
                'bold' => true,
92
            ],
93
        ];
94
        $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
95
        $sheet->setCellValue('A1', 'xxxa1');
96
        $sheet->setCellValue('A2', 'xxxa2');
97
        $sheet->setCellValue('A3', 'xxxa3');
98
        $sheet->setCellValue('B1', 'xxxa1');
99
        $sheet->setCellValue('B2', 'xxxa2');
100
        $sheet->setCellValue('B3', 'xxxa3');
101
        $sheet->setCellValue('C1', 'xxxc1');
102
        $sheet->setCellValue('C2', 'xxxc2');
103
        $sheet->setCellValue('C3', 'xxxc3');
104
        $styleArray = [
105
            'font' => [
106
                'italic' => true,
107
            ],
108
        ];
109
        $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
110
        self::assertFalse($sheet->getStyle('A1')->getFont()->getBold());
111
        self::assertTrue($sheet->getStyle('B2')->getFont()->getBold());
112
        self::assertTrue($sheet->getStyle('C3')->getFont()->getBold());
113
        self::assertFalse($sheet->getStyle('A1')->getFont()->getItalic());
114
        self::assertTrue($sheet->getStyle('B2')->getFont()->getItalic());
115
        self::assertTrue($sheet->getStyle('C3')->getFont()->getItalic());
116
    }
117
118
    public function testIssue1712A(): void
119
    {
120
        $spreadsheet = new Spreadsheet();
121
        $sheet = $spreadsheet->getActiveSheet();
122
        $rgb = '4467b8';
123
        $sheet->fromArray(['OK', 'KO']);
124
        $spreadsheet->getActiveSheet()
125
            ->getStyle('A1')
126
            ->getFill()
127
            ->setFillType(Fill::FILL_SOLID)
128
            ->getStartColor()
129
            ->setRGB($rgb);
130
        $spreadsheet->getActiveSheet()
131
            ->getStyle('B')
132
            ->getFill()
133
            ->setFillType(Fill::FILL_SOLID)
134
            ->getStartColor()
135
            ->setRGB($rgb);
136
        self::assertEquals($rgb, $sheet->getCell('A1')->getStyle()->getFill()->getStartColor()->getRGB());
137
        self::assertEquals($rgb, $sheet->getCell('B1')->getStyle()->getFill()->getStartColor()->getRGB());
138
    }
139
140
    public function testIssue1712B(): void
141
    {
142
        $spreadsheet = new Spreadsheet();
143
        $sheet = $spreadsheet->getActiveSheet();
144
        $rgb = '4467b8';
145
        $spreadsheet->getActiveSheet()
146
            ->getStyle('A1')
147
            ->getFill()
148
            ->setFillType(Fill::FILL_SOLID)
149
            ->getStartColor()
150
            ->setRGB($rgb);
151
        $spreadsheet->getActiveSheet()
152
            ->getStyle('B')
153
            ->getFill()
154
            ->setFillType(Fill::FILL_SOLID)
155
            ->getStartColor()
156
            ->setRGB($rgb);
157
        $sheet->fromArray(['OK', 'KO']);
158
        self::assertEquals($rgb, $sheet->getCell('A1')->getStyle()->getFill()->getStartColor()->getRGB());
159
        self::assertEquals($rgb, $sheet->getCell('B1')->getStyle()->getFill()->getStartColor()->getRGB());
160
    }
161
162
    public function testStyleLoopUpwards(): void
163
    {
164
        $spreadsheet = new Spreadsheet();
165
        $sheet = $spreadsheet->getActiveSheet();
166
        $cellCoordinates = 'C5:A3';
167
        $styleArray = [
168
            'font' => [
169
                'bold' => true,
170
            ],
171
        ];
172
        $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
173
        $sheet->setCellValue('A1', 'xxxa1');
174
        $sheet->setCellValue('A2', 'xxxa2');
175
        $sheet->setCellValue('A3', 'xxxa3');
176
        $sheet->setCellValue('B1', 'xxxa1');
177
        $sheet->setCellValue('B2', 'xxxa2');
178
        $sheet->setCellValue('B3', 'xxxa3');
179
        $sheet->setCellValue('C1', 'xxxc1');
180
        $sheet->setCellValue('C2', 'xxxc2');
181
        $sheet->setCellValue('C3', 'xxxc3');
182
        self::assertFalse($sheet->getStyle('A1')->getFont()->getBold());
183
        self::assertFalse($sheet->getStyle('B2')->getFont()->getBold());
184
        self::assertTrue($sheet->getStyle('C3')->getFont()->getBold());
185
    }
186
187
    public function testStyleCellAddressObject(): void
188
    {
189
        $spreadsheet = new Spreadsheet();
190
        $worksheet = $spreadsheet->getActiveSheet();
191
        $cellAddress = new CellAddress('A1', $worksheet);
192
        $style = $worksheet->getStyle($cellAddress);
193
        $style->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
194
195
        self::assertSame(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH, $style->getNumberFormat()->getFormatCode());
196
    }
197
198
    public function testStyleCellRangeObject(): void
199
    {
200
        $spreadsheet = new Spreadsheet();
201
        $worksheet = $spreadsheet->getActiveSheet();
202
        $cellAddress1 = new CellAddress('A1', $worksheet);
203
        $cellAddress2 = new CellAddress('B2', $worksheet);
204
        $cellRange = new CellRange($cellAddress1, $cellAddress2);
205
        $style = $worksheet->getStyle($cellRange);
206
        $style->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
207
208
        self::assertSame(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH, $style->getNumberFormat()->getFormatCode());
209
    }
210
}
211