Return to end_64bit.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / array |
1.1 misho 1: --TEST-- 2: Test end() function 3: --SKIPIF-- 4: <?php 5: if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); 6: ?> 7: --INI-- 8: precision=14 9: --FILE-- 10: <?php 11: /* Prototype: mixed end ( array &$array ); 12: Description: Advances internal pointer of array to last element, and returns its value. 13: */ 14: 15: $arrays = array ( 16: array( 0 ), 17: range(1, 100 ), 18: range('a', 'z', 2 ), 19: array("a" => "A", 2 => "B", "C" => 3, 4 => 4, "one" => 1, "" => NULL ), 20: array(1, array(1, 2 => 3 ), "one" => 1, "5" => 5 ), 21: array(-1, -2, -3, -4, "-0.005" => "neg0.005", 2.0 => "float2", "neg.9" => -.9 ), 22: array(1.0005, 2.000000, -3.000000, -4.9999999 ), 23: array(true, false), 24: array("PHP", "Web2.0", "SOA"), 25: array(1, array() ), 26: array(1, 2, "" ), 27: array(" "), 28: array(2147483647, 2147483648, -2147483647, -2147483648 ), 29: array(0x7FFFFFFF, -0x80000000, 017777777777, -020000000000 ), 30: array(-.6700000E+3, -4.10003E+3, 1e-5, -1E+5, 000002.00 ) 31: ); 32: /* loop through $arrays to print the last element of each sub-array */ 33: echo "*** Testing end() on different arrays ***\n"; 34: $counter = 1; 35: foreach ($arrays as $sub_array){ 36: echo "-- Iteration $counter --\n"; 37: var_dump( end($sub_array) ); 38: /* ensure that internal pointer is moved to last element */ 39: var_dump( current($sub_array) ); 40: $counter++; 41: } 42: 43: /* checking for end() on sub-arrays */ 44: echo "\n*** Testing end() with sub-arrays ***\n"; 45: $test_array = array(1, array(1 => "one", "two" => 2, "" => "f") ); 46: var_dump( end($test_array) ); 47: var_dump( end($test_array[1]) ); 48: 49: /* checking working of end() when array elements are deleted */ 50: echo "\n*** Testing end() when array elements are deleted ***\n"; 51: $array_test = array("a", "b", "d", 7, "u" => "U", -4, "-.008" => "neg.008"); 52: 53: // remove first element from array 54: echo "\n-- Remove first element from array --\n"; 55: unset($array_test[0]); 56: var_dump( end($array_test) ); 57: 58: // remove last element from array, rewind and check end() 59: echo "\n-- Remove last element from array --\n"; 60: unset($array_test['-.008']); 61: var_dump( end($array_test) ); 62: reset( $array_test ); 63: var_dump( end($array_test) ); 64: 65: // remove any element !first, !last, rewind and check end() 66: echo "\n-- Remove any element from array apart from first and last element --\n"; 67: unset($array_test[7]); 68: var_dump( end($array_test) ); 69: var_dump( reset($array_test) ); 70: var_dump( end($array_test) ); 71: 72: /* Checking on OBJECTS type */ 73: echo "\n*** Testing end() on objects ***\n"; 74: class foo 75: { 76: function __toString() { 77: return "Object"; 78: } 79: } 80: class foo1 81: { 82: function __toString() { 83: return "Object1"; 84: } 85: } 86: 87: $object1 = new foo(); //new object created 88: $object2 = new foo1(); 89: 90: $array_object = array(); 91: $array_object[0] = &$object1; 92: $array_object[1] = &$object2; 93: var_dump( end($array_object) ); 94: var_dump($array_object); 95: 96: /* Checking on RESOURCE type */ 97: echo "\n*** Testing end() on resource type ***\n"; 98: //file type resource 99: $file_handle = fopen(__FILE__, "r"); 100: 101: //directory type resource 102: $dir_handle = opendir( dirname(__FILE__) ); 103: 104: //store resources in array 105: $resources = array($file_handle, $dir_handle); 106: var_dump( end($resources) ); 107: var_dump( current($resources) ); 108: 109: echo "\n*** Testing error conditions ***\n"; 110: /* checking for unexpected number of arguments */ 111: var_dump( end() ); 112: var_dump( end($array[0], $array[0]) ); 113: 114: /* checking for unexpected type of arguments */ 115: $var=1; 116: $var1="string"; 117: var_dump( end($var) ); 118: var_dump( end($var1) ); 119: 120: /* checking null array */ 121: $null_array = array(); 122: var_dump( end($null_array) ); 123: 124: echo "Done\n"; 125: 126: ?> 127: 128: --CLEAN-- 129: /* cleaning resource handles */ 130: fclose( $file_handle ); //file resource handle deleted 131: closedir( $dir_handle ); //dir resource handle deleted 132: 133: --EXPECTF-- 134: *** Testing end() on different arrays *** 135: -- Iteration 1 -- 136: int(0) 137: int(0) 138: -- Iteration 2 -- 139: int(100) 140: int(100) 141: -- Iteration 3 -- 142: string(1) "y" 143: string(1) "y" 144: -- Iteration 4 -- 145: NULL 146: NULL 147: -- Iteration 5 -- 148: int(5) 149: int(5) 150: -- Iteration 6 -- 151: float(-0.9) 152: float(-0.9) 153: -- Iteration 7 -- 154: float(-4.9999999) 155: float(-4.9999999) 156: -- Iteration 8 -- 157: bool(false) 158: bool(false) 159: -- Iteration 9 -- 160: string(3) "SOA" 161: string(3) "SOA" 162: -- Iteration 10 -- 163: array(0) { 164: } 165: array(0) { 166: } 167: -- Iteration 11 -- 168: string(0) "" 169: string(0) "" 170: -- Iteration 12 -- 171: string(1) " " 172: string(1) " " 173: -- Iteration 13 -- 174: int(-2147483648) 175: int(-2147483648) 176: -- Iteration 14 -- 177: int(-2147483648) 178: int(-2147483648) 179: -- Iteration 15 -- 180: float(2) 181: float(2) 182: 183: *** Testing end() with sub-arrays *** 184: array(3) { 185: [1]=> 186: string(3) "one" 187: ["two"]=> 188: int(2) 189: [""]=> 190: string(1) "f" 191: } 192: string(1) "f" 193: 194: *** Testing end() when array elements are deleted *** 195: 196: -- Remove first element from array -- 197: string(7) "neg.008" 198: 199: -- Remove last element from array -- 200: int(-4) 201: int(-4) 202: 203: -- Remove any element from array apart from first and last element -- 204: int(-4) 205: string(1) "b" 206: int(-4) 207: 208: *** Testing end() on objects *** 209: object(foo1)#%d (0) { 210: } 211: array(2) { 212: [0]=> 213: &object(foo)#%d (0) { 214: } 215: [1]=> 216: &object(foo1)#%d (0) { 217: } 218: } 219: 220: *** Testing end() on resource type *** 221: resource(%d) of type (stream) 222: resource(%d) of type (stream) 223: 224: *** Testing error conditions *** 225: 226: Warning: end() expects exactly 1 parameter, 0 given in %s on line %d 227: NULL 228: 229: Warning: end() expects exactly 1 parameter, 2 given in %s on line %d 230: NULL 231: 232: Warning: end() expects parameter 1 to be array, integer given in %s on line %d 233: NULL 234: 235: Warning: end() expects parameter 1 to be array, string given in %s on line %d 236: NULL 237: bool(false) 238: Done