Annotation of embedaddon/php/ext/standard/tests/array/end.phpt, revision 1.1.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>