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