|
2 | 2 |
|
3 | 3 | namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\DateTime;
|
4 | 4 |
|
| 5 | +use PhpOffice\PhpSpreadsheet\Calculation\Calculation; |
5 | 6 | use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel\Date;
|
6 | 7 |
|
7 | 8 | class DateTest extends AllSetupTeardown
|
@@ -56,4 +57,61 @@ public function testDATEwith1904Calendar(): void
|
56 | 57 | $result = Date::fromYMD(1901, 1, 31);
|
57 | 58 | self::assertEquals($result, '#NUM!');
|
58 | 59 | }
|
| 60 | + |
| 61 | + /** |
| 62 | + * @dataProvider providerDateArray |
| 63 | + */ |
| 64 | + public function testDateArray(array $expectedResult, string $year, string $month, string $day): void |
| 65 | + { |
| 66 | + $calculation = Calculation::getInstance(); |
| 67 | + |
| 68 | + $formula = "=DATE({$year}, {$month}, {$day})"; |
| 69 | + $result = $calculation->_calculateFormulaValue($formula); |
| 70 | + self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14); |
| 71 | + } |
| 72 | + |
| 73 | + public function providerDateArray(): array |
| 74 | + { |
| 75 | + return [ |
| 76 | + 'row vector year' => [[[44197, 44562, 44927]], '{2021,2022,2023}', '1', '1'], |
| 77 | + 'column vector year' => [[[44197], [44562], [44927]], '{2021;2022;2023}', '1', '1'], |
| 78 | + 'matrix year' => [[[43831.00, 44197], [44562, 44927]], '{2020,2021;2022,2023}', '1', '1'], |
| 79 | + 'row vector month' => [[[44562, 44652, 44743, 44835]], '2022', '{1, 4, 7, 10}', '1'], |
| 80 | + 'column vector month' => [[[44562], [44652], [44743], [44835]], '2022', '{1; 4; 7; 10}', '1'], |
| 81 | + 'matrix month' => [[[44562, 44652], [44743, 44835]], '2022', '{1, 4; 7, 10}', '1'], |
| 82 | + 'row vector day' => [[[44561, 44562]], '2022', '1', '{0,1}'], |
| 83 | + 'column vector day' => [[[44561], [44562]], '2022', '1', '{0;1}'], |
| 84 | + 'vectors year and month' => [ |
| 85 | + [ |
| 86 | + [44197, 44287, 44378, 44470], |
| 87 | + [44562, 44652, 44743, 44835], |
| 88 | + [44927, 45017, 45108, 45200], |
| 89 | + ], |
| 90 | + '{2021;2022;2023}', |
| 91 | + '{1, 4, 7, 10}', |
| 92 | + '1', |
| 93 | + ], |
| 94 | + 'vectors year and day' => [ |
| 95 | + [ |
| 96 | + [44196, 44197], |
| 97 | + [44561, 44562], |
| 98 | + [44926, 44927], |
| 99 | + ], |
| 100 | + '{2021;2022;2023}', |
| 101 | + '1', |
| 102 | + '{0,1}', |
| 103 | + ], |
| 104 | + 'vectors month and day' => [ |
| 105 | + [ |
| 106 | + [44561, 44562], |
| 107 | + [44651, 44652], |
| 108 | + [44742, 44743], |
| 109 | + [44834, 44835], |
| 110 | + ], |
| 111 | + '2022', |
| 112 | + '{1; 4; 7; 10}', |
| 113 | + '{0,1}', |
| 114 | + ], |
| 115 | + ]; |
| 116 | + } |
59 | 117 | }
|
0 commit comments