diff options
author | Robert Nicholson <nicholsr@php.net> | 2007-10-26 11:07:13 +0000 |
---|---|---|
committer | Robert Nicholson <nicholsr@php.net> | 2007-10-26 11:07:13 +0000 |
commit | 9e761076b8ed99ffa2b0da3e8522c3c625f56d4f (patch) | |
tree | f02e9fc1fb3645cd68fbd186e46116924e4c64d0 /ext/standard/tests/array | |
parent | 656d0e468bbd462c660d1e12cb9151e66d1bac54 (diff) | |
download | php-git-9e761076b8ed99ffa2b0da3e8522c3c625f56d4f.tar.gz |
new testcases for array_splice
Diffstat (limited to 'ext/standard/tests/array')
-rw-r--r-- | ext/standard/tests/array/array_splice_basic.phpt | 118 | ||||
-rw-r--r-- | ext/standard/tests/array/array_splice_errors.phpt | 42 | ||||
-rw-r--r-- | ext/standard/tests/array/array_splice_variation1.phpt | 111 | ||||
-rw-r--r-- | ext/standard/tests/array/array_splice_variation2.phpt | 29 | ||||
-rw-r--r-- | ext/standard/tests/array/array_splice_variation3.phpt | 858 | ||||
-rw-r--r-- | ext/standard/tests/array/array_splice_variation4.phpt | 71 |
6 files changed, 1229 insertions, 0 deletions
diff --git a/ext/standard/tests/array/array_splice_basic.phpt b/ext/standard/tests/array/array_splice_basic.phpt new file mode 100644 index 0000000000..efea53c8b1 --- /dev/null +++ b/ext/standard/tests/array/array_splice_basic.phpt @@ -0,0 +1,118 @@ +--TEST-- +Test array_splice(): basic functionality +--INI-- +--FILE-- +<?php +/* + * proto array array_splice(array input, int offset [, int length [, array replacement]]) + * Function is implemented in ext/standard/array.c +*/ + +echo "*** Testing array_splice() basic operations ***\n"; +echo "test truncation \n"; +$input = array("red", "green", "blue", "yellow"); +var_dump (array_splice($input, 2)); +var_dump ($input); +// $input is now array("red", "green") + +echo "test removing entries from the middle \n"; +$input = array("red", "green", "blue", "yellow"); +var_dump (array_splice($input, 1, -1)); +var_dump ($input); +// $input is now array("red", "yellow") + +echo "test substitution at end \n"; +$input = array("red", "green", "blue", "yellow"); +var_dump (array_splice($input, 1, count($input), "orange")); +var_dump ($input); +// $input is now array("red", "orange") + +$input = array("red", "green", "blue", "yellow"); +var_dump (array_splice($input, -1, 1, array("black", "maroon"))); +var_dump ($input); +// $input is now array("red", "green", +// "blue", "black", "maroon") + +echo "test insertion \n"; +$input = array("red", "green", "blue", "yellow"); +var_dump (array_splice($input, 3, 0, "purple")); +var_dump ($input); +// $input is now array("red", "green", +// "blue", "purple", "yellow"); + + +?> +--EXPECT-- +*** Testing array_splice() basic operations *** +test truncation +array(2) { + [0]=> + string(4) "blue" + [1]=> + string(6) "yellow" +} +array(2) { + [0]=> + string(3) "red" + [1]=> + string(5) "green" +} +test removing entries from the middle +array(2) { + [0]=> + string(5) "green" + [1]=> + string(4) "blue" +} +array(2) { + [0]=> + string(3) "red" + [1]=> + string(6) "yellow" +} +test substitution at end +array(3) { + [0]=> + string(5) "green" + [1]=> + string(4) "blue" + [2]=> + string(6) "yellow" +} +array(2) { + [0]=> + string(3) "red" + [1]=> + string(6) "orange" +} +array(1) { + [0]=> + string(6) "yellow" +} +array(5) { + [0]=> + string(3) "red" + [1]=> + string(5) "green" + [2]=> + string(4) "blue" + [3]=> + string(5) "black" + [4]=> + string(6) "maroon" +} +test insertion +array(0) { +} +array(5) { + [0]=> + string(3) "red" + [1]=> + string(5) "green" + [2]=> + string(4) "blue" + [3]=> + string(6) "purple" + [4]=> + string(6) "yellow" +} diff --git a/ext/standard/tests/array/array_splice_errors.phpt b/ext/standard/tests/array/array_splice_errors.phpt new file mode 100644 index 0000000000..04861cfbb8 --- /dev/null +++ b/ext/standard/tests/array/array_splice_errors.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test array_splice() function : error conditions +--INI-- +--FILE-- +<?php +/* + * proto array array_splice(array input, int offset [, int length [, array replacement]]) + * Function is implemented in ext/standard/array.c +*/ + +echo "\n*** Testing error conditions of array_splice() ***\n"; + +$int=1; +$array=array(1,2); +var_dump (array_splice()); +var_dump (array_splice($int)); +var_dump (array_splice($array)); +var_dump (array_splice($int,$int)); +$obj= new stdclass; +var_dump (array_splice($obj,0,1)); +echo "Done\n"; + +?> +--EXPECTF-- + +*** Testing error conditions of array_splice() *** + +Warning: Wrong parameter count for array_splice() in %s on line %d +NULL + +Warning: Wrong parameter count for array_splice() in %s on line %d +NULL + +Warning: Wrong parameter count for array_splice() in %s on line %d +NULL + +Warning: array_splice(): The first argument should be an array in %s on line %d +NULL + +Warning: array_splice(): The first argument should be an array in %s on line %d +NULL +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/array_splice_variation1.phpt b/ext/standard/tests/array/array_splice_variation1.phpt new file mode 100644 index 0000000000..99685feb28 --- /dev/null +++ b/ext/standard/tests/array/array_splice_variation1.phpt @@ -0,0 +1,111 @@ +--TEST-- +Test array_splice() function : usage variations - references + +--INI-- +--FILE-- +<?php +/* + * proto array array_splice(array input, int offset [, int length [, array replacement]]) + * Function is implemented in ext/standard/array.c +*/ + + +echo "test behaviour when input array is in a reference set\n"; + +$input_array=array (array(1,2)); +$input_array[]=&$input_array[0]; +var_dump (array_splice ($input_array[0],1,1)); +var_dump ($input_array); + +echo "Test behaviour of input arrays containing references \n"; +/* + * There are three regions to test:, before cut, the cut and after the cut. + * For reach we check a plain value, a reference value with integer key and a + * reference value with a string key. + */ +$numbers=array(0,1,2,3,4,5,6,7,8,9,10,11,12); +$input_array=array(0,1,&$numbers[2],"three"=>&$numbers[3],4,&$numbers[5],"six"=>&$numbers[6],7,&$numbers[8],"nine"=>&$numbers[9]); +var_dump (array_splice ($input_array,4,3)); +var_dump ($input_array); + +echo "Test behaviour of replacement array containing references \n"; + +$three=3; +$four=4; +$input_array=array (0,1,2); +$b=array(&$three,"fourkey"=>&$four); +array_splice ($input_array,-1,1,$b); +var_dump ($input_array); + +echo "Test behaviour of replacement which is part of reference set \n"; + +$int=3; +$input_array=array (1,2); +$b=&$int; + +array_splice ($input_array,-1,1,$b); +var_dump ($input_array); +echo "Done\n"; +?> +--EXPECT-- +test behaviour when input array is in a reference set +array(1) { + [0]=> + int(2) +} +array(2) { + [0]=> + &array(1) { + [0]=> + int(1) + } + [1]=> + &array(1) { + [0]=> + int(1) + } +} +Test behaviour of input arrays containing references +array(3) { + [0]=> + int(4) + [1]=> + &int(5) + ["six"]=> + &int(6) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + &int(2) + ["three"]=> + &int(3) + [3]=> + int(7) + [4]=> + &int(8) + ["nine"]=> + &int(9) +} +Test behaviour of replacement array containing references +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + &int(3) + [3]=> + &int(4) +} +Test behaviour of replacement which is part of reference set +array(2) { + [0]=> + int(1) + [1]=> + int(3) +} +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/array_splice_variation2.phpt b/ext/standard/tests/array/array_splice_variation2.phpt new file mode 100644 index 0000000000..4a2685b0bd --- /dev/null +++ b/ext/standard/tests/array/array_splice_variation2.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test array_splice() function : usage variations - additional parameters + +--INI-- +--FILE-- +<?php +/* + * proto array array_splice(array input, int offset [, int length [, array replacement]]) + * Function is implemented in ext/standard/array.c +*/ + +$array=array(0,1,2); +var_dump (array_splice($array,1,1,3,4,5,6,7,8,9)); +var_dump ($array); +echo "Done\n"; +?> +--EXPECTF-- + +Warning: Wrong parameter count for array_splice() in %s on line %d +NULL +array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) +} +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/array_splice_variation3.phpt b/ext/standard/tests/array/array_splice_variation3.phpt new file mode 100644 index 0000000000..d216866585 --- /dev/null +++ b/ext/standard/tests/array/array_splice_variation3.phpt @@ -0,0 +1,858 @@ +--TEST-- +Test array_splice() function : usage variations - lengths and offsets + +--INI-- +--FILE-- +<?php +/* + * proto array array_splice(array input, int offset [, int length [, array replacement]]) + * Function is implemented in ext/standard/array.c +*/ + +echo "*** array_splice() function : usage variations - lengths and offsets\n"; + + +function test_splice ($offset, $length) +{ + echo " - No replacement\n"; + $input_array=array(0,1,2,3,4,5); + var_dump (array_splice ($input_array,$offset,$length)); + var_dump ($input_array); + echo " - With replacement\n"; + $input_array=array(0,1,2,3,4,5); + var_dump (array_splice ($input_array,$offset,$length,array ("A","B","C"))); + var_dump ($input_array); +} + +echo "absolute offset - absolute length - cut from beginning\n"; +test_splice (0,2); +echo "absolute offset - absolute length - cut from middle\n"; +test_splice (2,2); +echo "absolute offset - absolute length - cut from end\n"; +test_splice (4,2); +echo "absolute offset - absolute length - attempt to cut past end\n"; +test_splice (4,4); +echo "absolute offset - absolute length - cut everything\n"; +test_splice (0,7); +echo "absolute offset - absolute length - cut nothing\n"; +test_splice (3,0); + +echo "absolute offset - relative length - cut from beginning\n"; +test_splice (0,-4); + +echo "absolute offset - relative length - cut from middle\n"; +test_splice (2,-2); + +echo "absolute offset - relative length - attempt to cut form before beginning \n"; +test_splice (0,-7); + +echo "absolute offset - relative length - cut nothing\n"; +test_splice (2,-7); + +echo "relative offset - absolute length - cut from beginning\n"; +test_splice (-6,2); + +echo "relative offset - absolute length - cut from middle\n"; +test_splice (-4,2); +echo "relative offset - absolute length - cut from end\n"; +test_splice (-2,2); +echo "relative offset - absolute length - attempt to cut past end\n"; +test_splice (-2,4); +echo "relative offset - absolute length - cut everything\n"; +test_splice (-6,6); +echo "relative offset - absolute length - cut nothing\n"; +test_splice (-6,0); + +echo "relative offset - relative length - cut from beginning\n"; +test_splice (-6,-4); + +echo "relative offset - relative length - cut from middle\n"; +test_splice (-4,-2); + +echo "relative offset - relative length - cut nothing\n"; +test_splice (-4,-7); +echo "Done\n"; +?> + +--EXPECT-- +*** array_splice() function : usage variations - lengths and offsets +absolute offset - absolute length - cut from beginning + - No replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(4) { + [0]=> + int(2) + [1]=> + int(3) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(7) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + int(2) + [4]=> + int(3) + [5]=> + int(4) + [6]=> + int(5) +} +absolute offset - absolute length - cut from middle + - No replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + string(1) "A" + [3]=> + string(1) "B" + [4]=> + string(1) "C" + [5]=> + int(4) + [6]=> + int(5) +} +absolute offset - absolute length - cut from end + - No replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) +} + - With replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + string(1) "A" + [5]=> + string(1) "B" + [6]=> + string(1) "C" +} +absolute offset - absolute length - attempt to cut past end + - No replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) +} + - With replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + string(1) "A" + [5]=> + string(1) "B" + [6]=> + string(1) "C" +} +absolute offset - absolute length - cut everything + - No replacement +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} +array(0) { +} + - With replacement +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} +array(3) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" +} +absolute offset - absolute length - cut nothing + - No replacement +array(0) { +} +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} + - With replacement +array(0) { +} +array(9) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + string(1) "A" + [4]=> + string(1) "B" + [5]=> + string(1) "C" + [6]=> + int(3) + [7]=> + int(4) + [8]=> + int(5) +} +absolute offset - relative length - cut from beginning + - No replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(4) { + [0]=> + int(2) + [1]=> + int(3) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(7) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + int(2) + [4]=> + int(3) + [5]=> + int(4) + [6]=> + int(5) +} +absolute offset - relative length - cut from middle + - No replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + string(1) "A" + [3]=> + string(1) "B" + [4]=> + string(1) "C" + [5]=> + int(4) + [6]=> + int(5) +} +absolute offset - relative length - attempt to cut form before beginning + - No replacement +array(0) { +} +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} + - With replacement +array(0) { +} +array(9) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + int(0) + [4]=> + int(1) + [5]=> + int(2) + [6]=> + int(3) + [7]=> + int(4) + [8]=> + int(5) +} +absolute offset - relative length - cut nothing + - No replacement +array(0) { +} +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} + - With replacement +array(0) { +} +array(9) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + string(1) "A" + [3]=> + string(1) "B" + [4]=> + string(1) "C" + [5]=> + int(2) + [6]=> + int(3) + [7]=> + int(4) + [8]=> + int(5) +} +relative offset - absolute length - cut from beginning + - No replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(4) { + [0]=> + int(2) + [1]=> + int(3) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(7) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + int(2) + [4]=> + int(3) + [5]=> + int(4) + [6]=> + int(5) +} +relative offset - absolute length - cut from middle + - No replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + string(1) "A" + [3]=> + string(1) "B" + [4]=> + string(1) "C" + [5]=> + int(4) + [6]=> + int(5) +} +relative offset - absolute length - cut from end + - No replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) +} + - With replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + string(1) "A" + [5]=> + string(1) "B" + [6]=> + string(1) "C" +} +relative offset - absolute length - attempt to cut past end + - No replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) +} + - With replacement +array(2) { + [0]=> + int(4) + [1]=> + int(5) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + string(1) "A" + [5]=> + string(1) "B" + [6]=> + string(1) "C" +} +relative offset - absolute length - cut everything + - No replacement +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} +array(0) { +} + - With replacement +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} +array(3) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" +} +relative offset - absolute length - cut nothing + - No replacement +array(0) { +} +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} + - With replacement +array(0) { +} +array(9) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + int(0) + [4]=> + int(1) + [5]=> + int(2) + [6]=> + int(3) + [7]=> + int(4) + [8]=> + int(5) +} +relative offset - relative length - cut from beginning + - No replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(4) { + [0]=> + int(2) + [1]=> + int(3) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(0) + [1]=> + int(1) +} +array(7) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + int(2) + [4]=> + int(3) + [5]=> + int(4) + [6]=> + int(5) +} +relative offset - relative length - cut from middle + - No replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(4) + [3]=> + int(5) +} + - With replacement +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + string(1) "A" + [3]=> + string(1) "B" + [4]=> + string(1) "C" + [5]=> + int(4) + [6]=> + int(5) +} +relative offset - relative length - cut nothing + - No replacement +array(0) { +} +array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) +} + - With replacement +array(0) { +} +array(9) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + string(1) "A" + [3]=> + string(1) "B" + [4]=> + string(1) "C" + [5]=> + int(2) + [6]=> + int(3) + [7]=> + int(4) + [8]=> + int(5) +} +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/array_splice_variation4.phpt b/ext/standard/tests/array/array_splice_variation4.phpt new file mode 100644 index 0000000000..abc1fe8efa --- /dev/null +++ b/ext/standard/tests/array/array_splice_variation4.phpt @@ -0,0 +1,71 @@ +--TEST-- +Test array_splice() function : usage variations - non array replacement values + +--INI-- +--FILE-- +<?php +/* + * proto array array_splice(array input, int offset [, int length [, array replacement]]) + * Function is implemented in ext/standard/array.c +*/ + +function test_splice ($replacement) +{ + $input_array=array(0,1); + var_dump (array_splice ($input_array,2,0,$replacement)); + var_dump ($input_array); +} + +test_splice (2); + +test_splice (2.1); + +test_splice (true); +//file type resource +$file_handle = fopen(__FILE__, "r"); + +test_splice ($file_handle); +echo "Done\n"; +?> +--EXPECTF-- +array(0) { +} +array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) +} +array(0) { +} +array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + float(2.1) +} +array(0) { +} +array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + bool(true) +} +array(0) { +} +array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + resource(%d) of type (stream) +} +Done
\ No newline at end of file |