--- /dev/null
+--TEST--
+Test array_values() function (errors)
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--INI--
+precision=14
+--FILE--
+<?php
+
+echo "\n*** Testing error conditions ***\n";
+/* Invalid number of args */
+var_dump( array_values() ); // Zero arguments
+var_dump( array_values(array(1,2,3), "") ); // No. of args > expected
+/* Invalid types */
+var_dump( array_values("") ); // Empty string
+var_dump( array_values(100) ); // Integer
+var_dump( array_values(new stdclass) ); // object
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing error conditions ***
+
+Warning: array_values() expects exactly 1 parameter, 0 given in %s on line %d
+NULL
+
+Warning: array_values() expects exactly 1 parameter, 2 given in %s on line %d
+NULL
+
+Warning: array_values() expects parameter 1 to be array, string given in %s on line %d
+NULL
+
+Warning: array_values() expects parameter 1 to be array, integer given in %s on line %d
+NULL
+
+Warning: array_values() expects parameter 1 to be array, object given in %s on line %d
+NULL
+Done
+--UEXPECTF--
+*** Testing error conditions ***
+
+Warning: array_values() expects exactly 1 parameter, 0 given in %s on line %d
+NULL
+
+Warning: array_values() expects exactly 1 parameter, 2 given in %s on line %d
+NULL
+
+Warning: array_values() expects parameter 1 to be array, Unicode string given in %s on line %d
+NULL
+
+Warning: array_values() expects parameter 1 to be array, integer given in %s on line %d
+NULL
+
+Warning: array_values() expects parameter 1 to be array, object given in %s on line %d
+NULL
+Done
--- /dev/null
+--TEST--
+Test array_values() function (variation)
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--INI--
+precision=14
+--FILE--
+<?php
+
+echo "\n*** Testing array_values() with resource type ***\n";
+$resource1 = fopen(__FILE__, "r"); // Creating a file resource
+$resource2 = opendir("."); // Creating a dir resource
+
+/* creating an array with resources as elements */
+$arr_resource = array( "a" => $resource1, "b" => $resource2);
+var_dump( array_values($arr_resource) );
+
+echo "\n*** Testing array_values() with range checking ***\n";
+$arr_range = array(
+ 2147483647,
+ 2147483648,
+ -2147483647,
+ -2147483648,
+ -0,
+ 0,
+ -2147483649
+);
+var_dump( array_values($arr_range) );
+
+echo "\n*** Testing array_values() on an array created on the fly ***\n";
+var_dump( array_values(array(1,2,3)) );
+var_dump( array_values(array()) ); // null array
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing array_values() with resource type ***
+array(2) {
+ [0]=>
+ resource(%d) of type (stream)
+ [1]=>
+ resource(%d) of type (stream)
+}
+
+*** Testing array_values() with range checking ***
+array(7) {
+ [0]=>
+ int(2147483647)
+ [1]=>
+ float(2147483648)
+ [2]=>
+ int(-2147483647)
+ [3]=>
+ float(-2147483648)
+ [4]=>
+ int(0)
+ [5]=>
+ int(0)
+ [6]=>
+ float(-2147483649)
+}
+
+*** Testing array_values() on an array created on the fly ***
+array(3) {
+ [0]=>
+ int(1)
+ [1]=>
+ int(2)
+ [2]=>
+ int(3)
+}
+array(0) {
+}
+Done
--- /dev/null
+--TEST--
+Test array_values() function
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--INI--
+precision=14
+--FILE--
+<?php
+
+echo "\n*** Testing array_values() with resource type ***\n";
+$resource1 = fopen(__FILE__, "r"); // Creating a file resource
+$resource2 = opendir("."); // Creating a dir resource
+
+/* creating an array with resources as elements */
+$arr_resource = array( "a" => $resource1, "b" => $resource2);
+var_dump( array_values($arr_resource) );
+
+echo "\n*** Testing array_values() with range checking ***\n";
+$arr_range = array(
+ 2147483647,
+ 2147483648,
+ -2147483647,
+ -2147483648,
+ -0,
+ 0,
+ -2147483649
+);
+var_dump( array_values($arr_range) );
+
+echo "\n*** Testing array_values() on an array created on the fly ***\n";
+var_dump( array_values(array(1,2,3)) );
+var_dump( array_values(array()) ); // null array
+
+?>
+--EXPECTF--
+*** Testing array_values() with resource type ***
+array(2) {
+ [0]=>
+ resource(%d) of type (stream)
+ [1]=>
+ resource(%d) of type (stream)
+}
+
+*** Testing array_values() with range checking ***
+array(7) {
+ [0]=>
+ int(2147483647)
+ [1]=>
+ int(2147483648)
+ [2]=>
+ int(-2147483647)
+ [3]=>
+ int(-2147483648)
+ [4]=>
+ int(0)
+ [5]=>
+ int(0)
+ [6]=>
+ int(-2147483649)
+}
+
+*** Testing array_values() on an array created on the fly ***
+array(3) {
+ [0]=>
+ int(1)
+ [1]=>
+ int(2)
+ [2]=>
+ int(3)
+}
+array(0) {
+}