/trunk/Examples/test-suite/php/director_exception_runme.php
PHP | 78 lines | 56 code | 11 blank | 11 comment | 2 complexity | a9d673532bcd5ceb106d260588085daf MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- <?php
- require "tests.php";
- require "director_exception.php";
- // No new functions
- check::functions(array(foo_ping,foo_pong,launder,bar_ping,bar_pong,bar_pang));
- // No new classes
- check::classes(array(director_exception,Foo,Exception1,Exception2,Base,Bar));
- // now new vars
- check::globals(array());
- class MyException extends Exception {
- function __construct($a, $b) {
- $this->msg = $a . $b;
- }
- }
- class MyFoo extends Foo {
- function ping() {
- throw new Exception("MyFoo::ping() EXCEPTION");
- }
- }
- class MyFoo2 extends Foo {
- function ping() {
- return true;
- }
- }
- class MyFoo3 extends Foo {
- function ping() {
- throw new MyException("foo", "bar");
- }
- }
- # Check that the Exception raised by MyFoo.ping() is returned by
- # MyFoo.pong().
- $ok = 0;
- $a = new MyFoo();
- # TODO: Currently we do not track the dynamic type of returned
- # objects, so we skip the launder() call.
- #$b = director_exception::launder($a);
- $b = $a;
- try {
- $b->pong();
- } catch (Exception $e) {
- $ok = 1;
- check::equal($e->getMessage(), "MyFoo::ping() EXCEPTION", "Unexpected error message #1");
- }
- check::equal($ok, 1, "Got no exception while expected one #1");
- # Check that the director can return an exception which requires two
- # arguments to the constructor, without mangling it.
- $ok = 0;
- $a = new MyFoo3();
- #$b = director_exception::launder($a);
- $b = $a;
- try {
- $b->pong();
- } catch (Exception $e) {
- $ok = 1;
- check::equal($e->msg, "foobar", "Unexpected error message #2");
- }
- check::equal($ok, 1, "Got no exception while expected one #2");
- try {
- throw new Exception2();
- } catch (Exception2 $e2) {
- }
- try {
- throw new Exception1();
- } catch (Exception1 $e1) {
- }
- check::done();
- ?>