jmessa Wed Feb 13 16:41:27 2008 UTC Added files: (Branch: PHP_5_2) /php-src/ext/standard/tests/array array_shift_variation6.phpt array_shift_basic.phpt array_shift_variation7.phpt array_shift_variation8.phpt array_shift_variation5.phpt array_shift_error.phpt array_shift_variation4.phpt array_shift_variation1.phpt array_shift_variation2.phpt array_shift_variation3.phpt Log: - New tests for array_shift() function
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation6.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation6.phpt +++ php-src/ext/standard/tests/array/array_shift_variation6.phpt --TEST-- Test array_shift() function : usage variations - Referenced arrays --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */
/* * Test how array_shift when passed: * 1. a variable that is referenced to an array * 2. an array that contains a referenced array */ echo "*** Testing array_shift() : usage variations ***\n"; echo "\n-- Variable is referenced array --\n"; $original_array = array('zero', 'one', 'two'); $copied_array = &$original_array; echo "Result: "; var_dump(array_shift($copied_array)); echo "\n\$original_array:\n"; var_dump($original_array); echo "\n\$copied_array:\n"; var_dump($copied_array); echo "\n-- Element is referenced array --\n"; $new_array = array (&$copied_array, 1, 'two'); echo "Result: "; var_dump(array_shift($new_array[0])); echo "\n\$new_array:\n"; var_dump($new_array); echo "\n\$copied_array\n"; var_dump($copied_array); echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Variable is referenced array -- Result: string(4) "zero" $original_array: array(2) { [0]=> string(3) "one" [1]=> string(3) "two" } $copied_array: array(2) { [0]=> string(3) "one" [1]=> string(3) "two" } -- Element is referenced array -- Result: string(3) "one" $new_array: array(3) { [0]=> &array(1) { [0]=> string(3) "two" } [1]=> int(1) [2]=> string(3) "two" } $copied_array array(1) { [0]=> string(3) "two" } Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Variable is referenced array -- Result: unicode(4) "zero" $original_array: array(2) { [0]=> unicode(3) "one" [1]=> unicode(3) "two" } $copied_array: array(2) { [0]=> unicode(3) "one" [1]=> unicode(3) "two" } -- Element is referenced array -- Result: unicode(3) "one" $new_array: array(3) { [0]=> &array(1) { [0]=> unicode(3) "two" } [1]=> int(1) [2]=> unicode(3) "two" } $copied_array array(1) { [0]=> unicode(3) "two" } Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_basic.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_basic.phpt +++ php-src/ext/standard/tests/array/array_shift_basic.phpt --TEST-- Test array_shift() function : basic functionality --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Test basic functionality of array_shift() */ echo "*** Testing array_shift() : basic functionality ***\n"; $array = array('zero', 'one', '3' => 'three', 'four' => 4); echo "\n-- Before shift: --\n"; var_dump($array); echo "\n-- After shift: --\n"; echo "Returned value:\t"; var_dump(array_shift($array)); echo "New array:\n"; var_dump($array); echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : basic functionality *** -- Before shift: -- array(4) { [0]=> string(4) "zero" [1]=> string(3) "one" [3]=> string(5) "three" ["four"]=> int(4) } -- After shift: -- Returned value: string(4) "zero" New array: array(3) { [0]=> string(3) "one" [1]=> string(5) "three" ["four"]=> int(4) } Done --UEXPECTF-- *** Testing array_shift() : basic functionality *** -- Before shift: -- array(4) { [0]=> unicode(4) "zero" [1]=> unicode(3) "one" [3]=> unicode(5) "three" [u"four"]=> int(4) } -- After shift: -- Returned value: unicode(4) "zero" New array: array(3) { [0]=> unicode(3) "one" [1]=> unicode(5) "three" [u"four"]=> int(4) } Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation7.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation7.phpt +++ php-src/ext/standard/tests/array/array_shift_variation7.phpt --TEST-- Test array_shift() function : usage variations - position of internal pointer --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Test that the internal pointer is reset after calling array_shift() */ echo "*** Testing array_shift() : usage variations ***\n"; $stack = array ('one' => 'un', 'two' => 'deux'); echo "\n-- Call array_shift() --\n"; var_dump($result = array_shift($stack)); echo "\n-- Position of Internal Pointer in Passed Array: --\n"; echo key($stack) . " => " . current ($stack) . "\n"; echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Call array_shift() -- string(2) "un" -- Position of Internal Pointer in Passed Array: -- two => deux Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Call array_shift() -- unicode(2) "un" -- Position of Internal Pointer in Passed Array: -- two => deux Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation8.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation8.phpt +++ php-src/ext/standard/tests/array/array_shift_variation8.phpt --TEST-- Test array_shift() function : usage variations - maintaining referenced elements --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * From a comment left by Traps on 09-Jul-2007 on the array_shift documentation page: * For those that may be trying to use array_shift() with an array containing references * (e.g. working with linked node trees), beware that array_shift() may not work as you expect: * it will return a *copy* of the first element of the array, * and not the element itself, so your reference will be lost. * The solution is to reference the first element before removing it with array_shift(): */ echo "*** Testing array_shift() : usage variations ***\n"; // using only array_shift: echo "\n-- Reference result of array_shift: --\n"; $a = 1; $array = array(&$a); $b =& array_shift($array); $b = 2; echo "a = $a, b = $b\n"; // solution: referencing the first element first: echo "\n-- Reference first element before array_shift: --\n"; $a = 1; $array = array(&$a); $b =& $array[0]; array_shift($array); $b = 2; echo "a = $a, b = $b\n"; echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Reference result of array_shift: -- Strict Standards: Only variables should be assigned by reference in %s on line %d a = 1, b = 2 -- Reference first element before array_shift: -- a = 2, b = 2 Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Reference result of array_shift: -- Strict Standards: Only variables should be assigned by reference in %s on line %d a = 1, b = 2 -- Reference first element before array_shift: -- a = 2, b = 2 Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation5.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation5.phpt +++ php-src/ext/standard/tests/array/array_shift_variation5.phpt --TEST-- Test array_shift() function : usage variations - call recursively --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Use the result of one call to array_shift * as the the $stack argument of another call to array_shift() * When done in one statement causes strict error messages. */ echo "*** Testing array_shift() : usage variations ***\n"; $stack = array ( array ( array ('zero', 'one', 'two'), 'un', 'deux'), 'eins', 'zwei'); // not following strict standards echo "\n-- Incorrect Method: --\n"; var_dump(array_shift(array_shift(array_shift($stack)))); $stack = array (array( array('zero', 'one', 'two'), 'un', 'deux'), 'eins', 'zwei'); // correct way of doing above: echo "\n-- Correct Method: --\n"; $result1 = array_shift($stack); $result2 = array_shift($result1); var_dump(array_shift($result2)); echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Incorrect Method: -- Strict Standards: Only variables should be passed by reference in %s on line %d Strict Standards: Only variables should be passed by reference in %s on line %d string(4) "zero" -- Correct Method: -- string(4) "zero" Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Incorrect Method: -- Strict Standards: Only variables should be passed by reference in %s on line %d Strict Standards: Only variables should be passed by reference in %s on line %d unicode(4) "zero" -- Correct Method: -- unicode(4) "zero" Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_error.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_error.phpt +++ php-src/ext/standard/tests/array/array_shift_error.phpt --TEST-- Test array_shift() function : error conditions - Pass incorrect number of args --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Pass incorrect number of arguments to array_shift() to test behaviour */ echo "*** Testing array_shift() : error conditions ***\n"; // Zero arguments echo "\n-- Testing array_shift() function with Zero arguments --\n"; var_dump( array_shift() ); //Test array_shift with one more than the expected number of arguments echo "\n-- Testing array_shift() function with more than expected no. of arguments --\n"; $stack = array(1, 2); $extra_arg = 10; var_dump( array_shift($stack, $extra_arg) ); echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : error conditions *** -- Testing array_shift() function with Zero arguments -- Warning: array_shift() expects exactly 1 parameter, 0 given in %s on line %d NULL -- Testing array_shift() function with more than expected no. of arguments -- Warning: array_shift() expects exactly 1 parameter, 2 given in %s on line %d NULL Done --UEXPECTF-- *** Testing array_shift() : error conditions *** -- Testing array_shift() function with Zero arguments -- Warning: array_shift() expects exactly 1 parameter, 0 given in %s on line %d NULL -- Testing array_shift() function with more than expected no. of arguments -- Warning: array_shift() expects exactly 1 parameter, 2 given in %s on line %d NULL Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation4.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation4.phpt +++ php-src/ext/standard/tests/array/array_shift_variation4.phpt --TEST-- Test array_shift() function : usage variations - multi-dimensional arrays --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Test popping elements from a sub-array and popping an array from an array */ echo "*** Testing array_shift() : usage variations ***\n"; $stack_first = array(array(1, 2, 3), 'one', 'two'); $stack_last = array ('zero', 'one', array (1, 2, 3)); echo "\n-- Before shift: --\n"; echo "---- \$stack_first:\n"; var_dump($stack_first); echo "---- \$stack_last:\n"; var_dump($stack_last); echo "\n-- After shift: --\n"; echo "---- Pop array from array:\n"; echo "Returned value:\t"; var_dump(array_shift($stack_first)); echo "New array:\n"; var_dump($stack_first); echo "---- Pop element from array within array:\n"; echo "Returned value:\t"; var_dump(array_shift($stack_last[2])); echo "New array:\n"; var_dump($stack_last); echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Before shift: -- ---- $stack_first: array(3) { [0]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } [1]=> string(3) "one" [2]=> string(3) "two" } ---- $stack_last: array(3) { [0]=> string(4) "zero" [1]=> string(3) "one" [2]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } } -- After shift: -- ---- Pop array from array: Returned value: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } New array: array(2) { [0]=> string(3) "one" [1]=> string(3) "two" } ---- Pop element from array within array: Returned value: int(1) New array: array(3) { [0]=> string(4) "zero" [1]=> string(3) "one" [2]=> array(2) { [0]=> int(2) [1]=> int(3) } } Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Before shift: -- ---- $stack_first: array(3) { [0]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } [1]=> unicode(3) "one" [2]=> unicode(3) "two" } ---- $stack_last: array(3) { [0]=> unicode(4) "zero" [1]=> unicode(3) "one" [2]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } } -- After shift: -- ---- Pop array from array: Returned value: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } New array: array(2) { [0]=> unicode(3) "one" [1]=> unicode(3) "two" } ---- Pop element from array within array: Returned value: int(1) New array: array(3) { [0]=> unicode(4) "zero" [1]=> unicode(3) "one" [2]=> array(2) { [0]=> int(2) [1]=> int(3) } } Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation1.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation1.phpt +++ php-src/ext/standard/tests/array/array_shift_variation1.phpt --TEST-- Test array_shift() function : usage variations - Pass different data types as $stack arg --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Pass different data types as $stack argument to array_shift() to test behaviour */ echo "*** Testing array_shift() : usage variations ***\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 $stack 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*/ "", '', // string data /*18*/ "string", 'string', $heredoc, // object data /*21*/ new classA(), // undefined data /*22*/ @$undefined_var, // unset data /*23*/ @$unset_var, // resource variable /*24*/ $fp ); // loop through each element of $inputs to check the behavior of array_shift() $iterator = 1; foreach($inputs as $input) { echo "\n-- Iteration $iterator --\n"; var_dump( array_shift($input) ); $iterator++; }; fclose($fp); echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Iteration 1 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 2 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 3 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 4 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 5 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 6 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 7 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 8 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 9 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 10 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 11 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 12 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 13 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 14 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 15 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 16 -- Warning: array_shift() expects parameter 1 to be array, string given in %s on line %d NULL -- Iteration 17 -- Warning: array_shift() expects parameter 1 to be array, string given in %s on line %d NULL -- Iteration 18 -- Warning: array_shift() expects parameter 1 to be array, string given in %s on line %d NULL -- Iteration 19 -- Warning: array_shift() expects parameter 1 to be array, string given in %s on line %d NULL -- Iteration 20 -- Warning: array_shift() expects parameter 1 to be array, string given in %s on line %d NULL -- Iteration 21 -- Warning: array_shift() expects parameter 1 to be array, object given in %s on line %d NULL -- Iteration 22 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 23 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 24 -- Warning: array_shift() expects parameter 1 to be array, resource given in %s on line 85 NULL Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Iteration 1 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 2 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 3 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 4 -- Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d NULL -- Iteration 5 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 6 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 7 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 8 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 9 -- Warning: array_shift() expects parameter 1 to be array, double given in %s on line %d NULL -- Iteration 10 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 11 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 12 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 13 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 14 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 15 -- Warning: array_shift() expects parameter 1 to be array, boolean given in %s on line %d NULL -- Iteration 16 -- Warning: array_shift() expects parameter 1 to be array, Unicode string given in %s on line %d NULL -- Iteration 17 -- Warning: array_shift() expects parameter 1 to be array, Unicode string given in %s on line %d NULL -- Iteration 18 -- Warning: array_shift() expects parameter 1 to be array, Unicode string given in %s on line %d NULL -- Iteration 19 -- Warning: array_shift() expects parameter 1 to be array, Unicode string given in %s on line %d NULL -- Iteration 20 -- Warning: array_shift() expects parameter 1 to be array, Unicode string given in %s on line %d NULL -- Iteration 21 -- Warning: array_shift() expects parameter 1 to be array, object given in %s on line %d NULL -- Iteration 22 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 23 -- Warning: array_shift() expects parameter 1 to be array, null given in %s on line %d NULL -- Iteration 24 -- Warning: array_shift() expects parameter 1 to be array, resource given in %s on line %d NULL Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation2.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation2.phpt +++ php-src/ext/standard/tests/array/array_shift_variation2.phpt --TEST-- Test array_shift() function : usage variations - Pass arrays of different data types --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Pass arrays where values are of one data type to test behaviour of array_shift() */ echo "*** Testing array_shift() : usage variations ***\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"); // arrays of different data types to be passed to $stack argument $inputs = array( // int data /*1*/ 'int' => array( 0, 1, 12345, -2345, ), // float data /*2*/ 'float' => array( 10.5, -10.5, 12.3456789000e10, 12.3456789000E-10, .5, ), // null data /*3*/ 'null' => array( NULL, null, ), // boolean data /*4*/ 'bool' => array( true, false, TRUE, FALSE, ), // empty data /*5*/ 'empty string' => array( "", '', ), /*6*/ 'empty array' => array( ), // string data /*7*/ 'string' => array( "string", 'string', $heredoc, ), // object data /*8*/ 'object' => array( new classA(), ), // undefined data /*9*/ 'undefined' => array( @$undefined_var, ), // unset data /*10*/ 'unset' => array( @$unset_var, ), // resource variable /*11*/ 'resource' => array( $fp ), ); // loop through each element of $inputs to check the behavior of array_shift $iterator = 1; foreach($inputs as $key => $input) { echo "\n-- Iteration $iterator: $key data --\n"; var_dump( array_shift($input) ); var_dump($input); $iterator++; }; fclose($fp); echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Iteration 1: int data -- int(0) array(3) { [0]=> int(1) [1]=> int(12345) [2]=> int(-2345) } -- Iteration 2: float data -- float(10.5) array(4) { [0]=> float(-10.5) [1]=> float(123456789000) [2]=> float(1.23456789E-9) [3]=> float(0.5) } -- Iteration 3: null data -- NULL array(1) { [0]=> NULL } -- Iteration 4: bool data -- bool(true) array(3) { [0]=> bool(false) [1]=> bool(true) [2]=> bool(false) } -- Iteration 5: empty string data -- string(0) "" array(1) { [0]=> string(0) "" } -- Iteration 6: empty array data -- NULL array(0) { } -- Iteration 7: string data -- string(6) "string" array(2) { [0]=> string(6) "string" [1]=> string(11) "hello world" } -- Iteration 8: object data -- object(classA)#%d (0) { } array(0) { } -- Iteration 9: undefined data -- NULL array(0) { } -- Iteration 10: unset data -- NULL array(0) { } -- Iteration 11: resource data -- resource(%d) of type (stream) array(0) { } Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Iteration 1: int data -- int(0) array(3) { [0]=> int(1) [1]=> int(12345) [2]=> int(-2345) } -- Iteration 2: float data -- float(10.5) array(4) { [0]=> float(-10.5) [1]=> float(123456789000) [2]=> float(1.23456789E-9) [3]=> float(0.5) } -- Iteration 3: null data -- NULL array(1) { [0]=> NULL } -- Iteration 4: bool data -- bool(true) array(3) { [0]=> bool(false) [1]=> bool(true) [2]=> bool(false) } -- Iteration 5: empty string data -- unicode(0) "" array(1) { [0]=> unicode(0) "" } -- Iteration 6: empty array data -- NULL array(0) { } -- Iteration 7: string data -- unicode(6) "string" array(2) { [0]=> unicode(6) "string" [1]=> unicode(11) "hello world" } -- Iteration 8: object data -- object(classA)#%d (0) { } array(0) { } -- Iteration 9: undefined data -- NULL array(0) { } -- Iteration 10: unset data -- NULL array(0) { } -- Iteration 11: resource data -- resource(%d) of type (stream) array(0) { } Done http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_shift_variation3.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/array_shift_variation3.phpt +++ php-src/ext/standard/tests/array/array_shift_variation3.phpt --TEST-- Test array_shift() function : usage variations - Pass array with different data types as keys --FILE-- <?php /* Prototype : mixed array_shift(array &$stack) * Description: Pops an element off the beginning of the array * Source code: ext/standard/array.c */ /* * Pass arrays with different data types as keys to test how array_shift() re-assigns keys */ echo "*** Testing array_shift() : usage variations ***\n"; //get an unset variable $unset_var = 10; unset ($unset_var); // heredoc string $heredoc = <<<EOT hello world EOT; // unexpected values to be passed to $stack argument $inputs = array( // int data /*1*/ 'int' => array( 0 => 'zero', 1 => 'one', 12345 => 'positive', -2345 => 'negative', ), // float data /*2*/ 'float' => array( 10.5 => 'positive', -10.5 => 'negative', .5 => 'half', ), /*3*/ 'extreme floats' => array( 12.3456789000e10 => 'large', 12.3456789000E-10 => 'small', ), // null data /*4*/ 'null uppercase' => array( NULL => 'null 1', ), /*5*/ 'null lowercase' => array( null => 'null 2', ), // boolean data /*6*/ 'bool lowercase' => array( true => 'lowert', false => 'lowerf', ), /*7*/ 'bool uppercase' => array( TRUE => 'uppert', FALSE => 'upperf', ), // empty data /*8*/ 'empty double quotes' => array( "" => 'emptyd', ), /*9*/ 'empty single quotes' => array( '' => 'emptys', ), // string data /*10*/ 'string' => array( "stringd" => 'stringd', 'strings' => 'strings', $heredoc => 'stringh', ), // undefined data /*11*/ 'undefined' => array( @$undefined_var => 'undefined', ), // unset data /*12*/ 'unset' => array( @$unset_var => 'unset', ), ); // loop through each element of $inputs to check the behavior of array_shift() $iterator = 1; foreach($inputs as $key => $input) { echo "\n-- Iteration $iterator : $key data --\n"; var_dump( array_shift($input) ); var_dump($input); $iterator++; }; echo "Done"; ?> --EXPECTF-- *** Testing array_shift() : usage variations *** -- Iteration 1 : int data -- string(4) "zero" array(3) { [0]=> string(3) "one" [1]=> string(8) "positive" [2]=> string(8) "negative" } -- Iteration 2 : float data -- string(8) "positive" array(2) { [0]=> string(8) "negative" [1]=> string(4) "half" } -- Iteration 3 : extreme floats data -- string(5) "large" array(1) { [0]=> string(5) "small" } -- Iteration 4 : null uppercase data -- string(6) "null 1" array(0) { } -- Iteration 5 : null lowercase data -- string(6) "null 2" array(0) { } -- Iteration 6 : bool lowercase data -- string(6) "lowert" array(1) { [0]=> string(6) "lowerf" } -- Iteration 7 : bool uppercase data -- string(6) "uppert" array(1) { [0]=> string(6) "upperf" } -- Iteration 8 : empty double quotes data -- string(6) "emptyd" array(0) { } -- Iteration 9 : empty single quotes data -- string(6) "emptys" array(0) { } -- Iteration 10 : string data -- string(7) "stringd" array(2) { ["strings"]=> string(7) "strings" ["hello world"]=> string(7) "stringh" } -- Iteration 11 : undefined data -- string(9) "undefined" array(0) { } -- Iteration 12 : unset data -- string(5) "unset" array(0) { } Done --UEXPECTF-- *** Testing array_shift() : usage variations *** -- Iteration 1 : int data -- unicode(4) "zero" array(3) { [0]=> unicode(3) "one" [1]=> unicode(8) "positive" [2]=> unicode(8) "negative" } -- Iteration 2 : float data -- unicode(8) "positive" array(2) { [0]=> unicode(8) "negative" [1]=> unicode(4) "half" } -- Iteration 3 : extreme floats data -- unicode(5) "large" array(1) { [0]=> unicode(5) "small" } -- Iteration 4 : null uppercase data -- unicode(6) "null 1" array(0) { } -- Iteration 5 : null lowercase data -- unicode(6) "null 2" array(0) { } -- Iteration 6 : bool lowercase data -- unicode(6) "lowert" array(1) { [0]=> unicode(6) "lowerf" } -- Iteration 7 : bool uppercase data -- unicode(6) "uppert" array(1) { [0]=> unicode(6) "upperf" } -- Iteration 8 : empty double quotes data -- unicode(6) "emptyd" array(0) { } -- Iteration 9 : empty single quotes data -- unicode(6) "emptys" array(0) { } -- Iteration 10 : string data -- unicode(7) "stringd" array(2) { [u"strings"]=> unicode(7) "strings" [u"hello world"]=> unicode(7) "stringh" } -- Iteration 11 : undefined data -- unicode(9) "undefined" array(0) { } -- Iteration 12 : unset data -- unicode(5) "unset" array(0) { } Done
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php