diff options
Diffstat (limited to 'ext/standard/tests/array/009.phpt')
-rw-r--r-- | ext/standard/tests/array/009.phpt | 535 |
1 files changed, 535 insertions, 0 deletions
diff --git a/ext/standard/tests/array/009.phpt b/ext/standard/tests/array/009.phpt new file mode 100644 index 0000000..f88f876 --- /dev/null +++ b/ext/standard/tests/array/009.phpt @@ -0,0 +1,535 @@ +--TEST-- +Test key(), current(), next() & reset() functions +--FILE-- +<?php +/* Prototype & Usage: + mixed key ( array &$array ) -> returns the index element of the current array position + mixed current ( array &$array ) -> returns the current element in the array + mixed next ( array &$array ) -> similar to current() but advances the internal pointer to next element + mixed reset ( array &$array ) -> Reset the internal pointer to first element +*/ + +$basic_arrays = array ( + array(0), // array with element as 0 + array(1), // array with single element + array(1,2, 3, -1, -2, -3), // array of integers + array(1.1, 2.2, 3.3, -1.1, -2.2, -3.3), // array of floats + array('a', 'b', 'c', "ab", "ac", "ad"), // string array + array("a" => "apple", "b" => "book", "c" => "cook"), // associative array + array('d' => 'drink', 'p' => 'port', 's' => 'set'), // another associative array + array(1 => 'One', 2 => 'two', 3 => "three") // associative array with key as integers +); + +$varient_arrays = array ( + array(), // empty array + array(""), // array with null string + array(NULL),// array with NULL + array(null),// array with null + array(NULL, true, null, "", 1), // mixed array + array(-1.5 => "test", -2 => "rest", 2.5 => "two", + "" => "string", 0 => "zero", "" => "" ) // mixed array +); + +echo "*** Testing basic operations ***\n"; +$loop_count = 1; +foreach ($basic_arrays as $sub_array ) { + echo "-- Iteration $loop_count --\n"; + $loop_count++; + $c = count ($sub_array); + $c++; // increment by one to create the situation of accessing beyond array size + while ( $c ) { + var_dump( current($sub_array)); // current element + var_dump( key($sub_array) ); // key of the current element + var_dump( next($sub_array) ); // move to next element + $c --; + } + var_dump( reset($sub_array) ); // reset the internal pointer to first element + var_dump( key($sub_array) ); // access the array after reset + var_dump( $sub_array ); // dump the array to see that its intact + + echo "\n"; +} + +echo "\n*** Testing possible variations ***\n"; +$loop_count = 1; +foreach ($varient_arrays as $sub_array ) { + echo "-- Iteration $loop_count --\n"; + $loop_count++; + $c = count ($sub_array); + $c++; // increment by one to create the situation of accessing beyond array size + while ( $c ) { + var_dump( current($sub_array)); // current element + var_dump( key($sub_array) ); // key of the current element + var_dump( next($sub_array) ); // move to next element + $c --; + } + var_dump( reset($sub_array) ); // reset the internal pointer to first element + var_dump( key($sub_array) ); // access the array after reset + var_dump( $sub_array ); // dump the array to see that its intact + echo "\n"; +} + +/*test these functions on array which is already unset */ +echo "\n-- Testing variation: when array is unset --\n"; +$unset_array = array (1); +unset($unset_array); + +var_dump( current($unset_array) ); +var_dump( key($unset_array) ); +var_dump( next($unset_array) ); +var_dump( reset($unset_array) ); + + +echo "\n*** Testing error conditions ***\n"; +//Zero argument, expected 1 argument +var_dump( key() ); +var_dump( current() ); +var_dump( reset() ); +var_dump( next() ); + +// args more than expected, expected 1 argument +$temp_array = array(1); +var_dump( key($temp_array, $temp_array) ); +var_dump( current($temp_array, $temp_array) ); +var_dump( reset($temp_array, $temp_array) ); +var_dump( next($temp_array, $temp_array) ); + +// invalid args type, valid arguement: array +$int_var = 1; +$float_var = 1.5; +$string = "string"; +var_dump( key($int_var) ); +var_dump( key($float_var) ); +var_dump( key($string) ); + +var_dump( current($int_var) ); +var_dump( current($float_var) ); +var_dump( current($string) ); + +var_dump( next($int_var) ); +var_dump( next($float_var) ); +var_dump( next($string) ); + +var_dump( reset($int_var) ); +var_dump( reset($float_var) ); +var_dump( reset($string) ); + +echo "Done\n"; +?> +--EXPECTF-- +*** Testing basic operations *** +-- Iteration 1 -- +int(0) +int(0) +bool(false) +bool(false) +NULL +bool(false) +int(0) +int(0) +array(1) { + [0]=> + int(0) +} + +-- Iteration 2 -- +int(1) +int(0) +bool(false) +bool(false) +NULL +bool(false) +int(1) +int(0) +array(1) { + [0]=> + int(1) +} + +-- Iteration 3 -- +int(1) +int(0) +int(2) +int(2) +int(1) +int(3) +int(3) +int(2) +int(-1) +int(-1) +int(3) +int(-2) +int(-2) +int(4) +int(-3) +int(-3) +int(5) +bool(false) +bool(false) +NULL +bool(false) +int(1) +int(0) +array(6) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(-1) + [4]=> + int(-2) + [5]=> + int(-3) +} + +-- Iteration 4 -- +float(1.1) +int(0) +float(2.2) +float(2.2) +int(1) +float(3.3) +float(3.3) +int(2) +float(-1.1) +float(-1.1) +int(3) +float(-2.2) +float(-2.2) +int(4) +float(-3.3) +float(-3.3) +int(5) +bool(false) +bool(false) +NULL +bool(false) +float(1.1) +int(0) +array(6) { + [0]=> + float(1.1) + [1]=> + float(2.2) + [2]=> + float(3.3) + [3]=> + float(-1.1) + [4]=> + float(-2.2) + [5]=> + float(-3.3) +} + +-- Iteration 5 -- +string(1) "a" +int(0) +string(1) "b" +string(1) "b" +int(1) +string(1) "c" +string(1) "c" +int(2) +string(2) "ab" +string(2) "ab" +int(3) +string(2) "ac" +string(2) "ac" +int(4) +string(2) "ad" +string(2) "ad" +int(5) +bool(false) +bool(false) +NULL +bool(false) +string(1) "a" +int(0) +array(6) { + [0]=> + string(1) "a" + [1]=> + string(1) "b" + [2]=> + string(1) "c" + [3]=> + string(2) "ab" + [4]=> + string(2) "ac" + [5]=> + string(2) "ad" +} + +-- Iteration 6 -- +string(5) "apple" +string(1) "a" +string(4) "book" +string(4) "book" +string(1) "b" +string(4) "cook" +string(4) "cook" +string(1) "c" +bool(false) +bool(false) +NULL +bool(false) +string(5) "apple" +string(1) "a" +array(3) { + ["a"]=> + string(5) "apple" + ["b"]=> + string(4) "book" + ["c"]=> + string(4) "cook" +} + +-- Iteration 7 -- +string(5) "drink" +string(1) "d" +string(4) "port" +string(4) "port" +string(1) "p" +string(3) "set" +string(3) "set" +string(1) "s" +bool(false) +bool(false) +NULL +bool(false) +string(5) "drink" +string(1) "d" +array(3) { + ["d"]=> + string(5) "drink" + ["p"]=> + string(4) "port" + ["s"]=> + string(3) "set" +} + +-- Iteration 8 -- +string(3) "One" +int(1) +string(3) "two" +string(3) "two" +int(2) +string(5) "three" +string(5) "three" +int(3) +bool(false) +bool(false) +NULL +bool(false) +string(3) "One" +int(1) +array(3) { + [1]=> + string(3) "One" + [2]=> + string(3) "two" + [3]=> + string(5) "three" +} + + +*** Testing possible variations *** +-- Iteration 1 -- +bool(false) +NULL +bool(false) +bool(false) +NULL +array(0) { +} + +-- Iteration 2 -- +string(0) "" +int(0) +bool(false) +bool(false) +NULL +bool(false) +string(0) "" +int(0) +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 3 -- +NULL +int(0) +bool(false) +bool(false) +NULL +bool(false) +NULL +int(0) +array(1) { + [0]=> + NULL +} + +-- Iteration 4 -- +NULL +int(0) +bool(false) +bool(false) +NULL +bool(false) +NULL +int(0) +array(1) { + [0]=> + NULL +} + +-- Iteration 5 -- +NULL +int(0) +bool(true) +bool(true) +int(1) +NULL +NULL +int(2) +string(0) "" +string(0) "" +int(3) +int(1) +int(1) +int(4) +bool(false) +bool(false) +NULL +bool(false) +NULL +int(0) +array(5) { + [0]=> + NULL + [1]=> + bool(true) + [2]=> + NULL + [3]=> + string(0) "" + [4]=> + int(1) +} + +-- Iteration 6 -- +string(4) "test" +int(-1) +string(4) "rest" +string(4) "rest" +int(-2) +string(3) "two" +string(3) "two" +int(2) +string(0) "" +string(0) "" +string(0) "" +string(4) "zero" +string(4) "zero" +int(0) +bool(false) +bool(false) +NULL +bool(false) +string(4) "test" +int(-1) +array(5) { + [-1]=> + string(4) "test" + [-2]=> + string(4) "rest" + [2]=> + string(3) "two" + [""]=> + string(0) "" + [0]=> + string(4) "zero" +} + + +-- Testing variation: when array is unset -- + +Warning: current() expects parameter 1 to be array, null given in %s on line %d +NULL + +Warning: key() expects parameter 1 to be array, null given in %s on line %d +NULL + +Warning: next() expects parameter 1 to be array, null given in %s on line %d +NULL + +Warning: reset() expects parameter 1 to be array, null given in %s on line %d +NULL + +*** Testing error conditions *** + +Warning: key() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +Warning: current() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +Warning: reset() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +Warning: next() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +Warning: key() expects exactly 1 parameter, 2 given in %s on line %d +NULL + +Warning: current() expects exactly 1 parameter, 2 given in %s on line %d +NULL + +Warning: reset() expects exactly 1 parameter, 2 given in %s on line %d +NULL + +Warning: next() expects exactly 1 parameter, 2 given in %s on line %d +NULL + +Warning: key() expects parameter 1 to be array, integer given in %s on line %d +NULL + +Warning: key() expects parameter 1 to be array, double given in %s on line %d +NULL + +Warning: key() expects parameter 1 to be array, string given in %s on line %d +NULL + +Warning: current() expects parameter 1 to be array, integer given in %s on line %d +NULL + +Warning: current() expects parameter 1 to be array, double given in %s on line %d +NULL + +Warning: current() expects parameter 1 to be array, string given in %s on line %d +NULL + +Warning: next() expects parameter 1 to be array, integer given in %s on line %d +NULL + +Warning: next() expects parameter 1 to be array, double given in %s on line %d +NULL + +Warning: next() expects parameter 1 to be array, string given in %s on line %d +NULL + +Warning: reset() expects parameter 1 to be array, integer given in %s on line %d +NULL + +Warning: reset() expects parameter 1 to be array, double given in %s on line %d +NULL + +Warning: reset() expects parameter 1 to be array, string given in %s on line %d +NULL +Done |