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>