Annotation of embedaddon/php/ext/standard/tests/array/end.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Test end() function
! 3: --SKIPIF--
! 4: <?php
! 5: if (PHP_INT_SIZE != 4) die("skip this test is for 32bit 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: /* cleaning resource handles */
! 128: fclose( $file_handle ); //file resource handle deleted
! 129: closedir( $dir_handle ); //dir resource handle deleted
! 130:
! 131: ?>
! 132: --EXPECTF--
! 133: *** Testing end() on different arrays ***
! 134: -- Iteration 1 --
! 135: int(0)
! 136: int(0)
! 137: -- Iteration 2 --
! 138: int(100)
! 139: int(100)
! 140: -- Iteration 3 --
! 141: string(1) "y"
! 142: string(1) "y"
! 143: -- Iteration 4 --
! 144: NULL
! 145: NULL
! 146: -- Iteration 5 --
! 147: int(5)
! 148: int(5)
! 149: -- Iteration 6 --
! 150: float(-0.9)
! 151: float(-0.9)
! 152: -- Iteration 7 --
! 153: float(-4.9999999)
! 154: float(-4.9999999)
! 155: -- Iteration 8 --
! 156: bool(false)
! 157: bool(false)
! 158: -- Iteration 9 --
! 159: string(3) "SOA"
! 160: string(3) "SOA"
! 161: -- Iteration 10 --
! 162: array(0) {
! 163: }
! 164: array(0) {
! 165: }
! 166: -- Iteration 11 --
! 167: string(0) ""
! 168: string(0) ""
! 169: -- Iteration 12 --
! 170: string(1) " "
! 171: string(1) " "
! 172: -- Iteration 13 --
! 173: float(-2147483648)
! 174: float(-2147483648)
! 175: -- Iteration 14 --
! 176: float(-2147483648)
! 177: float(-2147483648)
! 178: -- Iteration 15 --
! 179: float(2)
! 180: float(2)
! 181:
! 182: *** Testing end() with sub-arrays ***
! 183: array(3) {
! 184: [1]=>
! 185: string(3) "one"
! 186: ["two"]=>
! 187: int(2)
! 188: [""]=>
! 189: string(1) "f"
! 190: }
! 191: string(1) "f"
! 192:
! 193: *** Testing end() when array elements are deleted ***
! 194:
! 195: -- Remove first element from array --
! 196: string(7) "neg.008"
! 197:
! 198: -- Remove last element from array --
! 199: int(-4)
! 200: int(-4)
! 201:
! 202: -- Remove any element from array apart from first and last element --
! 203: int(-4)
! 204: string(1) "b"
! 205: int(-4)
! 206:
! 207: *** Testing end() on objects ***
! 208: object(foo1)#%d (0) {
! 209: }
! 210: array(2) {
! 211: [0]=>
! 212: &object(foo)#%d (0) {
! 213: }
! 214: [1]=>
! 215: &object(foo1)#%d (0) {
! 216: }
! 217: }
! 218:
! 219: *** Testing end() on resource type ***
! 220: resource(%d) of type (stream)
! 221: resource(%d) of type (stream)
! 222:
! 223: *** Testing error conditions ***
! 224:
! 225: Warning: end() expects exactly 1 parameter, 0 given in %s on line %d
! 226: NULL
! 227:
! 228: Warning: end() expects exactly 1 parameter, 2 given in %s on line %d
! 229: NULL
! 230:
! 231: Warning: end() expects parameter 1 to be array, integer given in %s on line %d
! 232: NULL
! 233:
! 234: Warning: end() expects parameter 1 to be array, string given in %s on line %d
! 235: NULL
! 236: bool(false)
! 237: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>