stringToProxy($ref); test($base != null); echo "ok\n"; echo "testing checked cast... "; flush(); $thrower = $base->ice_checkedCast("::Test::Thrower"); test($thrower != null); test($thrower == $base); echo "ok\n"; echo "catching exact types... "; flush(); try { $thrower->throwAasA(1); test(false); } catch(Exception $ex) { $clsA = $NS ? "Test\\A" : "Test_A"; if(!($ex instanceof $clsA)) { throw $ex; } test($ex->aMem == 1); } try { $thrower->throwAorDasAorD(1); test(false); } catch(Exception $ex) { $clsA = $NS ? "Test\\A" : "Test_A"; if(!($ex instanceof $clsA)) { throw $ex; } test($ex->aMem == 1); } try { $thrower->throwAorDasAorD(-1); test(false); } catch(Exception $ex) { $clsD = $NS ? "Test\\D" : "Test_D"; if(!($ex instanceof $clsD)) { throw $ex; } test($ex->dMem == -1); } try { $thrower->throwBasB(1, 2); test(false); } catch(Exception $ex) { $clsB = $NS ? "Test\\B" : "Test_B"; if(!($ex instanceof $clsB)) { throw $ex; } test($ex->aMem == 1); test($ex->bMem == 2); } try { $thrower->throwCasC(1, 2, 3); test(false); } catch(Exception $ex) { $clsC = $NS ? "Test\\C" : "Test_C"; if(!($ex instanceof $clsC)) { throw $ex; } test($ex->aMem == 1); test($ex->bMem == 2); test($ex->cMem == 3); } echo "ok\n"; echo "catching base types... "; flush(); try { $thrower->throwBasB(1, 2); test(false); } catch(Exception $ex) { $clsA = $NS ? "Test\\A" : "Test_A"; if(!($ex instanceof $clsA)) { throw $ex; } test($ex->aMem == 1); } try { $thrower->throwCasC(1, 2, 3); test(false); } catch(Exception $ex) { $clsB = $NS ? "Test\\B" : "Test_B"; if(!($ex instanceof $clsB)) { throw $ex; } test($ex->aMem == 1); test($ex->bMem == 2); } echo "ok\n"; echo "catching derived types... "; flush(); try { $thrower->throwBasA(1, 2); test(false); } catch(Exception $ex) { $clsB = $NS ? "Test\\B" : "Test_B"; if(!($ex instanceof $clsB)) { throw $ex; } test($ex->aMem == 1); test($ex->bMem == 2); } try { $thrower->throwCasA(1, 2, 3); test(false); } catch(Exception $ex) { $clsC = $NS ? "Test\\C" : "Test_C"; if(!($ex instanceof $clsC)) { throw $ex; } test($ex->aMem == 1); test($ex->bMem == 2); test($ex->cMem == 3); } try { $thrower->throwCasB(1, 2, 3); test(false); } catch(Exception $ex) { $clsC = $NS ? "Test\\C" : "Test_C"; if(!($ex instanceof $clsC)) { throw $ex; } test($ex->aMem == 1); test($ex->bMem == 2); test($ex->cMem == 3); } echo "ok\n"; if($thrower->supportsUndeclaredExceptions()) { echo "catching unknown user exception... "; flush(); try { $thrower->throwUndeclaredA(1); test(false); } catch(Exception $ex) { $uue = $NS ? "Ice\\UnknownUserException" : "Ice_UnknownUserException"; if(!($ex instanceof $uue)) { throw $ex; } } try { $thrower->throwUndeclaredB(1, 2); test(false); } catch(Exception $ex) { $uue = $NS ? "Ice\\UnknownUserException" : "Ice_UnknownUserException"; if(!($ex instanceof $uue)) { throw $ex; } } try { $thrower->throwUndeclaredC(1, 2, 3); test(false); } catch(Exception $ex) { $uue = $NS ? "Ice\\UnknownUserException" : "Ice_UnknownUserException"; if(!($ex instanceof $uue)) { throw $ex; } } echo "ok\n"; } echo "catching object not exist exception... "; flush(); $id = $communicator->stringToIdentity("does not exist"); try { $thrower2 = $thrower->ice_identity($id)->ice_uncheckedCast("::Test::Thrower"); $thrower2->throwAasA(1); test(false); } catch(Exception $ex) { $one = $NS ? "Ice\\ObjectNotExistException" : "Ice_ObjectNotExistException"; if(!($ex instanceof $one)) { throw $ex; } test($ex->id == $id); } echo "ok\n"; echo "catching facet not exist exception... "; flush(); { $thrower2 = $thrower->ice_uncheckedCast("::Test::Thrower", "no such facet"); try { $thrower2->ice_ping(); test(false); } catch(Exception $ex) { $fne = $NS ? "Ice\\FacetNotExistException" : "Ice_FacetNotExistException"; if(!($ex instanceof $fne)) { throw $ex; } test($ex->facet == "no such facet"); } } echo "ok\n"; echo "catching operation not exist exception... "; flush(); try { $thrower2 = $thrower->ice_uncheckedCast("::Test::WrongOperation"); $thrower2->noSuchOperation(); test(false); } catch(Exception $ex) { $one = $NS ? "Ice\\OperationNotExistException" : "Ice_OperationNotExistException"; if(!($ex instanceof $one)) { throw $ex; } test($ex->operation = "noSuchOperation"); } echo "ok\n"; echo "catching unknown local exception... "; flush(); try { $thrower->throwLocalException(); test(false); } catch(Exception $ex) { $ule = $NS ? "Ice\\UnknownLocalException" : "Ice_UnknownLocalException"; if(!($ex instanceof $ule)) { throw $ex; } } echo "ok\n"; echo "catching unknown non-Ice exception... "; flush(); try { $thrower->throwNonIceException(); test(false); } catch(Exception $ex) { $ue = $NS ? "Ice\\UnknownException" : "Ice_UnknownException"; if(!($ex instanceof $ue)) { throw $ex; } } echo "ok\n"; return $thrower; } $communicator = Ice_initialize(&$argv); $thrower = allTests($communicator); $thrower->shutdown(); $communicator->destroy(); exit(); ?>