diff options
author | Ondřej Surý <ondrej@sury.org> | 2010-10-21 08:52:46 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2010-10-21 08:52:46 +0200 |
commit | 01fcdff3849c3691d9aaeaab735846ab6d8895ca (patch) | |
tree | 6460876d356113fa7053df36f2aa00baa7db24a9 /ext/date/tests | |
parent | 855a09f4eded707941180c9d90acd17c25e29447 (diff) | |
download | php-upstream/5.3.3.tar.gz |
Imported Upstream version 5.3.3upstream/5.3.3
Diffstat (limited to 'ext/date/tests')
-rw-r--r-- | ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt | 2 | ||||
-rw-r--r-- | ext/date/tests/bug45554.phpt | 6 | ||||
-rw-r--r-- | ext/date/tests/bug46111.phpt | 21 | ||||
-rw-r--r-- | ext/date/tests/bug48187.phpt | 26 | ||||
-rw-r--r-- | ext/date/tests/bug48678.phpt | 4 | ||||
-rw-r--r-- | ext/date/tests/bug49059.phpt | 34 | ||||
-rw-r--r-- | ext/date/tests/bug49081.phpt | 22 | ||||
-rw-r--r-- | ext/date/tests/bug49700.phpt | 15 | ||||
-rw-r--r-- | ext/date/tests/bug49778.phpt | 30 | ||||
-rw-r--r-- | ext/date/tests/bug50055.phpt | 30 | ||||
-rw-r--r-- | ext/date/tests/bug50392.phpt | 84 | ||||
-rw-r--r-- | ext/date/tests/bug50475.phpt | 18 | ||||
-rw-r--r-- | ext/date/tests/bug51096.phpt | 55 | ||||
-rw-r--r-- | ext/date/tests/bug51393.phpt | 75 | ||||
-rw-r--r-- | ext/date/tests/bug51819.phpt | 31 | ||||
-rw-r--r-- | ext/date/tests/bug51994.phpt | 38 | ||||
-rw-r--r-- | ext/date/tests/bug52290.phpt | 27 | ||||
-rw-r--r-- | ext/date/tests/date_diff.phpt | 59 |
18 files changed, 520 insertions, 57 deletions
diff --git a/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt b/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt index bd6344fa2..126c4b832 100644 --- a/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt +++ b/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt @@ -26,7 +26,7 @@ var_dump( $abbr["acst"] ); --EXPECT-- *** Testing DateTimeZone::listAbbreviations() : basic functionality *** string(5) "array" -int(338) +int(399) -- Format a sample entry -- array(4) { diff --git a/ext/date/tests/bug45554.phpt b/ext/date/tests/bug45554.phpt index 9416214e9..0e9ebfd14 100644 --- a/ext/date/tests/bug45554.phpt +++ b/ext/date/tests/bug45554.phpt @@ -9,12 +9,12 @@ $d = date_create_from_format($format, "03-15-2005 12:22:29.000000 PST"); echo $d->format($format), "\n"; $d = date_create_from_format($format, "03-15-2005 12:22:29.001001 PST"); -echo $d->format($format), "\n"; +echo $d->format($format), " (precision isn't enough to show the 1 here)\n"; $d = date_create_from_format($format, "03-15-2005 12:22:29.0010 PST"); -var_dump( $d ); +echo $d->format($format), "\n"; ?> --EXPECT-- 03-15-2005 12:22:29.000000 PST +03-15-2005 12:22:29.001000 PST (precision isn't enough to show the 1 here) 03-15-2005 12:22:29.001000 PST -bool(false) diff --git a/ext/date/tests/bug46111.phpt b/ext/date/tests/bug46111.phpt new file mode 100644 index 000000000..806424ebc --- /dev/null +++ b/ext/date/tests/bug46111.phpt @@ -0,0 +1,21 @@ +--TEST-- +Bug #46111 (strtotime() returns false for some valid timezones) +--FILE-- +<?php +date_default_timezone_set('Asia/Calcutta'); +$timezones = timezone_identifiers_list(); + +# An empty list indicates no errors +print "[strtotime(timezone) == false - Begin List]\n"; +foreach ($timezones as $zone) { + $date_string = "2008-01-01 13:00:00 " . $zone; + + if (!strtotime($date_string)) { + echo $zone . "\n"; + } +} +print "[strtotime(timezone) == false - End List]\n"; +?> +--EXPECT-- +[strtotime(timezone) == false - Begin List] +[strtotime(timezone) == false - End List] diff --git a/ext/date/tests/bug48187.phpt b/ext/date/tests/bug48187.phpt new file mode 100644 index 000000000..24a295ddd --- /dev/null +++ b/ext/date/tests/bug48187.phpt @@ -0,0 +1,26 @@ +--TEST-- +Bug #48187 (DateTime::diff() corrupting microtime() result) +--FILE-- +<?php +// two arbitrary dates +$date1 = new DateTime('2005-07-23'); +$date2 = new DateTime('2006-02-14'); + +$begin_u = microtime(true); +$begin_t = time(); + +if (microtime(true) - $begin_u < 1) { + var_dump('microtime() difference less 1 second'); +} else { + var_dump('microtime() difference greater or equal 1 second'); +} + +if (time() - $begin_t < 1) { + var_dump('time() difference less 1 second'); +} else { + var_dump('time() difference greater or equal 1 second'); +} +?> +--EXPECTF-- +string(36) "microtime() difference less 1 second" +string(31) "time() difference less 1 second"
\ No newline at end of file diff --git a/ext/date/tests/bug48678.phpt b/ext/date/tests/bug48678.phpt index bf349412b..896693463 100644 --- a/ext/date/tests/bug48678.phpt +++ b/ext/date/tests/bug48678.phpt @@ -16,7 +16,7 @@ DateInterval Object [i] => 30 [s] => 5 [invert] => 0 - [days] => 0 + [days] => ) DateInterval Object ( @@ -27,5 +27,5 @@ DateInterval Object [i] => 30 [s] => 5 [invert] => 0 - [days] => 0 + [days] => ) diff --git a/ext/date/tests/bug49059.phpt b/ext/date/tests/bug49059.phpt new file mode 100644 index 000000000..48d2dacb2 --- /dev/null +++ b/ext/date/tests/bug49059.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #49059 (DateTime::diff() repeats previous sub() operation) +--FILE-- +<?php +date_default_timezone_set('Asia/Calcutta'); + +$date1 = date_create("2009-03-27"); +$date2 = date_create("2009-03-01"); +print "\$date1 at init: " . $date1->format("Y-m-d") . "\n"; +print "\$date2 at init: " . $date2->format("Y-m-d") . "\n"; +$diff = $date1->diff($date2); +print "\$date1 after first diff: " . $date1->format("Y-m-d") . "\n"; +print "\$diff->days after first diff: " . $diff->days . "\n"; +$date1 = $date1->sub(new DateInterval("P2D")); +print "\$date1 after sub: " . $date1->format("Y-m-d") . "\n"; +$diff = $date1->diff($date2); +print "\$date1 after second diff (called at \$date1): " . +$date1->format("Y-m-d") . "\n"; +print "\$diff->days after second diff: " . $diff->days . "\n"; +$diff = $date2->diff($date1); +print "\$date1 after third diff (called at \$date2): " . +$date1->format("Y-m-d") . "\n"; +print "\$diff->days after third diff: " . $diff->days . "\n"; +?> +--EXPECT-- +$date1 at init: 2009-03-27 +$date2 at init: 2009-03-01 +$date1 after first diff: 2009-03-27 +$diff->days after first diff: 26 +$date1 after sub: 2009-03-25 +$date1 after second diff (called at $date1): 2009-03-25 +$diff->days after second diff: 24 +$date1 after third diff (called at $date2): 2009-03-25 +$diff->days after third diff: 24 diff --git a/ext/date/tests/bug49081.phpt b/ext/date/tests/bug49081.phpt new file mode 100644 index 000000000..f4f02903d --- /dev/null +++ b/ext/date/tests/bug49081.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #49081 (DateTime::diff() mistake if start in January and interval > 28 days) +--FILE-- +<?php + date_default_timezone_set('Europe/Berlin'); + $d1 = new DateTime('2010-01-01 06:00:00'); + $d2 = new DateTime('2010-01-31 10:00:00'); + $d = $d1->diff($d2); + print_r($d); +?> +--EXPECT-- +DateInterval Object +( + [y] => 0 + [m] => 0 + [d] => 30 + [h] => 4 + [i] => 0 + [s] => 0 + [invert] => 0 + [days] => 30 +) diff --git a/ext/date/tests/bug49700.phpt b/ext/date/tests/bug49700.phpt new file mode 100644 index 000000000..a34705259 --- /dev/null +++ b/ext/date/tests/bug49700.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #49700 (memory leaks in php_date.c if garbage collector is enabled) +--INI-- +date.timezone=GMT +--FILE-- +<?php +gc_enable(); +$objs = array(); +$objs[1] = new DateTime(); +gc_collect_cycles(); +unset($objs); +echo "OK\n"; +?> +--EXPECT-- +OK diff --git a/ext/date/tests/bug49778.phpt b/ext/date/tests/bug49778.phpt new file mode 100644 index 000000000..67c8e27f9 --- /dev/null +++ b/ext/date/tests/bug49778.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #49778 (DateInterval::format("%a") is always zero when an interval is created from an ISO string) +--FILE-- +<?php +$i=new DateInterval('P7D'); +var_dump($i); +echo $i->format("%d"), "\n"; +echo $i->format("%a"), "\n"; +?> +--EXPECT-- +object(DateInterval)#1 (8) { + ["y"]=> + int(0) + ["m"]=> + int(0) + ["d"]=> + int(7) + ["h"]=> + int(0) + ["i"]=> + int(0) + ["s"]=> + int(0) + ["invert"]=> + int(0) + ["days"]=> + bool(false) +} +7 +(unknown) diff --git a/ext/date/tests/bug50055.phpt b/ext/date/tests/bug50055.phpt new file mode 100644 index 000000000..907bb93e4 --- /dev/null +++ b/ext/date/tests/bug50055.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #50555 (DateTime::sub() allows 'relative' time modifications). +--FILE-- +<?php +$now = '2010-03-07 13:21:38 UTC'; +//positive DateInterval +$da1 = date_create( $now ); +$ds1 = date_create( $now ); +$i = DateInterval::createFromDateString('third Tuesday of next month'); +echo $da1->format( DateTime::ISO8601 ), "\n"; +echo date_add($da1, $i)->format( DateTime::ISO8601 ), "\n"; +date_sub($ds1, $i); + +//negative DateInterval +$da2 = date_create( $now ); +$ds2 = date_create( $now ); +$i2 = DateInterval::createFromDateString('third Tuesday of last month'); +echo $da2->format( DateTime::ISO8601 ), "\n"; +echo date_add($da2, $i2)->format( DateTime::ISO8601 ), "\n";//works +date_sub($ds2, $i); +?> +--EXPECTF-- +2010-03-07T13:21:38+0000 +2010-04-20T13:21:38+0000 + +Warning: date_sub(): Only non-special relative time specifications are supported for subtraction in %sbug50055.php on line 9 +2010-03-07T13:21:38+0000 +2010-02-16T13:21:38+0000 + +Warning: date_sub(): Only non-special relative time specifications are supported for subtraction in %sbug50055.php on line 17 diff --git a/ext/date/tests/bug50392.phpt b/ext/date/tests/bug50392.phpt index 8d10923e0..4fa506ef5 100644 --- a/ext/date/tests/bug50392.phpt +++ b/ext/date/tests/bug50392.phpt @@ -7,57 +7,39 @@ date_default_timezone_set('Europe/Bratislava'); $base = '2009-03-01 18:00:00'; for ($i = 0; $i < 8; $i++) { - var_dump(date_create_from_format('Y-m-d H:i:s.u', $base . '.' . str_repeat('1', $i))); + $string = $base . '.' . str_repeat($i, $i); + echo $string, "\n- "; + $result = date_parse_from_format('Y-m-d H:i:s.u', $string); + echo $result['fraction'] ? $result['fraction'] : 'X', "\n"; + foreach( $result['errors'] as $error ) { + echo "- ", $error, "\n"; + } + echo "\n"; } ?> --EXPECT-- -bool(false) -object(DateTime)#2 (3) { - ["date"]=> - string(19) "2009-03-01 18:00:00" - ["timezone_type"]=> - int(3) - ["timezone"]=> - string(17) "Europe/Bratislava" -} -object(DateTime)#2 (3) { - ["date"]=> - string(19) "2009-03-01 18:00:00" - ["timezone_type"]=> - int(3) - ["timezone"]=> - string(17) "Europe/Bratislava" -} -object(DateTime)#2 (3) { - ["date"]=> - string(19) "2009-03-01 18:00:00" - ["timezone_type"]=> - int(3) - ["timezone"]=> - string(17) "Europe/Bratislava" -} -object(DateTime)#2 (3) { - ["date"]=> - string(19) "2009-03-01 18:00:00" - ["timezone_type"]=> - int(3) - ["timezone"]=> - string(17) "Europe/Bratislava" -} -object(DateTime)#2 (3) { - ["date"]=> - string(19) "2009-03-01 18:00:00" - ["timezone_type"]=> - int(3) - ["timezone"]=> - string(17) "Europe/Bratislava" -} -object(DateTime)#2 (3) { - ["date"]=> - string(19) "2009-03-01 18:00:00" - ["timezone_type"]=> - int(3) - ["timezone"]=> - string(17) "Europe/Bratislava" -} -bool(false) +2009-03-01 18:00:00. +- X +- Data missing + +2009-03-01 18:00:00.1 +- 0.1 + +2009-03-01 18:00:00.22 +- 0.22 + +2009-03-01 18:00:00.333 +- 0.333 + +2009-03-01 18:00:00.4444 +- 0.4444 + +2009-03-01 18:00:00.55555 +- 0.55555 + +2009-03-01 18:00:00.666666 +- 0.666666 + +2009-03-01 18:00:00.7777777 +- 0.777777 +- Trailing data diff --git a/ext/date/tests/bug50475.phpt b/ext/date/tests/bug50475.phpt new file mode 100644 index 000000000..454e86c6b --- /dev/null +++ b/ext/date/tests/bug50475.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #50475 (DateTime::setISODate followed by DateTime::setTime) +--FILE-- +<?php +date_default_timezone_set('Asia/Calcutta'); + +$date = new DateTime('18-01-2009 00:00:00'); + +$date->setISODate(2009, 6, 1); + +var_dump($date->format('Y-m-d H:i:s')); + +$date->setTime(8, 0); +var_dump($date->format('Y-m-d H:i:s')); +?> +--EXPECT-- +string(19) "2009-02-02 00:00:00" +string(19) "2009-02-02 08:00:00"
\ No newline at end of file diff --git a/ext/date/tests/bug51096.phpt b/ext/date/tests/bug51096.phpt new file mode 100644 index 000000000..31503bc7a --- /dev/null +++ b/ext/date/tests/bug51096.phpt @@ -0,0 +1,55 @@ +--TEST-- +Bug #51096: Test for "first day" vs "first day of". +--FILE-- +<?php +$tests = array( + 'first day', + 'last day', + 'next month', + 'first day next month', + 'last day next month', + 'first day of next month', + 'last day of next month' +); + +foreach ( $tests as $test ) +{ + $result = date_parse( $test ); + $rel = $result['relative']; + echo $test, "\n- month: ", $rel['month'], '; day: ', $rel['day'], + '; first-day-of: ', isset( $rel['first_day_of_month'] ) ? 'true' : 'false', + '; last-day-of: ', isset( $rel['last_day_of_month'] ) ? 'true' : 'false', "\n"; + $date = new DateTime( '2010-03-06 15:21 UTC' ); + echo '- ', $date->format( DateTime::ISO8601 ); + $date->modify( $test ); + echo ' -> ', $date->format( DateTime::ISO8601 ), "\n\n"; +} +?> +--EXPECT-- +first day +- month: 0; day: 1; first-day-of: false; last-day-of: false +- 2010-03-06T15:21:00+0000 -> 2010-03-07T15:21:00+0000 + +last day +- month: 0; day: -1; first-day-of: false; last-day-of: false +- 2010-03-06T15:21:00+0000 -> 2010-03-05T15:21:00+0000 + +next month +- month: 1; day: 0; first-day-of: false; last-day-of: false +- 2010-03-06T15:21:00+0000 -> 2010-04-06T15:21:00+0000 + +first day next month +- month: 1; day: 1; first-day-of: false; last-day-of: false +- 2010-03-06T15:21:00+0000 -> 2010-04-07T15:21:00+0000 + +last day next month +- month: 1; day: -1; first-day-of: false; last-day-of: false +- 2010-03-06T15:21:00+0000 -> 2010-04-05T15:21:00+0000 + +first day of next month +- month: 1; day: 0; first-day-of: true; last-day-of: false +- 2010-03-06T15:21:00+0000 -> 2010-04-01T15:21:00+0000 + +last day of next month +- month: 1; day: 0; first-day-of: false; last-day-of: true +- 2010-03-06T15:21:00+0000 -> 2010-04-30T15:21:00+0000 diff --git a/ext/date/tests/bug51393.phpt b/ext/date/tests/bug51393.phpt new file mode 100644 index 000000000..e3f0983ae --- /dev/null +++ b/ext/date/tests/bug51393.phpt @@ -0,0 +1,75 @@ +--TEST-- +Bug #51393 (DateTime::createFromFormat() fails if format string contains timezone) +--INI-- +date.timezone=UTC +--FILE-- +<?php +$dt = DateTime::createFromFormat('O', '+0800'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('P', '+08:00'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('O', '-0800'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('P', '-08:00'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[O]', '[+0800]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[P]', '[+08:00]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[O]', '[-0800]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[P]', '[-08:00]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('O', 'GMT+0800'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('P', 'GMT+08:00'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('O', 'GMT-0800'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('P', 'GMT-08:00'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[O]', '[GMT+0800]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[P]', '[GMT+08:00]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[O]', '[GMT-0800]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('[P]', '[GMT-08:00]'); +var_dump($dt->getOffset()); + +$dt = DateTime::createFromFormat('O', 'invalid'); +var_dump($dt); +?> +--EXPECT-- +int(28800) +int(28800) +int(-28800) +int(-28800) +int(28800) +int(28800) +int(-28800) +int(-28800) +int(28800) +int(28800) +int(-28800) +int(-28800) +int(28800) +int(28800) +int(-28800) +int(-28800) +bool(false) diff --git a/ext/date/tests/bug51819.phpt b/ext/date/tests/bug51819.phpt new file mode 100644 index 000000000..afcb9c7d4 --- /dev/null +++ b/ext/date/tests/bug51819.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #51819 (Case discrepancy in timezone names cause Uncaught exception and fatal error) +--FILE-- +<?php +$aTzAbbr = timezone_abbreviations_list(); + +$aTz = array(); +foreach (array_keys($aTzAbbr) as $sKey) { + foreach (array_keys($aTzAbbr[$sKey]) as $iIndex) { + $sTz = $aTzAbbr[$sKey][$iIndex]['timezone_id']; + + if (! in_array($sTz, $aTz)) { + array_push($aTz, $sTz); + } + } +} + +foreach ($aTz as $sTz) { + $sDate = '2010-05-15 00:00:00 ' . $sTz; + + try { + $oDateTime = new DateTime($sDate); + } catch (Exception $oException) { + var_dump($oException->getMessage()); + } +} + +var_dump('this should be the only output'); +?> +--EXPECTF-- +string(30) "this should be the only output"
\ No newline at end of file diff --git a/ext/date/tests/bug51994.phpt b/ext/date/tests/bug51994.phpt new file mode 100644 index 000000000..e136c8f2b --- /dev/null +++ b/ext/date/tests/bug51994.phpt @@ -0,0 +1,38 @@ +--TEST-- +Bug #51994 (date_parse_from_format is parsing invalid date using 'yz' format) +--FILE-- +<?php +$trans_date = '10153'; // 152nd day of year 2010 -> 03.06.2010 +$a_date = date_parse_from_format('yz', $trans_date); + +var_dump($a_date); +?> +--EXPECTF-- +array(12) { + ["year"]=> + int(2010) + ["month"]=> + int(6) + ["day"]=> + int(3) + ["hour"]=> + bool(false) + ["minute"]=> + bool(false) + ["second"]=> + bool(false) + ["fraction"]=> + bool(false) + ["warning_count"]=> + int(0) + ["warnings"]=> + array(0) { + } + ["error_count"]=> + int(0) + ["errors"]=> + array(0) { + } + ["is_localtime"]=> + bool(false) +}
\ No newline at end of file diff --git a/ext/date/tests/bug52290.phpt b/ext/date/tests/bug52290.phpt new file mode 100644 index 000000000..c1ee9d47a --- /dev/null +++ b/ext/date/tests/bug52290.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #52290 (setDate, setISODate, setTime works wrong when DateTime created from timestamp) +--FILE-- +<?php +$tz = 'UTC'; +date_default_timezone_set($tz); + +$ts = strtotime('2006-01-01'); +$dt = new DateTime('@'.$ts); +$dt->setTimezone(new DateTimeZone($tz)); + +var_dump($dt->format('o-\WW-N | Y-m-d | H:i:s | U')); + +$dt->setISODate(2005, 52, 1); +var_dump($dt->format('o-\WW-N | Y-m-d | H:i:s | U')); + +$dt->setDate(2007, 10, 10); +var_dump($dt->format('o-\WW-N | Y-m-d | H:i:s | U')); + +$dt->setTime(20, 30, 40); +var_dump($dt->format('o-\WW-N | Y-m-d | H:i:s | U')); +?> +--EXPECTF-- +string(47) "2005-W52-7 | 2006-01-01 | 00:00:00 | 1136073600" +string(47) "2005-W52-1 | 2005-12-26 | 00:00:00 | 1135555200" +string(47) "2007-W40-5 | 2007-10-10 | 00:00:00 | 1191974400" +string(47) "2007-W40-5 | 2007-10-10 | 20:30:40 | 1192048240"
\ No newline at end of file diff --git a/ext/date/tests/date_diff.phpt b/ext/date/tests/date_diff.phpt new file mode 100644 index 000000000..31783a884 --- /dev/null +++ b/ext/date/tests/date_diff.phpt @@ -0,0 +1,59 @@ +--TEST-- +Extensive test for date_diff(). +--INI-- +date.timezone=UTC +--FILE-- +<?php +$ok = 0; +define( 'COUNT', 120 ); +$d0 = new DateTime('2009-11-20'); +for ( $i = 0; $i < COUNT * 12; $i++ ) +{ + $d = clone $d0; + $dates[$i] = $d->add( new DateInterval( "P{$i}D" ) ); +} + +for ( $i = 0; $i < COUNT; $i++) +{ +// echo $dates[$i]->format( "Y-m-d\n" ); + for ( $j = 0; $j < COUNT * 12; $j++) + { + $diff = date_diff( $dates[$i], $dates[$j] ); + /* + printf( "\t%s %s %3d %s\n", + $dates[$i]->format( 'Y-m-d' ), + $dates[$j]->format( 'Y-m-d' ), + $diff->format( '%a' ), + $diff->format( '%y-%m-%d' ) + ); + */ + + $current = clone $dates[$i]; + $int = new DateInterval( $diff->format( 'P%yY%mM%dD' ) ); + if ( $current > $dates[$j] ) + { + $current->sub( $int ); + } + else + { + $current->add( $int ); + } + if ( $current != $dates[$j] ) + { + echo "FAIL: ", + $dates[$i]->format( 'Y-m-d' ), " + ", + $int->format( '%y-%m-%d' ), " = ", + $current->format( 'Y-m-d' ), " (", + $dates[$j]->format( 'Y-m-d' ), ")\n"; + } + else + { + $ok++; + } + } +} + +echo $ok, "\n"; +?> +--EXPECT-- +172800 |