Passed
Push — master ( d01575...9b3f20 )
by
unknown
20:24 queued 13s
created

NumberFormatSystemDateTimeTest::tearDown()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
dl 0
loc 6
rs 10
c 1
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Style;
6
7
use PhpOffice\PhpSpreadsheet\Spreadsheet;
8
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
9
use PHPUnit\Framework\TestCase;
10
11
class NumberFormatSystemDateTimeTest extends TestCase
12
{
13
    private string $shortDateFormat;
14
15
    private string $longDateFormat;
16
17
    private string $dateTimeFormat;
18
19
    private string $timeFormat;
20
21
    protected function setUp(): void
22
    {
23
        $this->shortDateFormat = NumberFormat::getShortDateFormat();
24
        $this->longDateFormat = NumberFormat::getLongDateFormat();
25
        $this->dateTimeFormat = NumberFormat::getDateTimeFormat();
26
        $this->timeFormat = NumberFormat::getTimeFormat();
27
    }
28
29
    protected function tearDown(): void
30
    {
31
        NumberFormat::setShortDateFormat($this->shortDateFormat);
32
        NumberFormat::setLongDateFormat($this->longDateFormat);
33
        NumberFormat::setDateTimeFormat($this->dateTimeFormat);
34
        NumberFormat::setTimeFormat($this->timeFormat);
35
    }
36
37
    public function testOverrides(): void
38
    {
39
        $spreadsheet = new Spreadsheet();
40
        $sheet = $spreadsheet->getActiveSheet();
41
        $formula = '=DATEVALUE("2024-02-29")+TIMEVALUE("8:12:15 AM")';
42
        $sheet->getCell('A1')->setValue($formula);
43
        $sheet->getCell('A2')->setValue($formula);
44
        $sheet->getStyle('A2')->getNumberFormat()
45
            ->setBuiltinFormatCode(14);
46
        $sheet->getCell('A3')->setValue($formula);
47
        $sheet->getStyle('A3')->getNumberFormat()
48
            ->setBuiltinFormatCode(15);
49
        $sheet->getCell('A4')->setValue($formula);
50
        $sheet->getStyle('A4')->getNumberFormat()
51
            ->setBuiltinFormatCode(22);
52
        $sheet->getCell('A5')->setValue($formula);
53
        $sheet->getStyle('A5')->getNumberFormat()
54
            ->setFormatCode('[$-F800]');
55
        $sheet->getCell('A6')->setValue($formula);
56
        $sheet->getStyle('A6')->getNumberFormat()
57
            ->setFormatCode('[$-F400]');
58
        $sheet->getCell('A7')->setValue($formula);
59
        $sheet->getStyle('A7')->getNumberFormat()
60
            ->setFormatCode('[$-x-sysdate]');
61
        $sheet->getCell('A8')->setValue($formula);
62
        $sheet->getStyle('A8')->getNumberFormat()
63
            ->setFormatCode('[$-x-systime]');
64
        $sheet->getCell('A9')->setValue($formula);
65
        $sheet->getStyle('A9')->getNumberFormat()
66
            ->setFormatCode('hello' . NumberFormat::FORMAT_SYSDATE_F800 . 'goodbye');
67
        NumberFormat::setShortDateFormat('yyyy/mm/dd');
68
        NumberFormat::setDateTimeFormat('yyyy/mm/dd hh:mm AM/PM');
69
        NumberFormat::setLongDateFormat('dddd d mmm yyyy');
70
        NumberFormat::setTimeFormat('h:mm');
71
        self::assertSame('2024/02/29', $sheet->getCell('A2')->getformattedValue());
72
        self::assertSame('2024/02/29 08:12 AM', $sheet->getCell('A4')->getformattedValue());
73
        self::assertSame('Thursday 29 Feb 2024', $sheet->getCell('A5')->getformattedValue());
74
        self::assertSame('8:12', $sheet->getCell('A6')->getformattedValue());
75
        self::assertSame('Thursday 29 Feb 2024', $sheet->getCell('A7')->getformattedValue());
76
        self::assertSame('8:12', $sheet->getCell('A8')->getformattedValue());
77
        self::assertSame('Thursday 29 Feb 2024', $sheet->getCell('A9')->getformattedValue());
78
        $spreadsheet->disconnectWorksheets();
79
    }
80
81
    public function testDefaults(): void
82
    {
83
        $spreadsheet = new Spreadsheet();
84
        $sheet = $spreadsheet->getActiveSheet();
85
        $formula = '=DATEVALUE("2024-02-29")+TIMEVALUE("8:12:15 AM")';
86
        $sheet->getCell('A1')->setValue($formula);
87
        $sheet->getCell('A2')->setValue($formula);
88
        $sheet->getStyle('A2')->getNumberFormat()
89
            ->setBuiltinFormatCode(14);
90
        $sheet->getCell('A3')->setValue($formula);
91
        $sheet->getStyle('A3')->getNumberFormat()
92
            ->setBuiltinFormatCode(15);
93
        $sheet->getCell('A4')->setValue($formula);
94
        $sheet->getStyle('A4')->getNumberFormat()
95
            ->setBuiltinFormatCode(22);
96
        $sheet->getCell('A5')->setValue($formula);
97
        $sheet->getStyle('A5')->getNumberFormat()
98
            ->setFormatCode('[$-F800]');
99
        $sheet->getCell('A6')->setValue($formula);
100
        $sheet->getStyle('A6')->getNumberFormat()
101
            ->setFormatCode('[$-F400]');
102
        $sheet->getCell('A7')->setValue($formula);
103
        $sheet->getStyle('A7')->getNumberFormat()
104
            ->setFormatCode('[$-x-sysdate]');
105
        $sheet->getCell('A8')->setValue($formula);
106
        $sheet->getStyle('A8')->getNumberFormat()
107
            ->setFormatCode('[$-x-systime]');
108
        $sheet->getCell('A9')->setValue($formula);
109
        $sheet->getStyle('A9')->getNumberFormat()
110
            ->setFormatCode('hello' . NumberFormat::FORMAT_SYSDATE_F800 . 'goodbye');
111
        self::assertSame('2/29/2024', $sheet->getCell('A2')->getformattedValue());
112
        self::assertSame('2/29/2024 8:12', $sheet->getCell('A4')->getformattedValue());
113
        self::assertSame('Thursday, February 29, 2024', $sheet->getCell('A5')->getformattedValue());
114
        self::assertSame('8:12:15 AM', $sheet->getCell('A6')->getformattedValue());
115
        self::assertSame('Thursday, February 29, 2024', $sheet->getCell('A7')->getformattedValue());
116
        self::assertSame('8:12:15 AM', $sheet->getCell('A8')->getformattedValue());
117
        self::assertSame('Thursday, February 29, 2024', $sheet->getCell('A9')->getformattedValue());
118
        $spreadsheet->disconnectWorksheets();
119
    }
120
}
121