From 7831a1cae65bb3a3654cd65044ce482a5e2c9247 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Fri, 22 Jul 2022 11:30:00 +0100 Subject: [PATCH] Add test case for GH-8964 --- NEWS | 2 ++ ext/date/tests/bug-gh8964-001.phpt | 25 ++++++++++++++++++++ ext/date/tests/bug-gh8964-002.phpt | 38 ++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 ext/date/tests/bug-gh8964-001.phpt create mode 100644 ext/date/tests/bug-gh8964-002.phpt diff --git a/NEWS b/NEWS index cbcfe8d347b..c2a7164e23f 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,8 @@ PHP NEWS - Date: . Fixed bug GH-8730 (DateTime::diff miscalculation is same time zone of different type). (Derick) + . Fixed bug GH-8964 (DateTime object comparison after applying delta less + than 1 second). (Derick) . Fixed bug #81263 (Wrong result from DateTimeImmutable::diff). (Derick) - DBA: diff --git a/ext/date/tests/bug-gh8964-001.phpt b/ext/date/tests/bug-gh8964-001.phpt new file mode 100644 index 00000000000..a71cccc25f8 --- /dev/null +++ b/ext/date/tests/bug-gh8964-001.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test for bug GH-8964: DateTime object comparison after applying delta less than 1 second +--INI-- +date.timezone=UTC +--FILE-- +f = 0.9; + +$expectedLower = $actual->sub($delta); +$expectedUpper = $actual->add($delta); + +echo $expectedLower->format( 'H:i:s.u U' ), "\n"; +echo $actual ->format( 'H:i:s.u U' ), "\n"; +echo $expectedUpper->format( 'H:i:s.u U' ), "\n"; + +var_dump($actual < $expectedLower, $actual > $expectedUpper); +?> +--EXPECTF-- +15:00:09.100000 1658415609 +15:00:10.000000 1658415610 +15:00:10.900000 1658415610 +bool(false) +bool(false) diff --git a/ext/date/tests/bug-gh8964-002.phpt b/ext/date/tests/bug-gh8964-002.phpt new file mode 100644 index 00000000000..1a1c0a88f08 --- /dev/null +++ b/ext/date/tests/bug-gh8964-002.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test for bug GH-8964: DateTime object comparison after applying delta less than 1 second +--INI-- +date.timezone=UTC +--FILE-- +f = -0.9; + + $expectedLower = $actual->sub($delta); + $expectedUpper = $actual->add($delta); + + echo $expectedLower->format( 'H:i:s.u U' ), "\n"; + echo $actual ->format( 'H:i:s.u U' ), "\n"; + echo $expectedUpper->format( 'H:i:s.u U' ), "\n"; + + var_dump($actual < $expectedLower, $actual > $expectedUpper); +} +?> +--EXPECTF-- +15:00:10.900000 1658415610 +15:00:10.000000 1658415610 +15:00:09.100000 1658415609 +bool(true) +bool(true) +15:00:09.900000 1658415609 +15:00:10.000000 1658415610 +15:00:10.100000 1658415610 +bool(false) +bool(false) +15:00:08.900000 1658415608 +15:00:10.000000 1658415610 +15:00:11.100000 1658415611 +bool(false) +bool(false)