Failed Conditions
Pull Request — master (#4257)
by Owen
13:57
created

BetterBooleanTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 126
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 9
eloc 80
c 1
b 0
f 0
dl 0
loc 126
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A testBetterBoolean() 0 20 1
A testDefault() 0 7 1
A setUp() 0 4 1
A testNotBetterBoolean() 0 20 1
A setBetter() 0 3 1
A tearDown() 0 4 1
A setNotBetter() 0 3 1
A testLocale() 0 27 1
A testForeignNoLocale() 0 18 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
6
7
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
8
use PhpOffice\PhpSpreadsheet\Reader\Html as HtmlReader;
9
use PhpOffice\PhpSpreadsheet\Spreadsheet;
10
use PhpOffice\PhpSpreadsheet\Writer\Html as HtmlWriter;
11
use PhpOffice\PhpSpreadsheetTests\Functional;
12
13
class BetterBooleanTest extends Functional\AbstractFunctional
14
{
15
    private string $locale;
16
17
    protected function setUp(): void
18
    {
19
        $calculation = Calculation::getInstance();
20
        $this->locale = $calculation->getLocale();
21
    }
22
23
    protected function tearDown(): void
24
    {
25
        $calculation = Calculation::getInstance();
26
        $calculation->setLocale($this->locale);
27
    }
28
29
    public function testDefault(): void
30
    {
31
        $spreadsheet = new Spreadsheet();
32
        $writer = new HtmlWriter($spreadsheet);
33
        // Default will change with next PhpSpreadsheet release
34
        self::assertFalse($writer->getBetterBoolean());
35
        $spreadsheet->disconnectWorksheets();
36
    }
37
38
    public function setBetter(HtmlWriter $writer): void
39
    {
40
        $writer->setBetterBoolean(true);
41
    }
42
43
    public function setNotBetter(HtmlWriter $writer): void
44
    {
45
        $writer->setBetterBoolean(false);
46
    }
47
48
    public function testBetterBoolean(): void
49
    {
50
        $spreadsheet = new Spreadsheet();
51
        $sheet = $spreadsheet->getActiveSheet();
52
        $sheet->getCell('A1')->setValue(10);
53
        $sheet->getCell('B1')->setValue('Hello');
54
        $sheet->getCell('C1')->setValue(true);
55
        $sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)');
56
57
        /** @var callable */
58
        $callableWriter = [$this, 'setBetter'];
59
        $reloaded = $this->writeAndReload($spreadsheet, 'Html', null, $callableWriter);
60
        $spreadsheet->disconnectWorksheets();
61
62
        $rsheet = $reloaded->getActiveSheet();
63
        self::assertSame(10, $rsheet->getCell('A1')->getValue());
64
        self::assertSame('Hello', $rsheet->getCell('B1')->getValue());
65
        self::assertTrue($rsheet->getCell('C1')->getValue());
66
        self::assertFalse($rsheet->getCell('D1')->getValue());
67
        $reloaded->disconnectWorksheets();
68
    }
69
70
    public function testNotBetterBoolean(): void
71
    {
72
        $spreadsheet = new Spreadsheet();
73
        $sheet = $spreadsheet->getActiveSheet();
74
        $sheet->getCell('A1')->setValue(10);
75
        $sheet->getCell('B1')->setValue('Hello');
76
        $sheet->getCell('C1')->setValue(true);
77
        $sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)');
78
79
        /** @var callable */
80
        $callableWriter = [$this, 'setNotBetter'];
81
        $reloaded = $this->writeAndReload($spreadsheet, 'Html', null, $callableWriter);
82
        $spreadsheet->disconnectWorksheets();
83
84
        $rsheet = $reloaded->getActiveSheet();
85
        self::assertSame(10, $rsheet->getCell('A1')->getValue());
86
        self::assertSame('Hello', $rsheet->getCell('B1')->getValue());
87
        self::assertSame(1, $rsheet->getCell('C1')->getValue());
88
        self::assertNull($rsheet->getCell('D1')->getValue());
89
        $reloaded->disconnectWorksheets();
90
    }
91
92
    public function testLocale(): void
93
    {
94
        $spreadsheet = new Spreadsheet();
95
        $sheet = $spreadsheet->getActiveSheet();
96
        $sheet->getCell('A1')->setValue(10);
97
        $sheet->getCell('B1')->setValue('Hello');
98
        $sheet->getCell('C1')->setValue(true);
99
        $sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)');
100
        $calc = Calculation::getInstance();
101
        $calc->setLocale('fr');
102
        $writer = new HtmlWriter($spreadsheet);
103
        $writer->setBetterBoolean(true);
104
        $html = $writer->generateHtmlAll();
105
        self::assertStringContainsString('VRAI', $html);
106
        self::assertStringNotContainsString('TRUE', $html);
107
108
        /** @var callable */
109
        $callableWriter = [$this, 'setBetter'];
110
        $reloaded = $this->writeAndReload($spreadsheet, 'Html', null, $callableWriter);
111
        $spreadsheet->disconnectWorksheets();
112
113
        $rsheet = $reloaded->getActiveSheet();
114
        self::assertSame(10, $rsheet->getCell('A1')->getValue());
115
        self::assertSame('Hello', $rsheet->getCell('B1')->getValue());
116
        self::assertTrue($rsheet->getCell('C1')->getValue());
117
        self::assertFalse($rsheet->getCell('D1')->getValue());
118
        $reloaded->disconnectWorksheets();
119
    }
120
121
    public function testForeignNoLocale(): void
122
    {
123
        $fragment = '<table><tbody><tr>'
124
            . '<td>10</td>'
125
            . '<td>Hello</td>'
126
            . '<td data-type="b">ИСТИНА</td>' // Bulgarian TRUE
127
            . '<td data-type="b">EPÄTOSI</td>' // Finnish FALSE
128
            . '<td data-type="b">whatever</td>'
129
            . '<td data-type="b">tRuE</td>'
130
            . '</tr></tbody></table>';
131
        $reader = new HtmlReader();
132
        $spreadsheet = $reader->loadFromString($fragment);
133
        $sheet = $spreadsheet->getActiveSheet();
134
        self::assertTrue($sheet->getCell('C1')->getValue());
135
        self::assertFalse($sheet->getCell('D1')->getValue());
136
        self::assertSame('whatever', $sheet->getCell('E1')->getValue());
137
        self::assertTrue($sheet->getCell('F1')->getValue());
138
        $spreadsheet->disconnectWorksheets();
139
    }
140
}
141