php-src/ext/reflection/tests/ReflectionMethod_constructor_error1.phpt
Nikita Popov 3ae995f03c Tweak uncaught exception message display
This implements a reduced variant of #1226 with just the following
change:

-Fatal error: Uncaught exception 'EngineException' with message 'Call to private method foo::bar() from context ''' in %s:%d
+Fatal error: Uncaught EngineException: Call to private method foo::bar() from context '' in %s:%d

The '' wrapper around messages is very weird if the exception
message itself contains ''. Futhermore having the message wrapped
in '' doesn't work for the "and defined" suffix of
TypeExceptions.
2015-05-17 18:47:06 +02:00

104 lines
2.7 KiB
PHP

--TEST--
ReflectionMethod constructor errors
--CREDITS--
Robin Fernandes <robinf@php.net>
Steve Seear <stevseea@php.net>
--FILE--
<?php
class TestClass
{
public function foo() {
}
}
try {
echo "\nWrong type of argument (bool):\n";
$methodInfo = new ReflectionMethod(true);
} catch (Exception $e) {
print $e->__toString();
}
try {
echo "\nWrong type of argument (int):\n";
$methodInfo = new ReflectionMethod(3);
} catch (Exception $e) {
print $e->__toString();
}
try {
echo "\nWrong type of argument (bool, string):\n";
$methodInfo = new ReflectionMethod(true, "foo");
} catch (Exception $e) {
print $e->__toString();
}
try {
echo "\nWrong type of argument (string, bool):\n";
$methodInfo = new ReflectionMethod('TestClass', true);
} catch (Exception $e) {
print $e->__toString();
}
try {
echo "\nNo method given:\n";
$methodInfo = new ReflectionMethod("TestClass");
} catch (Exception $e) {
print $e->__toString();
}
try {
echo "\nClass and Method in same string, bad method name:\n";
$methodInfo = new ReflectionMethod("TestClass::foop::dedoop");
} catch (Exception $e) {
print $e->__toString();
}
try {
echo "\nClass and Method in same string, bad class name:\n";
$methodInfo = new ReflectionMethod("TestCla::foo");
} catch (Exception $e) {
print $e->__toString();
}
try {
echo "\nClass and Method in same string (ok):\n";
$methodInfo = new ReflectionMethod("TestClass::foo");
} catch (Exception $e) {
print $e->__toString();
}
?>
--EXPECTF--
Wrong type of argument (bool):
ReflectionException: Invalid method name 1 in %s
Stack trace:
#0 %s ReflectionMethod->__construct('1')
#1 {main}
Wrong type of argument (int):
ReflectionException: Invalid method name 3 in %s
Stack trace:
#0 %s ReflectionMethod->__construct('3')
#1 {main}
Wrong type of argument (bool, string):
ReflectionException: The parameter class is expected to be either a string or an object in %s
Stack trace:
#0 %s ReflectionMethod->__construct(true, 'foo')
#1 {main}
Wrong type of argument (string, bool):
ReflectionException: Method TestClass::1() does not exist in %s
Stack trace:
#0 %s ReflectionMethod->__construct('TestClass', '1')
#1 {main}
No method given:
ReflectionException: Invalid method name TestClass in %s
Stack trace:
#0 %s ReflectionMethod->__construct('TestClass')
#1 {main}
Class and Method in same string, bad method name:
ReflectionException: Method TestClass::foop::dedoop() does not exist in %s
Stack trace:
#0 %s ReflectionMethod->__construct('TestClass::foop...')
#1 {main}
Class and Method in same string, bad class name:
ReflectionException: Class TestCla does not exist in %s
Stack trace:
#0 %s ReflectionMethod->__construct('TestCla::foo')
#1 {main}
Class and Method in same string (ok):