summaryrefslogtreecommitdiff
path: root/ext/reflection/tests/ReflectionReference_errors.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/reflection/tests/ReflectionReference_errors.phpt')
-rw-r--r--ext/reflection/tests/ReflectionReference_errors.phpt52
1 files changed, 52 insertions, 0 deletions
diff --git a/ext/reflection/tests/ReflectionReference_errors.phpt b/ext/reflection/tests/ReflectionReference_errors.phpt
new file mode 100644
index 0000000000..8e52a1d223
--- /dev/null
+++ b/ext/reflection/tests/ReflectionReference_errors.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Various error conditions for ReflectionReference
+--FILE--
+<?php
+
+try {
+ new ReflectionReference();
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+}
+
+try {
+ ReflectionReference::fromArrayElement(new stdClass, "test");
+} catch (TypeError $e) {
+ echo $e->getMessage(), "\n";
+}
+
+try {
+ ReflectionReference::fromArrayElement([], 1.5);
+} catch (TypeError $e) {
+ echo $e->getMessage(), "\n";
+}
+
+try {
+ $ary = [0, 1, 2];
+ ReflectionReference::fromArrayElement($ary, 3);
+} catch (ReflectionException $e) {
+ echo $e->getMessage(), "\n";
+}
+
+try {
+ $ary = [&$ary];
+ $ref = ReflectionReference::fromArrayElement($ary, 0);
+ var_dump(serialize($ref));
+} catch (Exception $e) {
+ echo $e->getMessage(), "\n";
+}
+
+var_dump(unserialize('O:19:"ReflectionReference":0:{}'));
+
+?>
+--EXPECTF--
+Call to private ReflectionReference::__construct() from invalid context
+ReflectionReference::fromArrayElement() expects parameter 1 to be array, object given
+Key must be array or string
+Array key not found
+Serialization of 'ReflectionReference' is not allowed
+
+Warning: Erroneous data format for unserializing 'ReflectionReference' in %s on line %d
+
+Notice: unserialize(): Error at offset 30 of 31 bytes in %s on line %d
+bool(false)