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

MicrosecondsTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
eloc 24
dl 0
loc 37
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\Ods;
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
     * Ods Writer does not support date formats,
17
     * and Reader does not support styles, so this
18
     * test is slightly different than its Xls/Xlsx counterparts.
19
     */
20
    public function testIssue4476(): void
21
    {
22
        $date = '2020-10-21';
23
        $time = '14:55:31';
24
        $originalDateTime = new DateTime("{$date}T{$time}");
25
        $spreadsheet = new Spreadsheet();
26
        $sheet = $spreadsheet->getActiveSheet();
27
        $sheet->setCellValue('A1', Date::dateTimeToExcel($originalDateTime));
28
        $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Ods');
29
        $spreadsheet->disconnectWorksheets();
30
31
        $rsheet = $reloadedSpreadsheet->getActiveSheet();
32
        $rsheet->getStyle('A1')
33
            ->getNumberFormat()
34
            ->setFormatCode('yyyy-mm-dd hh:mm:ss.000');
35
        /** @var float */
36
        $reread = $rsheet->getCell('A1')->getValue();
37
        $temp = Date::excelToDateTimeObject($reread)
38
            ->format('Y-m-d H:i:s.u');
39
        self::assertSame("{$date} {$time}.000000", $temp, 'round trip works with float value');
40
        $formatted = $rsheet->getCell('A1')->getFormattedValue();
41
        self::assertSame("{$date} {$time}.000", $formatted, 'round trip works with formatted value');
42
        /** @var float */
43
        $temp = Date::stringToExcel($formatted);
44
        $temp = Date::excelToDateTimeObject($temp)
45
            ->format('Y-m-d H:i:s.u');
46
        self::assertSame("{$date} {$time}.000000", $temp, 'round trip works using stringToExcel on formatted value');
47
48
        $reloadedSpreadsheet->disconnectWorksheets();
49
    }
50
}
51