1--TEST-- 2Test intval() function 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: int intval( mixed $var [.int $base] ); 10 * Description: Returns the integer value of var, using the specified base for the conversion(the default is base 10). 11 */ 12 13echo "*** Testing intval() with valid integer values ***\n"; 14// different valid integer vlaues 15$valid_ints = array( 16 '0', 17 '1', 18 '-1', 19 '-2147483648', // max negative integer value 20 '-2147483647', 21 2147483647, // max positive integer value 22 2147483640, 23 0x123B, // integer as hexadecimal 24 '0x12ab', 25 '0Xfff', 26 '0XFA', 27 -0x80000000, // max negative integer as hexadecimal 28 '0x7fffffff', // max postive integer as hexadecimal 29 0x7FFFFFFF, // max postive integer as hexadecimal 30 '0123', // integer as octal 31 01912, // should be quivalent to octal 1 32 -020000000000, // max negative integer as octal 33 017777777777, // max positive integer as octal 34 ); 35 36/* loop to check that intval() recognizes different 37 integer values, expected output:integer value in decimal notation for valid integer */ 38 39echo "\n***Output with default base value ie 10 ***\n"; 40foreach ($valid_ints as $value ) { 41 var_dump( intval($value) ); 42} 43 44 45echo "\n***Output with base value of 10( explicitly passed as argument) ***\n"; 46foreach ($valid_ints as $value ) { 47 var_dump( intval($value, 10) ); 48} 49 50 51echo "\n***Output with base value of 16 ***\n"; 52foreach ($valid_ints as $value ) { 53 var_dump( intval($value, 16) ); 54} 55 56echo "\n***Output with base value of 8 ***\n"; 57foreach ($valid_ints as $value ) { 58 var_dump( intval($value, 8) ); 59} 60 61echo "\n*** Testing intval() on non integer types ***\n"; 62 63// get a resource type variable 64$fp = fopen (__FILE__, "r"); 65fclose($fp); 66$dfp = opendir ( dirname(__FILE__) ); 67closedir($dfp); 68 69// unset variable 70 71$unset_var = 10; 72unset ($unset_var); 73 74// other types in a array 75$not_int_types = array ( 76 /* float values */ 77 '-2147483649', // float value 78 '2147483648', // float value 79 '-0x80000001', // float value, beyond max negative int 80 '0x800000001', // float value, beyond max positive int 81 '020000000001', // float value, beyond max positive int 82 '-020000000001', // float value, beyond max negative int 83 0.0, 84 -0.1, 85 1.0, 86 1e5, 87 -1e6, 88 1E8, 89 -1E9, 90 10.0000000000000000005, 91 10.5e+5, 92 93 /* resources */ 94 $fp, 95 $dfp, 96 97 /* arrays */ 98 array(), 99 array(0), 100 array(1), 101 array(NULL), 102 array(null), 103 array("string"), 104 array(true), 105 array(TRUE), 106 array(false), 107 array(FALSE), 108 array(1,2,3,4), 109 array(1 => "One", "two" => 2), 110 111 /* strings */ 112 "", 113 '', 114 "0", 115 '0', 116 "1", 117 '1', 118 "\x01", 119 '\x01', 120 "\01", 121 '\01', 122 'string', 123 "string", 124 "true", 125 "FALSE", 126 'false', 127 'TRUE', 128 "NULL", 129 'null', 130 131 /* booleans */ 132 true, 133 false, 134 TRUE, 135 FALSE, 136 137 /* undefined and unset vars */ 138 @$unset_var, 139 @$undefined_var 140); 141 142 143/* loop through the $not_int_types to see working of 144 intval() on non integer types, expected output: integer value in decimal notation for valid integers */ 145foreach ($not_int_types as $type ) { 146 var_dump( intval($type) ); 147} 148 149echo "\n*** Testing error conditions ***\n"; 150//Zero argument 151var_dump( intval() ); 152 153//arguments more than expected 154var_dump( intval(TRUE, FALSE, TRUE) ); 155 156echo "\n--- Done ---\n"; 157 158 159?> 160--EXPECTF-- 161*** Testing intval() with valid integer values *** 162 163***Output with default base value ie 10 *** 164int(0) 165int(1) 166int(-1) 167int(-2147483648) 168int(-2147483647) 169int(2147483647) 170int(2147483640) 171int(4667) 172int(0) 173int(0) 174int(0) 175int(-2147483648) 176int(0) 177int(2147483647) 178int(123) 179int(1) 180int(-2147483648) 181int(2147483647) 182 183***Output with base value of 10( explicitly passed as argument) *** 184int(0) 185int(1) 186int(-1) 187int(-2147483648) 188int(-2147483647) 189int(2147483647) 190int(2147483640) 191int(4667) 192int(0) 193int(0) 194int(0) 195int(-2147483648) 196int(0) 197int(2147483647) 198int(123) 199int(1) 200int(-2147483648) 201int(2147483647) 202 203***Output with base value of 16 *** 204int(0) 205int(1) 206int(-1) 207int(-2147483648) 208int(-2147483648) 209int(2147483647) 210int(2147483640) 211int(4667) 212int(4779) 213int(4095) 214int(250) 215int(-2147483648) 216int(2147483647) 217int(2147483647) 218int(291) 219int(1) 220int(-2147483648) 221int(2147483647) 222 223***Output with base value of 8 *** 224int(0) 225int(1) 226int(-1) 227int(-9020) 228int(-9020) 229int(2147483647) 230int(2147483640) 231int(4667) 232int(0) 233int(0) 234int(0) 235int(-2147483648) 236int(0) 237int(2147483647) 238int(83) 239int(1) 240int(-2147483648) 241int(2147483647) 242 243*** Testing intval() on non integer types *** 244int(-2147483648) 245int(2147483647) 246int(0) 247int(0) 248int(2147483647) 249int(-2147483648) 250int(0) 251int(0) 252int(1) 253int(100000) 254int(-1000000) 255int(100000000) 256int(-1000000000) 257int(10) 258int(1050000) 259int(%d) 260int(%d) 261int(0) 262int(1) 263int(1) 264int(1) 265int(1) 266int(1) 267int(1) 268int(1) 269int(1) 270int(1) 271int(1) 272int(1) 273int(0) 274int(0) 275int(0) 276int(0) 277int(1) 278int(1) 279int(0) 280int(0) 281int(0) 282int(0) 283int(0) 284int(0) 285int(0) 286int(0) 287int(0) 288int(0) 289int(0) 290int(0) 291int(1) 292int(0) 293int(1) 294int(0) 295int(0) 296int(0) 297 298*** Testing error conditions *** 299 300Warning: Wrong parameter count for intval() in %s on line %d 301NULL 302 303Warning: Wrong parameter count for intval() in %s on line %d 304NULL 305 306--- Done --- 307