1--TEST-- 2Test new DateTime() function : usage variation - Passing unexpected values to first argument $time. 3--FILE-- 4<?php 5/* Prototype : DateTime::__construct ([ string $time="now" [, DateTimeZone $timezone=NULL ]] ) 6 * Description: Returns new DateTime object 7 * Source code: ext/date/php_date.c 8 * Alias to functions: date_create 9 */ 10 11echo "*** Testing new DateTime(): usage variation - unexpected values to first argument \$time***\n"; 12 13//Set the default time zone 14date_default_timezone_set("Europe/London"); 15 16//get an unset variable 17$unset_var = 10; 18unset ($unset_var); 19 20// define some classes 21class classWithToString 22{ 23 public function __toString() { 24 return "Class A object"; 25 } 26} 27 28class classWithoutToString 29{ 30} 31 32// heredoc string 33$heredoc = <<<EOT 34hello world 35EOT; 36 37// add arrays 38$index_array = array (1, 2, 3); 39$assoc_array = array ('one' => 1, 'two' => 2); 40 41// resource 42$file_handle = fopen(__FILE__, 'r'); 43 44//array of values to iterate over 45$inputs = array( 46 47 // int data 48 'int 0' => 0, 49 'int 1' => 1, 50 'int 12345' => 12345, 51 'int -12345' => -12345, 52 53 // float data 54 'float 10.5' => 10.5, 55 'float -10.5' => -10.5, 56 'float .5' => .5, 57 58 // array data 59 'empty array' => array(), 60 'int indexed array' => $index_array, 61 'associative array' => $assoc_array, 62 'nested arrays' => array('foo', $index_array, $assoc_array), 63 64 // null data 65 'uppercase NULL' => NULL, 66 'lowercase null' => null, 67 68 // boolean data 69 'lowercase true' => true, 70 'lowercase false' =>false, 71 'uppercase TRUE' =>TRUE, 72 'uppercase FALSE' =>FALSE, 73 74 // empty data 75 'empty string DQ' => "", 76 'empty string SQ' => '', 77 78 // string data 79 'string DQ' => "string", 80 'string SQ' => 'string', 81 'mixed case string' => "sTrInG", 82 'heredoc' => $heredoc, 83 84 // object data 85 'instance of classWithToString' => new classWithToString(), 86 'instance of classWithoutToString' => new classWithoutToString(), 87 88 // undefined data 89 'undefined var' => @$undefined_var, 90 91 // unset data 92 'unset var' => @$unset_var, 93 94 // resource 95 'resource' => $file_handle 96); 97 98$timezone = new DateTimeZone("Europe/London"); 99 100foreach($inputs as $variation =>$time) { 101 echo "\n-- $variation --\n"; 102 103 try { 104 var_dump( new DateTime($time) ); 105 } catch (Throwable $e) { 106 $msg = $e->getMessage(); 107 echo "FAILED: " . $msg . "\n"; 108 } 109 110 try { 111 var_dump( new DateTime($time, $timezone) ); 112 } catch (Throwable $e) { 113 $msg = $e->getMessage(); 114 echo "FAILED: " . $msg . "\n"; 115 } 116}; 117 118// closing the resource 119fclose( $file_handle); 120 121?> 122===DONE=== 123--EXPECTF-- 124*** Testing new DateTime(): usage variation - unexpected values to first argument $time*** 125 126-- int 0 -- 127FAILED: DateTime::__construct(): Failed to parse time string (0) at position 0 (0): Unexpected character 128FAILED: DateTime::__construct(): Failed to parse time string (0) at position 0 (0): Unexpected character 129 130-- int 1 -- 131FAILED: DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character 132FAILED: DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character 133 134-- int 12345 -- 135FAILED: DateTime::__construct(): Failed to parse time string (12345) at position 4 (5): Unexpected character 136FAILED: DateTime::__construct(): Failed to parse time string (12345) at position 4 (5): Unexpected character 137 138-- int -12345 -- 139FAILED: DateTime::__construct(): Failed to parse time string (-12345) at position 5 (5): Unexpected character 140FAILED: DateTime::__construct(): Failed to parse time string (-12345) at position 5 (5): Unexpected character 141 142-- float 10.5 -- 143object(DateTime)#%d (3) { 144 ["date"]=> 145 string(26) "%s" 146 ["timezone_type"]=> 147 int(3) 148 ["timezone"]=> 149 string(13) "Europe/London" 150} 151object(DateTime)#%d (3) { 152 ["date"]=> 153 string(26) "%s" 154 ["timezone_type"]=> 155 int(3) 156 ["timezone"]=> 157 string(13) "Europe/London" 158} 159 160-- float -10.5 -- 161FAILED: DateTime::__construct(): Failed to parse time string (-10.5) at position 4 (5): Unexpected character 162FAILED: DateTime::__construct(): Failed to parse time string (-10.5) at position 4 (5): Unexpected character 163 164-- float .5 -- 165object(DateTime)#%d (3) { 166 ["date"]=> 167 string(26) "%s" 168 ["timezone_type"]=> 169 int(3) 170 ["timezone"]=> 171 string(13) "Europe/London" 172} 173object(DateTime)#%d (3) { 174 ["date"]=> 175 string(26) "%s" 176 ["timezone_type"]=> 177 int(3) 178 ["timezone"]=> 179 string(13) "Europe/London" 180} 181 182-- empty array -- 183FAILED: DateTime::__construct() expects parameter 1 to be string, array given 184FAILED: DateTime::__construct() expects parameter 1 to be string, array given 185 186-- int indexed array -- 187FAILED: DateTime::__construct() expects parameter 1 to be string, array given 188FAILED: DateTime::__construct() expects parameter 1 to be string, array given 189 190-- associative array -- 191FAILED: DateTime::__construct() expects parameter 1 to be string, array given 192FAILED: DateTime::__construct() expects parameter 1 to be string, array given 193 194-- nested arrays -- 195FAILED: DateTime::__construct() expects parameter 1 to be string, array given 196FAILED: DateTime::__construct() expects parameter 1 to be string, array given 197 198-- uppercase NULL -- 199object(DateTime)#%d (3) { 200 ["date"]=> 201 string(26) "%s" 202 ["timezone_type"]=> 203 int(3) 204 ["timezone"]=> 205 string(13) "Europe/London" 206} 207object(DateTime)#%d (3) { 208 ["date"]=> 209 string(26) "%s" 210 ["timezone_type"]=> 211 int(3) 212 ["timezone"]=> 213 string(13) "Europe/London" 214} 215 216-- lowercase null -- 217object(DateTime)#%d (3) { 218 ["date"]=> 219 string(26) "%s" 220 ["timezone_type"]=> 221 int(3) 222 ["timezone"]=> 223 string(13) "Europe/London" 224} 225object(DateTime)#%d (3) { 226 ["date"]=> 227 string(26) "%s" 228 ["timezone_type"]=> 229 int(3) 230 ["timezone"]=> 231 string(13) "Europe/London" 232} 233 234-- lowercase true -- 235FAILED: DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character 236FAILED: DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character 237 238-- lowercase false -- 239object(DateTime)#%d (3) { 240 ["date"]=> 241 string(26) "%s" 242 ["timezone_type"]=> 243 int(3) 244 ["timezone"]=> 245 string(13) "Europe/London" 246} 247object(DateTime)#%d (3) { 248 ["date"]=> 249 string(26) "%s" 250 ["timezone_type"]=> 251 int(3) 252 ["timezone"]=> 253 string(13) "Europe/London" 254} 255 256-- uppercase TRUE -- 257FAILED: DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character 258FAILED: DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character 259 260-- uppercase FALSE -- 261object(DateTime)#%d (3) { 262 ["date"]=> 263 string(26) "%s" 264 ["timezone_type"]=> 265 int(3) 266 ["timezone"]=> 267 string(13) "Europe/London" 268} 269object(DateTime)#%d (3) { 270 ["date"]=> 271 string(26) "%s" 272 ["timezone_type"]=> 273 int(3) 274 ["timezone"]=> 275 string(13) "Europe/London" 276} 277 278-- empty string DQ -- 279object(DateTime)#%d (3) { 280 ["date"]=> 281 string(26) "%s" 282 ["timezone_type"]=> 283 int(3) 284 ["timezone"]=> 285 string(13) "Europe/London" 286} 287object(DateTime)#%d (3) { 288 ["date"]=> 289 string(26) "%s" 290 ["timezone_type"]=> 291 int(3) 292 ["timezone"]=> 293 string(13) "Europe/London" 294} 295 296-- empty string SQ -- 297object(DateTime)#%d (3) { 298 ["date"]=> 299 string(26) "%s" 300 ["timezone_type"]=> 301 int(3) 302 ["timezone"]=> 303 string(13) "Europe/London" 304} 305object(DateTime)#%d (3) { 306 ["date"]=> 307 string(26) "%s" 308 ["timezone_type"]=> 309 int(3) 310 ["timezone"]=> 311 string(13) "Europe/London" 312} 313 314-- string DQ -- 315FAILED: DateTime::__construct(): Failed to parse time string (string) at position 0 (s): The timezone could not be found in the database 316FAILED: DateTime::__construct(): Failed to parse time string (string) at position 0 (s): The timezone could not be found in the database 317 318-- string SQ -- 319FAILED: DateTime::__construct(): Failed to parse time string (string) at position 0 (s): The timezone could not be found in the database 320FAILED: DateTime::__construct(): Failed to parse time string (string) at position 0 (s): The timezone could not be found in the database 321 322-- mixed case string -- 323FAILED: DateTime::__construct(): Failed to parse time string (sTrInG) at position 0 (s): The timezone could not be found in the database 324FAILED: DateTime::__construct(): Failed to parse time string (sTrInG) at position 0 (s): The timezone could not be found in the database 325 326-- heredoc -- 327FAILED: DateTime::__construct(): Failed to parse time string (hello world) at position 0 (h): The timezone could not be found in the database 328FAILED: DateTime::__construct(): Failed to parse time string (hello world) at position 0 (h): The timezone could not be found in the database 329 330-- instance of classWithToString -- 331FAILED: DateTime::__construct(): Failed to parse time string (Class A object) at position 0 (C): The timezone could not be found in the database 332FAILED: DateTime::__construct(): Failed to parse time string (Class A object) at position 0 (C): The timezone could not be found in the database 333 334-- instance of classWithoutToString -- 335FAILED: DateTime::__construct() expects parameter 1 to be string, object given 336FAILED: DateTime::__construct() expects parameter 1 to be string, object given 337 338-- undefined var -- 339object(DateTime)#%d (3) { 340 ["date"]=> 341 string(26) "%s" 342 ["timezone_type"]=> 343 int(3) 344 ["timezone"]=> 345 string(13) "Europe/London" 346} 347object(DateTime)#%d (3) { 348 ["date"]=> 349 string(26) "%s" 350 ["timezone_type"]=> 351 int(3) 352 ["timezone"]=> 353 string(13) "Europe/London" 354} 355 356-- unset var -- 357object(DateTime)#%d (3) { 358 ["date"]=> 359 string(26) "%s" 360 ["timezone_type"]=> 361 int(3) 362 ["timezone"]=> 363 string(13) "Europe/London" 364} 365object(DateTime)#%d (3) { 366 ["date"]=> 367 string(26) "%s" 368 ["timezone_type"]=> 369 int(3) 370 ["timezone"]=> 371 string(13) "Europe/London" 372} 373 374-- resource -- 375FAILED: DateTime::__construct() expects parameter 1 to be string, resource given 376FAILED: DateTime::__construct() expects parameter 1 to be string, resource given 377===DONE=== 378