1212#[CoversClass(DateInterval::class)]
1313final class DateIntervalTestCase extends TestCase
1414{
15+ public static function provideValuesToParse (): iterable
16+ {
17+ yield [1 , DateInterval::FORMAT_MICROSECONDS , 1 , '0/0/0/0 ' ];
18+ yield [1 , DateInterval::FORMAT_MILLISECONDS , 1_000 , '0/0/0/0 ' ];
19+ yield [0.25 , DateInterval::FORMAT_SECONDS , 250_000 , '0/0/0/0 ' ];
20+ yield [1 , DateInterval::FORMAT_SECONDS , 1_000_000 , '0/0/0/1 ' ];
21+ yield [1.25 , DateInterval::FORMAT_SECONDS , 1_250_000 , '0/0/0/1 ' ];
22+ yield [1.8 , DateInterval::FORMAT_SECONDS , 1_800_000 , '0/0/0/1 ' ];
23+ yield [1 , DateInterval::FORMAT_MINUTES , 60_000_000 , '0/0/1/0 ' ];
24+ yield [1.5 , DateInterval::FORMAT_MINUTES , 90_000_000 , '0/0/1/30 ' ];
25+ yield [1 , DateInterval::FORMAT_HOURS , 3_600_000_000 , '0/1/0/0 ' ];
26+ yield [1 , DateInterval::FORMAT_DAYS , 86_400_000_000 , '1/0/0/0 ' ];
27+ yield [1 , DateInterval::FORMAT_WEEKS , 604_800_000_000 , '7/0/0/0 ' ];
28+ yield [(0.1 + 0.7 ) * 10.0 , DateInterval::FORMAT_SECONDS , 8_000_000 , '0/0/0/8 ' ];
29+ yield [(0.1 + 0.7 ) * 10.0 , DateInterval::FORMAT_DAYS , 691200000000 , '8/0/0/0 ' ];
30+ yield [(0.1 + 0.7 ) * 10.0 , DateInterval::FORMAT_WEEKS , 4838400000000 , '56/0/0/0 ' ];
31+ yield [null , DateInterval::FORMAT_MILLISECONDS , 0 , '0/0/0/0 ' ];
32+ }
33+
1534 #[DataProvider('provideValuesToParse ' )]
1635 public function testParse (mixed $ value , string $ format , int $ microseconds , string $ formatted ): void
1736 {
1837 $ i = DateInterval::parse ($ value , $ format );
1938
20- self ::assertSame ($ microseconds , (int )$ i ->totalMicroseconds );
39+ self ::assertSame ($ microseconds , (int ) $ i ->totalMicroseconds );
2140 self ::assertSame ($ formatted , $ i ->format ('%d/%h/%i/%s ' ));
2241 if ($ i ->totalMicroseconds > 1_000_000 ) {
2342 self ::assertGreaterThan (0 , $ i ->totalSeconds );
@@ -28,7 +47,7 @@ public function testParseAndFormat(): void
2847 {
2948 $ i = DateInterval::parse (6_200 , DateInterval::FORMAT_MILLISECONDS );
3049
31- $ this ->assertSame (6_200_000 , (int )$ i ->totalMicroseconds );
50+ $ this ->assertSame (6_200_000 , (int ) $ i ->totalMicroseconds );
3251 self ::assertSame ('0/0/0/6 ' , $ i ->format ('%y/%h/%i/%s ' ));
3352 }
3453
@@ -40,25 +59,7 @@ public function testParseFromDuration(): void
4059
4160 $ i = DateInterval::parse ($ duration );
4261
43- self ::assertSame (5124 , (int )$ i ->totalSeconds );
62+ self ::assertSame (5124 , (int ) $ i ->totalSeconds );
4463 self ::assertSame (123_456 , $ i ->microseconds );
4564 }
46-
47- public static function provideValuesToParse (): iterable
48- {
49- yield [1 , DateInterval::FORMAT_MICROSECONDS , 1 , '0/0/0/0 ' ];
50- yield [1 , DateInterval::FORMAT_MILLISECONDS , 1_000 , '0/0/0/0 ' ];
51- yield [0.25 , DateInterval::FORMAT_SECONDS , 250_000 , '0/0/0/0 ' ];
52- yield [1 , DateInterval::FORMAT_SECONDS , 1_000_000 , '0/0/0/1 ' ];
53- yield [1.25 , DateInterval::FORMAT_SECONDS , 1_250_000 , '0/0/0/1 ' ];
54- yield [1.8 , DateInterval::FORMAT_SECONDS , 1_800_000 , '0/0/0/1 ' ];
55- yield [1 , DateInterval::FORMAT_MINUTES , 60_000_000 , '0/0/1/0 ' ];
56- yield [1.5 , DateInterval::FORMAT_MINUTES , 90_000_000 , '0/0/1/30 ' ];
57- yield [1 , DateInterval::FORMAT_HOURS , 3_600_000_000 , '0/1/0/0 ' ];
58- yield [1 , DateInterval::FORMAT_DAYS , 86_400_000_000 , '1/0/0/0 ' ];
59- yield [1 , DateInterval::FORMAT_WEEKS , 604_800_000_000 , '7/0/0/0 ' ];
60- yield [(0.1 + 0.7 ) * 10.0 , DateInterval::FORMAT_SECONDS , 8_000_000 , '0/0/0/8 ' ];
61- yield [(0.1 + 0.7 ) * 10.0 , DateInterval::FORMAT_DAYS , 691200000000 , '8/0/0/0 ' ];
62- yield [(0.1 + 0.7 ) * 10.0 , DateInterval::FORMAT_WEEKS , 4838400000000 , '56/0/0/0 ' ];
63- }
6465}
0 commit comments