1--TEST-- 2Test is_float() & it's FALIASes: is_double() & is_real() functions 3--SKIPIF-- 4<?php 5if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); 6?> 7--INI-- 8precision=14 9--FILE-- 10<?php 11/* Prototype: bool is_float ( mixed $var ); 12 * Description: Finds whether the given variable is a float 13 */ 14 15echo "*** Testing is_float(), is_double() and is_real() with float values***\n"; 16// different valid float vlaues 17$floats = array( 18 -2147483649, // float value 19 2147483648, // float value 20 -0x80000001, // float value, beyond max negative int 21 0x800000001, // float value, beyond max positive int 22 020000000001, // float value, beyond max positive int 23 -020000000001, // float value, beyond max negative int 24 0.0, 25 -0.1, 26 10.0000000000000000005, 27 10.5e+5, 28 1e5, 29 -1e5, 30 1e-5, 31 -1e-5, 32 1e+5, 33 -1e+5, 34 1E5, 35 -1E5, 36 1E+5, 37 -1E+5, 38 1E-5, 39 -1E-5, 40 .5e+7, 41 -.5e+7, 42 .6e-19, 43 -.6e-19, 44 .05E+44, 45 -.05E+44, 46 .0034E-30, 47 -.0034E-30 48); 49/* loop to check that is_float(), is_double() & is_real() recognizes 50 different float values, expected: bool(true) */ 51$loop_counter = 1; 52foreach ($floats as $float ) { 53 echo "-- Iteration $loop_counter --\n"; $loop_counter++; 54 var_dump( is_float($float) ); 55 var_dump( is_double($float) ); 56 var_dump( is_real($float) ); 57} 58 59echo "\n*** Testing is_float(), is_double() & is_real() with non float values ***\n"; 60// get a resource type variable 61$fp = fopen (__FILE__, "r"); 62$dfp = opendir ( dirname(__FILE__) ); 63 64// unset variable 65$unset_var = 10; 66unset ($unset_var); 67 68// non_scalar values, objects, arrays, resources and boolean 69class foo 70{ 71 var $array = array(10.5); 72}; 73$object = new foo(); 74 75$not_floats = array ( 76 new foo, //object 77 $object, 78 79 $fp, // resource 80 $dfp, 81 82 array(), // arrays 83 array(NULL), 84 array(0.5e10), 85 array(1,2,3,4), 86 array("string"), 87 88 NULL, // nulls 89 null, 90 91 true, // boolean 92 TRUE, 93 false, 94 FALSE, 95 96 "", // strings 97 '', 98 "0", 99 '0', 100 "0.0", 101 '0.0', 102 '0.5', 103 "-0.5", 104 "1e5", 105 '1e5', 106 '1.5e6_string', 107 "1.5e6_string", 108 109 1, // integers, hex and octal 110 -1, 111 0, 112 12345, 113 0xFF55, 114 -0x673, 115 0123, 116 -0123, 117 118 @$unset_var, // unset variable 119 @$undefined_var 120); 121/* loop through the $not_floats to see working of 122 is_float(), is_double() & is_real() on objects, 123 arrays, boolean and others */ 124$loop_counter = 1; 125foreach ($not_floats as $value ) { 126 echo "--Iteration $loop_counter--\n"; $loop_counter++; 127 var_dump( is_float($value) ); 128 var_dump( is_double($value) ); 129 var_dump( is_real($value) ); 130} 131 132echo "\n*** Testing error conditions ***\n"; 133//Zero argument 134var_dump( is_float() ); 135var_dump( is_double() ); 136var_dump( is_real() ); 137 138//arguments more than expected 139var_dump( is_float( $floats[0], $floats[1]) ); 140var_dump( is_double( $floats[0], $floats[1]) ); 141var_dump( is_real( $floats[0], $floats[1]) ); 142 143echo "Done\n"; 144?> 145--EXPECTF-- 146*** Testing is_float(), is_double() and is_real() with float values*** 147-- Iteration 1 -- 148bool(false) 149bool(false) 150bool(false) 151-- Iteration 2 -- 152bool(false) 153bool(false) 154bool(false) 155-- Iteration 3 -- 156bool(false) 157bool(false) 158bool(false) 159-- Iteration 4 -- 160bool(false) 161bool(false) 162bool(false) 163-- Iteration 5 -- 164bool(false) 165bool(false) 166bool(false) 167-- Iteration 6 -- 168bool(false) 169bool(false) 170bool(false) 171-- Iteration 7 -- 172bool(true) 173bool(true) 174bool(true) 175-- Iteration 8 -- 176bool(true) 177bool(true) 178bool(true) 179-- Iteration 9 -- 180bool(true) 181bool(true) 182bool(true) 183-- Iteration 10 -- 184bool(true) 185bool(true) 186bool(true) 187-- Iteration 11 -- 188bool(true) 189bool(true) 190bool(true) 191-- Iteration 12 -- 192bool(true) 193bool(true) 194bool(true) 195-- Iteration 13 -- 196bool(true) 197bool(true) 198bool(true) 199-- Iteration 14 -- 200bool(true) 201bool(true) 202bool(true) 203-- Iteration 15 -- 204bool(true) 205bool(true) 206bool(true) 207-- Iteration 16 -- 208bool(true) 209bool(true) 210bool(true) 211-- Iteration 17 -- 212bool(true) 213bool(true) 214bool(true) 215-- Iteration 18 -- 216bool(true) 217bool(true) 218bool(true) 219-- Iteration 19 -- 220bool(true) 221bool(true) 222bool(true) 223-- Iteration 20 -- 224bool(true) 225bool(true) 226bool(true) 227-- Iteration 21 -- 228bool(true) 229bool(true) 230bool(true) 231-- Iteration 22 -- 232bool(true) 233bool(true) 234bool(true) 235-- Iteration 23 -- 236bool(true) 237bool(true) 238bool(true) 239-- Iteration 24 -- 240bool(true) 241bool(true) 242bool(true) 243-- Iteration 25 -- 244bool(true) 245bool(true) 246bool(true) 247-- Iteration 26 -- 248bool(true) 249bool(true) 250bool(true) 251-- Iteration 27 -- 252bool(true) 253bool(true) 254bool(true) 255-- Iteration 28 -- 256bool(true) 257bool(true) 258bool(true) 259-- Iteration 29 -- 260bool(true) 261bool(true) 262bool(true) 263-- Iteration 30 -- 264bool(true) 265bool(true) 266bool(true) 267 268*** Testing is_float(), is_double() & is_real() with non float values *** 269--Iteration 1-- 270bool(false) 271bool(false) 272bool(false) 273--Iteration 2-- 274bool(false) 275bool(false) 276bool(false) 277--Iteration 3-- 278bool(false) 279bool(false) 280bool(false) 281--Iteration 4-- 282bool(false) 283bool(false) 284bool(false) 285--Iteration 5-- 286bool(false) 287bool(false) 288bool(false) 289--Iteration 6-- 290bool(false) 291bool(false) 292bool(false) 293--Iteration 7-- 294bool(false) 295bool(false) 296bool(false) 297--Iteration 8-- 298bool(false) 299bool(false) 300bool(false) 301--Iteration 9-- 302bool(false) 303bool(false) 304bool(false) 305--Iteration 10-- 306bool(false) 307bool(false) 308bool(false) 309--Iteration 11-- 310bool(false) 311bool(false) 312bool(false) 313--Iteration 12-- 314bool(false) 315bool(false) 316bool(false) 317--Iteration 13-- 318bool(false) 319bool(false) 320bool(false) 321--Iteration 14-- 322bool(false) 323bool(false) 324bool(false) 325--Iteration 15-- 326bool(false) 327bool(false) 328bool(false) 329--Iteration 16-- 330bool(false) 331bool(false) 332bool(false) 333--Iteration 17-- 334bool(false) 335bool(false) 336bool(false) 337--Iteration 18-- 338bool(false) 339bool(false) 340bool(false) 341--Iteration 19-- 342bool(false) 343bool(false) 344bool(false) 345--Iteration 20-- 346bool(false) 347bool(false) 348bool(false) 349--Iteration 21-- 350bool(false) 351bool(false) 352bool(false) 353--Iteration 22-- 354bool(false) 355bool(false) 356bool(false) 357--Iteration 23-- 358bool(false) 359bool(false) 360bool(false) 361--Iteration 24-- 362bool(false) 363bool(false) 364bool(false) 365--Iteration 25-- 366bool(false) 367bool(false) 368bool(false) 369--Iteration 26-- 370bool(false) 371bool(false) 372bool(false) 373--Iteration 27-- 374bool(false) 375bool(false) 376bool(false) 377--Iteration 28-- 378bool(false) 379bool(false) 380bool(false) 381--Iteration 29-- 382bool(false) 383bool(false) 384bool(false) 385--Iteration 30-- 386bool(false) 387bool(false) 388bool(false) 389--Iteration 31-- 390bool(false) 391bool(false) 392bool(false) 393--Iteration 32-- 394bool(false) 395bool(false) 396bool(false) 397--Iteration 33-- 398bool(false) 399bool(false) 400bool(false) 401--Iteration 34-- 402bool(false) 403bool(false) 404bool(false) 405--Iteration 35-- 406bool(false) 407bool(false) 408bool(false) 409--Iteration 36-- 410bool(false) 411bool(false) 412bool(false) 413--Iteration 37-- 414bool(false) 415bool(false) 416bool(false) 417 418*** Testing error conditions *** 419 420Warning: is_float() expects exactly 1 parameter, 0 given in %s on line %d 421bool(false) 422 423Warning: is_double() expects exactly 1 parameter, 0 given in %s on line %d 424bool(false) 425 426Warning: is_real() expects exactly 1 parameter, 0 given in %s on line %d 427bool(false) 428 429Warning: is_float() expects exactly 1 parameter, 2 given in %s on line %d 430bool(false) 431 432Warning: is_double() expects exactly 1 parameter, 2 given in %s on line %d 433bool(false) 434 435Warning: is_real() expects exactly 1 parameter, 2 given in %s on line %d 436bool(false) 437Done 438