]> granicus.if.org Git - php/commitdiff
Add tests for invalid count() operations
authorCraig Duncan <git@duncanc.co.uk>
Tue, 4 Oct 2016 12:27:18 +0000 (13:27 +0100)
committerJoe Watkins <krakjoe@php.net>
Thu, 17 Nov 2016 09:33:04 +0000 (09:33 +0000)
Zend/tests/generators/errors/count_error.phpt [new file with mode: 0644]
ext/standard/tests/array/count_invalid.phpt [new file with mode: 0644]

diff --git a/Zend/tests/generators/errors/count_error.phpt b/Zend/tests/generators/errors/count_error.phpt
new file mode 100644 (file)
index 0000000..97e03e7
--- /dev/null
@@ -0,0 +1,18 @@
+--TEST--
+Generators can't be counted
+--FILE--
+<?php
+
+function gen() { yield; }
+
+$gen = gen();
+
+try {
+    count($gen);
+} catch (Exception $e) {
+    echo $e;
+}
+
+?>
+--EXPECTF--
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
diff --git a/ext/standard/tests/array/count_invalid.phpt b/ext/standard/tests/array/count_invalid.phpt
new file mode 100644 (file)
index 0000000..95da00d
--- /dev/null
@@ -0,0 +1,42 @@
+--TEST--
+Only arrays and countable objects can be counted
+--FILE--
+<?php
+
+$result = count(null);
+var_dump($result);
+
+$result = count("string");
+var_dump($result);
+
+$result = count(123);
+var_dump($result);
+
+$result = count(true);
+var_dump($result);
+
+$result = count(false);
+var_dump($result);
+
+$result = count((object) []);
+var_dump($result);
+
+?>
+--EXPECTF--
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
+int(0)
+
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
+int(1)
+
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
+int(1)
+
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
+int(1)
+
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
+int(1)
+
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
+int(1)