Passed
Push — master ( 9da522...68fd71 )
by
unknown
12:32 queued 17s
created

MicrosecondsTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
eloc 24
dl 0
loc 34
rs 10
c 1
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A testIssue4476() 0 29 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
6
7
use DateTime;
8
use PhpOffice\PhpSpreadsheet\Shared\Date;
9
use PhpOffice\PhpSpreadsheet\Spreadsheet;
10
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
11
12
class MicrosecondsTest extends AbstractFunctional
13
{
14
    /**
15
     * Test save and load XLSX file for round-trip DateTime.
16
     */
17
    public function testIssue4476(): void
18
    {
19
        $date = '2020-10-21';
20
        $time = '14:55:31';
21
        $originalDateTime = new DateTime("{$date}T{$time}");
22
        $spreadsheet = new Spreadsheet();
23
        $sheet = $spreadsheet->getActiveSheet();
24
        $sheet->setCellValue('A1', Date::dateTimeToExcel($originalDateTime));
25
        $sheet->getStyle('A1')
26
            ->getNumberFormat()
27
            ->setFormatCode('yyyy-mm-dd hh:mm:ss.000');
28
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
29
        $spreadsheet->disconnectWorksheets();
30
31
        $rsheet = $reloadedSpreadsheet->getActiveSheet();
32
        /** @var float */
33
        $reread = $rsheet->getCell('A1')->getValue();
34
        $temp = Date::excelToDateTimeObject($reread)
35
            ->format('Y-m-d H:i:s.u');
36
        self::assertSame("{$date} {$time}.000000", $temp, 'round trip works with float value');
37
        $formatted = $rsheet->getCell('A1')->getFormattedValue();
38
        self::assertSame("{$date} {$time}.000", $formatted, 'round trip works with formatted value');
39
        /** @var float */
40
        $temp = Date::stringToExcel($formatted);
41
        $temp = Date::excelToDateTimeObject($temp)
42
            ->format('Y-m-d H:i:s.u');
43
        self::assertSame("{$date} {$time}.000000", $temp, 'round trip works using stringToExcel on formatted value');
44
45
        $reloadedSpreadsheet->disconnectWorksheets();
46
    }
47
}
48