summaryrefslogtreecommitdiff
path: root/ext/standard/tests/array/array_push_error2.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/tests/array/array_push_error2.phpt')
-rw-r--r--ext/standard/tests/array/array_push_error2.phpt53
1 files changed, 53 insertions, 0 deletions
diff --git a/ext/standard/tests/array/array_push_error2.phpt b/ext/standard/tests/array/array_push_error2.phpt
new file mode 100644
index 000000000..86f8df78b
--- /dev/null
+++ b/ext/standard/tests/array/array_push_error2.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test array_push() function : error conditions - min and max int values as keys
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : int array_push(array $stack, mixed $var [, mixed $...])
+ * Description: Pushes elements onto the end of the array
+ * Source code: ext/standard/array.c
+ */
+
+/*
+ * Use PHP's minimum and maximum integer values as array keys
+ * then try and push new elements onto the array
+ */
+
+echo "*** Testing array_push() : error conditions ***\n";
+
+$array = array(-PHP_INT_MAX => 'min', PHP_INT_MAX => 'max');
+
+var_dump(array_push($array, 'new'));
+var_dump($array);
+var_dump(array_push($array, 'var'));
+var_dump($array);
+
+echo "Done";
+?>
+
+--EXPECTF--
+*** Testing array_push() : error conditions ***
+int(3)
+array(3) {
+ [-2147483647]=>
+ string(3) "min"
+ [2147483647]=>
+ string(3) "max"
+ [-2147483648]=>
+ string(3) "new"
+}
+
+Warning: array_push(): Cannot add element to the array as the next element is already occupied in %s on line %d
+bool(false)
+array(3) {
+ [-2147483647]=>
+ string(3) "min"
+ [2147483647]=>
+ string(3) "max"
+ [-2147483648]=>
+ string(3) "new"
+}
+Done