diff options
author | Josie Messa <jmessa@php.net> | 2008-02-21 16:39:02 +0000 |
---|---|---|
committer | Josie Messa <jmessa@php.net> | 2008-02-21 16:39:02 +0000 |
commit | 2151ce6ba9ee474cf2a34d9e4b82be7fc4835771 (patch) | |
tree | 5e3340a87cebb1ad6374e1fb922ba8aee88fc3fe /ext/standard/tests | |
parent | 18cc21c66266b86ba255301c25cfb08de786f112 (diff) | |
download | php-git-2151ce6ba9ee474cf2a34d9e4b82be7fc4835771.tar.gz |
- New tests for end() and next() function
Diffstat (limited to 'ext/standard/tests')
-rw-r--r-- | ext/standard/tests/array/end_basic.phpt | 46 | ||||
-rw-r--r-- | ext/standard/tests/array/end_error.phpt | 39 | ||||
-rw-r--r-- | ext/standard/tests/array/end_variation1.phpt | 222 | ||||
-rw-r--r-- | ext/standard/tests/array/end_variation2.phpt | 43 | ||||
-rw-r--r-- | ext/standard/tests/array/end_variation3.phpt | 41 | ||||
-rw-r--r-- | ext/standard/tests/array/next_basic.phpt | 35 | ||||
-rw-r--r-- | ext/standard/tests/array/next_error.phpt | 39 | ||||
-rw-r--r-- | ext/standard/tests/array/next_variation1.phpt | 221 | ||||
-rw-r--r-- | ext/standard/tests/array/next_variation2.phpt | 45 |
9 files changed, 731 insertions, 0 deletions
diff --git a/ext/standard/tests/array/end_basic.phpt b/ext/standard/tests/array/end_basic.phpt new file mode 100644 index 0000000000..5a6606d381 --- /dev/null +++ b/ext/standard/tests/array/end_basic.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test end() function : basic functionality +--FILE-- +<?php +/* Prototype : mixed end(array $array_arg) + * Description: Advances array argument's internal pointer to the last element and return it + * Source code: ext/standard/array.c + */ + +/* + * Test basic functionality of end() + */ + +echo "*** Testing end() : basic functionality ***\n"; + +$array = array('zero', 'one', 200 => 'two'); + +echo "\n-- Initial Position: --\n"; +echo key($array) . " => " . current($array) . "\n"; + +echo "\n-- Call to end() --\n"; +var_dump(end($array)); + +echo "\n-- Current Position: --\n"; +echo key($array) . " => " . current($array) . "\n"; + +echo "\n-- Add a new element to array --\n"; +$array[2] = 'foo'; +var_dump(end($array)); +?> +===DONE=== +--EXPECTF-- +*** Testing end() : basic functionality *** + +-- Initial Position: -- +0 => zero + +-- Call to end() -- +string(3) "two" + +-- Current Position: -- +200 => two + +-- Add a new element to array -- +string(3) "foo" +===DONE=== diff --git a/ext/standard/tests/array/end_error.phpt b/ext/standard/tests/array/end_error.phpt new file mode 100644 index 0000000000..96e8429558 --- /dev/null +++ b/ext/standard/tests/array/end_error.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test end() function : error conditions - Pass incorrect number of args +--FILE-- +<?php +/* Prototype : mixed end(array $array_arg) + * Description: Advances array argument's internal pointer to the last element and return it + * Source code: ext/standard/array.c + */ + +/* + * Pass incorrect number of arguments to end() to test behaviour + */ + +echo "*** Testing end() : error conditions ***\n"; + +// Zero arguments +echo "\n-- Testing end() function with Zero arguments --\n"; +var_dump( end() ); + +//Test end with one more than the expected number of arguments +echo "\n-- Testing end() function with more than expected no. of arguments --\n"; +$array_arg = array(1, 2); +$extra_arg = 10; +var_dump( end($array_arg, $extra_arg) ); +?> +===DONE=== +--EXPECTF-- +*** Testing end() : error conditions *** + +-- Testing end() function with Zero arguments -- + +Warning: end() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +-- Testing end() function with more than expected no. of arguments -- + +Warning: end() expects exactly 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/end_variation1.phpt b/ext/standard/tests/array/end_variation1.phpt new file mode 100644 index 0000000000..eb10b5e583 --- /dev/null +++ b/ext/standard/tests/array/end_variation1.phpt @@ -0,0 +1,222 @@ +--TEST-- +Test end() function : usage variations - Pass different data types as $array_arg +--FILE-- +<?php +/* Prototype : mixed end(array $array_arg) + * Description: Advances array argument's internal pointer to the last element and return it + * Source code: ext/standard/array.c + */ + +/* + * Pass different data types as $array_arg to test behaviour of end() + */ + +echo "*** Testing end() : usage variations ***\n"; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + var $foo = 'hello, world'; + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $array_arg argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of end() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( end($input) ); + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing end() : usage variations *** + +-- Iteration 1 -- + +Warning: end() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: end() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: end() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: end() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: end() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 6 -- + +Warning: end() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 7 -- + +Warning: end() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 8 -- + +Warning: end() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 9 -- + +Warning: end() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 10 -- + +Warning: end() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 11 -- + +Warning: end() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 12 -- + +Warning: end() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 13 -- + +Warning: end() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 14 -- + +Warning: end() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 15 -- + +Warning: end() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 16 -- + +Warning: end() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: end() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- + +Warning: end() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: end() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: end() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: end() expects parameter 1 to be array, object given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: end() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 24 -- + +Warning: end() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 25 -- + +Warning: end() expects parameter 1 to be array, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/end_variation2.phpt b/ext/standard/tests/array/end_variation2.phpt new file mode 100644 index 0000000000..180f7cdfbd --- /dev/null +++ b/ext/standard/tests/array/end_variation2.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test end() function : usage variations - Multi-dimensional arrays +--FILE-- +<?php +/* Prototype : mixed end(array $array_arg) + * Description: Advances array argument's internal pointer to the last element and return it + * Source code: ext/standard/array.c + */ + +/* + * Test end() when passed: + * 1. a two-dimensional array + * 2. a sub-array + * as $array_arg argument. + */ + +echo "*** Testing end() : usage variations ***\n"; + +$array_arg = array ('a' => 'z', array(9, 8, 7)); + +echo "\n-- Pass a two-dimensional array as \$array_arg --\n"; +var_dump(end($array_arg)); + +echo "\n-- Pass a sub-array as \$array_arg --\n"; +var_dump(end($array_arg[0])); +?> +===DONE=== +--EXPECTF-- +*** Testing end() : usage variations *** + +-- Pass a two-dimensional array as $array_arg -- +array(3) { + [0]=> + int(9) + [1]=> + int(8) + [2]=> + int(7) +} + +-- Pass a sub-array as $array_arg -- +int(7) +===DONE=== diff --git a/ext/standard/tests/array/end_variation3.phpt b/ext/standard/tests/array/end_variation3.phpt new file mode 100644 index 0000000000..cd1e2d0ec5 --- /dev/null +++ b/ext/standard/tests/array/end_variation3.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test end() function : usage variations - Referenced variables +--FILE-- +<?php +/* Prototype : mixed end(array $array_arg) + * Description: Advances array argument's internal pointer to the last element and return it + * Source code: ext/standard/array.c + */ + +/* + * Test how the internal pointer is affected when two variables are referenced to each other + */ + +echo "*** Testing end() : usage variations ***\n"; + +$array1 = array ('zero', 'one', 'two'); + +echo "\n-- Initial position of internal pointer --\n"; +var_dump(current($array1)); +end($array1); + +// Test that when two variables are referenced to one another +// the internal pointer is the same for both +$array2 = &$array1; +echo "\n-- Position after calling end() --\n"; +echo "\$array1: "; +var_dump(current($array1)); +echo "\$array2: "; +var_dump(current($array2)); +?> +===DONE=== +--EXPECTF-- +*** Testing end() : usage variations *** + +-- Initial position of internal pointer -- +string(4) "zero" + +-- Position after calling end() -- +$array1: string(3) "two" +$array2: string(3) "two" +===DONE=== diff --git a/ext/standard/tests/array/next_basic.phpt b/ext/standard/tests/array/next_basic.phpt new file mode 100644 index 0000000000..fe8b70c88b --- /dev/null +++ b/ext/standard/tests/array/next_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test next() function : basic functionality +--FILE-- +<?php +/* Prototype : mixed next(array $array_arg) + * Description: Move array argument's internal pointer to the next element and return it + * Source code: ext/standard/array.c + */ + +/* + * Test basic functionality of next() + */ + +echo "*** Testing next() : basic functionality ***\n"; + +$array = array('zero', 'one', 'two'); +echo key($array) . " => " . current($array) . "\n"; +var_dump(next($array)); + +echo key($array) . " => " . current($array) . "\n"; +var_dump(next($array)); + +echo key($array) . " => " . current($array) . "\n"; +var_dump(next($array)); +?> +===DONE=== +--EXPECTF-- +*** Testing next() : basic functionality *** +0 => zero +string(3) "one" +1 => one +string(3) "two" +2 => two +bool(false) +===DONE=== diff --git a/ext/standard/tests/array/next_error.phpt b/ext/standard/tests/array/next_error.phpt new file mode 100644 index 0000000000..f7b78357cb --- /dev/null +++ b/ext/standard/tests/array/next_error.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test next() function : error conditions - Pass incorrect number of arguments +--FILE-- +<?php +/* Prototype : mixed next(array $array_arg) + * Description: Move array argument's internal pointer to the next element and return it + * Source code: ext/standard/array.c + */ + +/* + * Pass incorrect number of arguments to next() to test behaviour + */ + +echo "*** Testing next() : error conditions ***\n"; + +// Zero arguments +echo "\n-- Testing next() function with Zero arguments --\n"; +var_dump( next() ); + +//Test next with one more than the expected number of arguments +echo "\n-- Testing next() function with more than expected no. of arguments --\n"; +$array_arg = array(1, 2); +$extra_arg = 10; +var_dump( next($array_arg, $extra_arg) ); +?> +===DONE=== +--EXPECTF-- +*** Testing next() : error conditions *** + +-- Testing next() function with Zero arguments -- + +Warning: next() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +-- Testing next() function with more than expected no. of arguments -- + +Warning: next() expects exactly 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/next_variation1.phpt b/ext/standard/tests/array/next_variation1.phpt new file mode 100644 index 0000000000..313add035a --- /dev/null +++ b/ext/standard/tests/array/next_variation1.phpt @@ -0,0 +1,221 @@ +--TEST-- +Test next() function : usage variation - Pass different data types as $array_arg +--FILE-- +<?php +/* Prototype : mixed next(array $array_arg) + * Description: Move array argument's internal pointer to the next element and return it + * Source code: ext/standard/array.c + */ + +/* + * Pass different data types as $array_arg argument to next() to test behaviour + */ + +echo "*** Testing next() : variation ***\n"; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $array_arg argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of next() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( next($input) ); + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing next() : variation *** + +-- Iteration 1 -- + +Warning: next() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: next() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: next() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: next() expects parameter 1 to be array, integer given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: next() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 6 -- + +Warning: next() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 7 -- + +Warning: next() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 8 -- + +Warning: next() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 9 -- + +Warning: next() expects parameter 1 to be array, double given in %s on line %d +NULL + +-- Iteration 10 -- + +Warning: next() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 11 -- + +Warning: next() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 12 -- + +Warning: next() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 13 -- + +Warning: next() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 14 -- + +Warning: next() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 15 -- + +Warning: next() expects parameter 1 to be array, boolean given in %s on line %d +NULL + +-- Iteration 16 -- + +Warning: next() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: next() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- + +Warning: next() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: next() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: next() expects parameter 1 to be array, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: next() expects parameter 1 to be array, object given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: next() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 24 -- + +Warning: next() expects parameter 1 to be array, null given in %s on line %d +NULL + +-- Iteration 25 -- + +Warning: next() expects parameter 1 to be array, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/next_variation2.phpt b/ext/standard/tests/array/next_variation2.phpt new file mode 100644 index 0000000000..e7505096d9 --- /dev/null +++ b/ext/standard/tests/array/next_variation2.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test next() function : usage variation - Mulit-dimensional arrays +--FILE-- +<?php +/* Prototype : mixed next(array $array_arg) + * Description: Move array argument's internal pointer to the next element and return it + * Source code: ext/standard/array.c + */ + +/* + * Test next() when passed: + * 1. a two-dimensional array + * 2. a sub-array + * as $array_arg argument. + */ + +echo "*** Testing next() : usage variations ***\n"; + +$array_arg = array ('a' => 'z', array(9, 8, 7)); + +echo "\n-- Pass a two-dimensional array as \$array_arg --\n"; +var_dump(next($array_arg)); +var_dump(next($array_arg)); + +echo "\n-- Pass a sub-array as \$array_arg --\n"; +var_dump(next($array_arg[0])); +?> +===DONE=== +--EXPECTF-- +*** Testing next() : usage variations *** + +-- Pass a two-dimensional array as $array_arg -- +array(3) { + [0]=> + int(9) + [1]=> + int(8) + [2]=> + int(7) +} +bool(false) + +-- Pass a sub-array as $array_arg -- +int(8) +===DONE=== |