Passed
Pull Request — master (#4310)
by Owen
15:27
created

testCreateColumnRangeFromIndexes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
c 0
b 0
f 0
dl 0
loc 8
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Cell;
6
7
use PhpOffice\PhpSpreadsheet\Cell\ColumnRange;
8
use PhpOffice\PhpSpreadsheet\Spreadsheet;
9
use PHPUnit\Framework\TestCase;
10
11
class ColumnRangeTest extends TestCase
12
{
13
    public function testCreateColumnRange(): void
14
    {
15
        $columnRange = new ColumnRange('C', 'E');
16
        self::assertSame('C', $columnRange->from());
17
        self::assertSame('E', $columnRange->to());
18
        self::assertSame(3, $columnRange->fromIndex());
19
        self::assertSame(5, $columnRange->toIndex());
20
        self::assertSame('C:E', (string) $columnRange);
21
        self::assertSame(3, $columnRange->columnCount());
22
        self::assertSame('C1:E1048576', (string) $columnRange->toCellRange());
23
    }
24
25
    public function testCreateSingleColumnRange(): void
26
    {
27
        $columnRange = new ColumnRange('E');
28
        self::assertSame('E', $columnRange->from());
29
        self::assertSame('E', $columnRange->to());
30
        self::assertSame('E:E', (string) $columnRange);
31
        self::assertSame(1, $columnRange->columnCount());
32
        self::assertSame('E1:E1048576', (string) $columnRange->toCellRange());
33
    }
34
35
    public function testCreateColumnRangeWithWorksheet(): void
36
    {
37
        $spreadsheet = new Spreadsheet();
38
        $worksheet = $spreadsheet->getActiveSheet();
39
        $worksheet->setTitle("Mark's Worksheet");
40
41
        $columnRange = new ColumnRange('C', 'E', $worksheet);
42
        self::assertSame('C', $columnRange->from());
43
        self::assertSame('E', $columnRange->to());
44
        self::assertSame("'Mark''s Worksheet'!C:E", (string) $columnRange);
45
        self::assertSame("'Mark''s Worksheet'!C1:E1048576", (string) $columnRange->toCellRange());
46
        $spreadsheet->disconnectWorksheets();
47
    }
48
49
    public function testCreateColumnRangeFromArray(): void
50
    {
51
        $columnRange = ColumnRange::fromArray(['C', 'E']);
52
        self::assertSame('C', $columnRange->from());
53
        self::assertSame('E', $columnRange->to());
54
        self::assertSame('C:E', (string) $columnRange);
55
        self::assertSame(3, $columnRange->columnCount());
56
        self::assertSame('C1:E1048576', (string) $columnRange->toCellRange());
57
    }
58
59
    public function testCreateColumnRangeFromIndexes(): void
60
    {
61
        $columnRange = ColumnRange::fromColumnIndexes(3, 5);
62
        self::assertSame('C', $columnRange->from());
63
        self::assertSame('E', $columnRange->to());
64
        self::assertSame('C:E', (string) $columnRange);
65
        self::assertSame(3, $columnRange->columnCount());
66
        self::assertSame('C1:E1048576', (string) $columnRange->toCellRange());
67
    }
68
69
    public function testColumnRangeNext(): void
70
    {
71
        $columnRange = new ColumnRange('C', 'E');
72
        $columnRangeNext = $columnRange->shiftDown(3);
73
74
        self::assertSame('F', $columnRangeNext->from());
75
        self::assertSame('H', $columnRangeNext->to());
76
77
        // Check that original Column Range isn't changed
78
        self::assertSame('C:E', (string) $columnRange);
79
    }
80
81
    public function testColumnRangePrevious(): void
82
    {
83
        $columnRange = new ColumnRange('C', 'E');
84
        $columnRangeNext = $columnRange->shiftUp();
85
86
        self::assertSame('B', $columnRangeNext->from());
87
        self::assertSame('D', $columnRangeNext->to());
88
89
        // Check that original Column Range isn't changed
90
        self::assertSame('C:E', (string) $columnRange);
91
    }
92
93
    public function testIssue4309(): void
94
    {
95
        $spreadsheet = new Spreadsheet();
96
        $sheet = $spreadsheet->getActiveSheet();
97
        $columnRange = new ColumnRange('A', 'A');
98
        $columnStyle = $sheet->getStyle($columnRange);
99
        $columnStyle->applyFromArray([
100
            'font' => ['bold' => true],
101
        ]);
102
        $columnXf = $sheet->getColumnDimension('A')->getXfIndex();
103
        self::assertNotNull($columnXf);
104
        self::assertTrue(
105
            $spreadsheet->getCellXfByIndex($columnXf)
106
                ->getFont()->getBold()
107
        );
108
109
        $spreadsheet->disconnectWorksheets();
110
    }
111
}
112