summaryrefslogtreecommitdiff
path: root/cpp/test/Ice/exceptions/AllTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/test/Ice/exceptions/AllTests.cpp')
-rw-r--r--cpp/test/Ice/exceptions/AllTests.cpp584
1 files changed, 518 insertions, 66 deletions
diff --git a/cpp/test/Ice/exceptions/AllTests.cpp b/cpp/test/Ice/exceptions/AllTests.cpp
index 9bccdb4841a..a000cc34b03 100644
--- a/cpp/test/Ice/exceptions/AllTests.cpp
+++ b/cpp/test/Ice/exceptions/AllTests.cpp
@@ -7,6 +7,7 @@
//
// **********************************************************************
+#include <IceUtil/IceUtil.h>
#include <Ice/Ice.h>
#include <TestCommon.h>
#include <Test.h>
@@ -14,31 +15,38 @@
using namespace std;
using namespace Test;
-namespace
+namespace
{
const bool printException = false;
}
-class EmptyI : virtual public Empty
+class EmptyI : public virtual Empty
{
};
-class ServantLocatorI : virtual public Ice::ServantLocator
+class ServantLocatorI : public virtual Ice::ServantLocator
{
public:
+#ifdef ICE_CPP11_MAPPING
+ virtual shared_ptr<Ice::Object> locate(const Ice::Current&, shared_ptr<void>&) { return nullptr; }
+ virtual void finished(const Ice::Current&, const shared_ptr<Ice::Object>&, const shared_ptr<void>&) {}
+ virtual void deactivate(const string&) {}
+#else
virtual Ice::ObjectPtr locate(const Ice::Current&, Ice::LocalObjectPtr&) { return 0; }
virtual void finished(const Ice::Current&, const Ice::ObjectPtr&, const Ice::LocalObjectPtr&) {}
virtual void deactivate(const string&) {}
+#endif
};
-class ObjectFactoryI : virtual public Ice::ObjectFactory
+#ifndef ICE_CPP11_MAPPING // C++98
+class ValueFactoryI : public virtual Ice::ValueFactory
{
public:
virtual Ice::ObjectPtr create(const string&) { return 0; }
- virtual void destroy() {}
};
+#endif
class CallbackBase : public IceUtil::Monitor<IceUtil::Mutex>
{
@@ -394,16 +402,16 @@ endsWith(const string& s, const string& findme)
return false;
}
-ThrowerPrx
+ThrowerPrxPtr
allTests(const Ice::CommunicatorPtr& communicator)
{
cout << "testing ice_print()/what()... " << flush;
{
A a;
- string aMsg = "Test::A";
+ string aMsg = "::Test::A";
Ice::UnknownLocalException ule("thisFile", 99);
- string uleMsg = "thisFile:99: Ice::UnknownLocalException:\nunknown local exception";
+ string uleMsg = "thisFile:99: ::Ice::UnknownLocalException:\nunknown local exception";
//
// Test ice_print().
@@ -446,18 +454,18 @@ allTests(const Ice::CommunicatorPtr& communicator)
E ex("E");
ostringstream os;
ex.ice_print(os);
- test(os.str() == "Test::E");
+ test(os.str() == "::Test::E");
test(ex.data == "E");
}
-
+
//
// Test custom ice_print
- //
+ //
{
F ex("F");
ostringstream os;
ex.ice_print(os);
- test(os.str() == "Test::F data:'F'");
+ test(os.str() == "::Test::F data:'F'");
test(ex.data == "F");
}
@@ -480,6 +488,20 @@ allTests(const Ice::CommunicatorPtr& communicator)
}
cout << "ok" << endl;
+ string localOAEndpoint;
+ {
+ ostringstream ostr;
+ if(communicator->getProperties()->getProperty("Ice.Default.Protocol") == "bt")
+ {
+ ostr << "default -a *";
+ }
+ else
+ {
+ ostr << "default -h *";
+ }
+ localOAEndpoint = ostr.str();
+ }
+
cout << "testing object adapter registration exceptions... " << flush;
{
Ice::ObjectAdapterPtr first;
@@ -498,9 +520,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
// Expected
}
- string host = communicator->getProperties()->getPropertyAsIntWithDefault("Ice.IPv6", 0) == 0 ?
- "127.0.0.1" : "\"0:0:0:0:0:0:0:1\"";
- communicator->getProperties()->setProperty("TestAdapter0.Endpoints", "default -h " + host);
+ communicator->getProperties()->setProperty("TestAdapter0.Endpoints", localOAEndpoint);
first = communicator->createObjectAdapter("TestAdapter0");
try
{
@@ -540,11 +560,9 @@ allTests(const Ice::CommunicatorPtr& communicator)
cout << "testing servant registration exceptions... " << flush;
{
- string host = communicator->getProperties()->getPropertyAsIntWithDefault("Ice.IPv6", 0) == 0 ?
- "127.0.0.1" : "\"0:0:0:0:0:0:0:1\"";
- communicator->getProperties()->setProperty("TestAdapter1.Endpoints", "default -h " + host);
+ communicator->getProperties()->setProperty("TestAdapter1.Endpoints", localOAEndpoint);
Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter("TestAdapter1");
- Ice::ObjectPtr obj = new EmptyI;
+ Ice::ObjectPtr obj = ICE_MAKE_SHARED(EmptyI);
adapter->add(obj, communicator->stringToIdentity("x"));
try
{
@@ -573,7 +591,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
printer << ex;
}
}
-
+
try
{
adapter->add(0, communicator->stringToIdentity("x"));
@@ -587,7 +605,6 @@ allTests(const Ice::CommunicatorPtr& communicator)
}
}
-
adapter->remove(communicator->stringToIdentity("x"));
try
{
@@ -609,11 +626,9 @@ allTests(const Ice::CommunicatorPtr& communicator)
cout << "testing servant locator registrations exceptions... " << flush;
{
- string host = communicator->getProperties()->getPropertyAsIntWithDefault("Ice.IPv6", 0) == 0 ?
- "127.0.0.1" : "\"0:0:0:0:0:0:0:1\"";
- communicator->getProperties()->setProperty("TestAdapter2.Endpoints", "default -h " + host);
+ communicator->getProperties()->setProperty("TestAdapter2.Endpoints", localOAEndpoint);
Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter("TestAdapter2");
- Ice::ServantLocatorPtr loc = new ServantLocatorI;
+ Ice::ServantLocatorPtr loc = ICE_MAKE_SHARED(ServantLocatorI);
adapter->addServantLocator(loc, "x");
try
{
@@ -628,31 +643,57 @@ allTests(const Ice::CommunicatorPtr& communicator)
}
cout << "ok" << endl;
- cout << "testing object factory registration exception... " << flush;
+ cout << "testing value factory registration exception... " << flush;
{
- Ice::ObjectFactoryPtr of = new ObjectFactoryI;
- communicator->addObjectFactory(of, "x");
+#ifdef ICE_CPP11_MAPPING
+ communicator->getValueFactoryManager()->add(
+ [](const std::string&)
+ {
+ return nullptr;
+ },
+ "x");
+ try
+ {
+ communicator->getValueFactoryManager()->add(
+ [](const std::string&)
+ {
+ return nullptr;
+ },
+ "x");
+ test(false);
+ }
+ catch(const Ice::AlreadyRegisteredException&)
+ {
+ }
+#else
+ Ice::ValueFactoryPtr vf = new ValueFactoryI;
+ communicator->getValueFactoryManager()->add(vf, "x");
try
{
- communicator->addObjectFactory(of, "x");
+ communicator->getValueFactoryManager()->add(vf, "x");
test(false);
}
catch(const Ice::AlreadyRegisteredException&)
{
}
+#endif
}
cout << "ok" << endl;
cout << "testing stringToProxy... " << flush;
- string ref = "thrower:default -p 12010";
- Ice::ObjectPrx base = communicator->stringToProxy(ref);
+ string ref = "thrower:" + getTestEndpoint(communicator, 0);
+ Ice::ObjectPrxPtr base = communicator->stringToProxy(ref);
test(base);
cout << "ok" << endl;
cout << "testing checked cast... " << flush;
- ThrowerPrx thrower = ThrowerPrx::checkedCast(base);
+ ThrowerPrxPtr thrower = ICE_CHECKED_CAST(ThrowerPrx, base);
test(thrower);
+#ifdef ICE_CPP11_MAPPING
+ test(Ice::targetEquals(thrower, base));
+#else
test(thrower == base);
+#endif
cout << "ok" << endl;
cout << "catching exact types... " << flush;
@@ -943,8 +984,9 @@ allTests(const Ice::CommunicatorPtr& communicator)
cerr << ex << endl;
test(false);
}
-
- ThrowerPrx thrower2 = ThrowerPrx::uncheckedCast(communicator->stringToProxy("thrower:default -p 12011"));
+
+ ThrowerPrxPtr thrower2 =
+ ICE_UNCHECKED_CAST(ThrowerPrx, communicator->stringToProxy("thrower:" + getTestEndpoint(communicator, 1)));
try
{
thrower2->throwMemoryLimitException(Ice::ByteSeq(2 * 1024 * 1024)); // 2MB (no limits)
@@ -952,7 +994,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
catch(const Ice::MemoryLimitException&)
{
}
- ThrowerPrx thrower3 = ThrowerPrx::uncheckedCast(communicator->stringToProxy("thrower:default -p 12012"));
+ ThrowerPrxPtr thrower3 =
+ ICE_UNCHECKED_CAST(ThrowerPrx, communicator->stringToProxy("thrower:" + getTestEndpoint(communicator, 2)));
try
{
thrower3->throwMemoryLimitException(Ice::ByteSeq(1024)); // 1KB limit
@@ -970,7 +1013,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
Ice::Identity id = communicator->stringToIdentity("does not exist");
try
{
- ThrowerPrx thrower2 = ThrowerPrx::uncheckedCast(thrower->ice_identity(id));
+ ThrowerPrxPtr thrower2 = ICE_UNCHECKED_CAST(ThrowerPrx, thrower->ice_identity(id));
thrower2->throwAasA(1);
// thrower2->ice_ping();
test(false);
@@ -990,7 +1033,11 @@ allTests(const Ice::CommunicatorPtr& communicator)
try
{
- ThrowerPrx thrower2 = ThrowerPrx::uncheckedCast(thrower, "no such facet");
+#ifdef ICE_CPP11_MAPPING
+ ThrowerPrxPtr thrower2 = Ice::uncheckedCast<ThrowerPrx>(thrower, "no such facet");
+#else
+ ThrowerPrxPtr thrower2 = ThrowerPrx::uncheckedCast(thrower, "no such facet");
+#endif
try
{
thrower2->ice_ping();
@@ -1012,7 +1059,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
try
{
- WrongOperationPrx thrower2 = WrongOperationPrx::uncheckedCast(thrower);
+ WrongOperationPrxPtr thrower2 = ICE_UNCHECKED_CAST(WrongOperationPrx, thrower);
thrower2->noSuchOperation();
test(false);
}
@@ -1102,62 +1149,314 @@ allTests(const Ice::CommunicatorPtr& communicator)
cout << "ok" << endl;
cout << "catching exact types with new AMI mapping... " << flush;
+#ifdef ICE_CPP11_MAPPING
+ {
+ auto f = thrower->throwAasA_async(1);
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const A& ex)
+ {
+ test(ex.aMem == 1);
+ }
+ catch(const Ice::Exception&)
+ {
+ test(false);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+
+ {
+ auto f = thrower->throwAorDasAorD_async(1);
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const A& ex)
+ {
+ test(ex.aMem == 1);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+
+ {
+ auto f = thrower->throwAorDasAorD_async(-1);
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const D& ex)
+ {
+ test(ex.dMem == -1);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+ {
+ auto f = thrower->throwBasB_async(1, 2);
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const B& ex)
+ {
+ test(ex.aMem == 1);
+ test(ex.bMem == 2);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+ {
+ auto f = thrower->throwCasC_async(1, 2, 3);
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const C& ex)
+ {
+ test(ex.aMem == 1);
+ test(ex.bMem == 2);
+ test(ex.cMem == 3);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+ {
+ auto f = thrower->throwModA_async(1, 2);
+ try
+ {
+ f.get();
+ }
+ catch(const A& ex)
+ {
+ test(ex.aMem == 1);
+ }
+ catch(const Ice::OperationNotExistException&)
+ {
+ //
+ // This operation is not supported in Java.
+ //
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+
+ //
+ // repeat with callback API and no exception callback
+ //
+ {
+ promise<bool> sent;
+ thrower->throwAasA_async(1,
+ []()
+ {
+ test(false);
+ },
+ nullptr,
+ [&](bool value)
+ {
+ sent.set_value(value);
+ });
+ sent.get_future().get(); // Wait for sent
+ }
+
+ {
+ promise<bool> sent;
+ thrower->throwAorDasAorD_async(1,
+ []()
+ {
+ test(false);
+ },
+ nullptr,
+ [&](bool value)
+ {
+ sent.set_value(value);
+ });
+ sent.get_future().get(); // Wait for sent
+ }
+
+ {
+ promise<bool> sent;
+ thrower->throwAorDasAorD_async(-1,
+ []()
+ {
+ test(false);
+ },
+ nullptr,
+ [&](bool value)
+ {
+ sent.set_value(value);
+ });
+ sent.get_future().get(); // Wait for sent
+ }
+
+ {
+ promise<bool> sent;
+ thrower->throwBasB_async(1, 2,
+ []()
+ {
+ test(false);
+ },
+ nullptr,
+ [&](bool value)
+ {
+ sent.set_value(value);
+ });
+ sent.get_future().get(); // Wait for sent
+ }
+
+ {
+ promise<bool> sent;
+ thrower->throwCasC_async(1, 2, 3,
+ []()
+ {
+ test(false);
+ },
+ nullptr,
+ [&](bool value)
+ {
+ sent.set_value(value);
+ });
+ sent.get_future().get(); // Wait for sent
+ }
{
+ promise<bool> sent;
+ thrower->throwModA_async(1, 2,
+ []()
+ {
+ test(false);
+ },
+ nullptr,
+ [&](bool value)
+ {
+ sent.set_value(value);
+ });
+ sent.get_future().get(); // Wait for sent
+ }
+#else
+ {
CallbackPtr cb = new Callback;
- Callback_Thrower_throwAasAPtr callback =
+ Callback_Thrower_throwAasAPtr callback =
newCallback_Thrower_throwAasA(cb, &Callback::response, &Callback::exception_AasA);
thrower->begin_throwAasA(1, callback);
cb->check();
}
-
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwAorDasAorDPtr callback =
+ Callback_Thrower_throwAorDasAorDPtr callback =
newCallback_Thrower_throwAorDasAorD(cb, &Callback::response, &Callback::exception_AorDasAorD);
thrower->begin_throwAorDasAorD(1, callback);
cb->check();
}
-
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwAorDasAorDPtr callback =
+ Callback_Thrower_throwAorDasAorDPtr callback =
newCallback_Thrower_throwAorDasAorD(cb, &Callback::response, &Callback::exception_AorDasAorD);
thrower->begin_throwAorDasAorD(-1, callback);
cb->check();
}
-
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwBasBPtr callback =
+ Callback_Thrower_throwBasBPtr callback =
newCallback_Thrower_throwBasB(cb, &Callback::response, &Callback::exception_BasB);
thrower->begin_throwBasB(1, 2, callback);
cb->check();
}
-
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwCasCPtr callback =
+ Callback_Thrower_throwCasCPtr callback =
newCallback_Thrower_throwCasC(cb, &Callback::response, &Callback::exception_CasC);
thrower->begin_throwCasC(1, 2, 3, callback);
cb->check();
}
-
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwModAPtr callback =
+ Callback_Thrower_throwModAPtr callback =
newCallback_Thrower_throwModA(cb, &Callback::response, &Callback::exception_ModA);
thrower->begin_throwModA(1, 2, callback);
cb->check();
}
-
+#endif
cout << "ok" << endl;
cout << "catching derived types with new AMI mapping... " << flush;
+#ifdef ICE_CPP11_MAPPING
+ {
+ auto f = thrower->throwBasA_async(1, 2);
+ try
+ {
+ f.get();
+ }
+ catch(const B& ex)
+ {
+ test(ex.aMem == 1);
+ test(ex.bMem == 2);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
{
+ auto f = thrower->throwCasA_async(1, 2, 3);
+ try
+ {
+ f.get();
+ }
+ catch(const C& ex)
+ {
+ test(ex.aMem == 1);
+ test(ex.bMem == 2);
+ test(ex.cMem == 3);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+
+ {
+ auto f = thrower->throwCasB_async(1, 2, 3);
+ try
+ {
+ f.get();
+ }
+ catch(const C& ex)
+ {
+ test(ex.aMem == 1);
+ test(ex.bMem == 2);
+ test(ex.cMem == 3);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+#else
+ {
CallbackPtr cb = new Callback;
- Callback_Thrower_throwBasAPtr callback =
+ Callback_Thrower_throwBasAPtr callback =
newCallback_Thrower_throwBasA(cb, &Callback::response, &Callback::exception_BasA);
thrower->begin_throwBasA(1, 2, callback);
cb->check();
@@ -1165,7 +1464,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwCasAPtr callback =
+ Callback_Thrower_throwCasAPtr callback =
newCallback_Thrower_throwCasA(cb, &Callback::response, &Callback::exception_CasA);
thrower->begin_throwCasA(1, 2, 3, callback);
cb->check();
@@ -1173,21 +1472,74 @@ allTests(const Ice::CommunicatorPtr& communicator)
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwCasBPtr callback =
+ Callback_Thrower_throwCasBPtr callback =
newCallback_Thrower_throwCasB(cb, &Callback::response, &Callback::exception_CasB);
thrower->begin_throwCasB(1, 2, 3, callback);
cb->check();
}
-
+#endif
cout << "ok" << endl;
if(thrower->supportsUndeclaredExceptions())
{
cout << "catching unknown user exception with new AMI mapping... " << flush;
+#ifdef ICE_CPP11_MAPPING
+ {
+ auto f = thrower->throwUndeclaredA_async(1);
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const Ice::UnknownUserException&)
+ {
+ }
+ catch(const Ice::Exception& ex)
+ {
+ cout << ex << endl;
+ cout << ex.ice_stackTrace() << endl;
+ test(false);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
{
+ auto f = thrower->throwUndeclaredB_async(1, 2);
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const Ice::UnknownUserException&)
+ {
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+
+ {
+ auto f = thrower->throwUndeclaredC_async(1, 2, 3);
+ try
+ {
+ f.get();
+ }
+ catch(const Ice::UnknownUserException&)
+ {
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+#else
+ {
CallbackPtr cb = new Callback;
- Callback_Thrower_throwUndeclaredAPtr callback =
+ Callback_Thrower_throwUndeclaredAPtr callback =
newCallback_Thrower_throwUndeclaredA(cb, &Callback::response, &Callback::exception_UndeclaredA);
thrower->begin_throwUndeclaredA(1, callback);
cb->check();
@@ -1203,25 +1555,43 @@ allTests(const Ice::CommunicatorPtr& communicator)
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwUndeclaredCPtr callback =
+ Callback_Thrower_throwUndeclaredCPtr callback =
newCallback_Thrower_throwUndeclaredC(cb, &Callback::response, &Callback::exception_UndeclaredC);
thrower->begin_throwUndeclaredC(1, 2, 3, callback);
cb->check();
}
-
+#endif
cout << "ok" << endl;
}
cout << "catching object not exist exception with new AMI mapping... " << flush;
{
+#ifdef ICE_CPP11_MAPPING
+ id = communicator->stringToIdentity("does not exist");
+ shared_ptr<ThrowerPrx> thrower2 = Ice::uncheckedCast<ThrowerPrx>(thrower->ice_identity(id));
+ auto f = thrower2->throwAasA_async(1);
+ try
+ {
+ f.get();
+ }
+ catch(const Ice::ObjectNotExistException& ex)
+ {
+ test(ex.id == id);
+ }
+ catch(...)
+ {
+ test(false);
+ }
+#else
id = communicator->stringToIdentity("does not exist");
ThrowerPrx thrower2 = ThrowerPrx::uncheckedCast(thrower->ice_identity(id));
CallbackPtr cb = new Callback(communicator);
- Callback_Thrower_throwAasAPtr callback =
+ Callback_Thrower_throwAasAPtr callback =
newCallback_Thrower_throwAasA(cb, &Callback::response, &Callback::exception_AasAObjectNotExist);
thrower2->begin_throwAasA(1, callback);
cb->check();
+#endif
}
cout << "ok" << endl;
@@ -1229,12 +1599,25 @@ allTests(const Ice::CommunicatorPtr& communicator)
cout << "catching facet not exist exception with new AMI mapping... " << flush;
{
+#ifdef ICE_CPP11_MAPPING
+ shared_ptr<ThrowerPrx> thrower2 = Ice::uncheckedCast<ThrowerPrx>(thrower, "no such facet");
+ auto f = thrower2->throwAasA_async(1);
+ try
+ {
+ f.get();
+ }
+ catch(const Ice::FacetNotExistException& ex)
+ {
+ test(ex.facet == "no such facet");
+ }
+#else
ThrowerPrx thrower2 = ThrowerPrx::uncheckedCast(thrower, "no such facet");
CallbackPtr cb = new Callback;
- Callback_Thrower_throwAasAPtr callback =
+ Callback_Thrower_throwAasAPtr callback =
newCallback_Thrower_throwAasA(cb, &Callback::response, &Callback::exception_AasAFacetNotExist);
thrower2->begin_throwAasA(1, callback);
cb->check();
+#endif
}
cout << "ok" << endl;
@@ -1242,22 +1625,74 @@ allTests(const Ice::CommunicatorPtr& communicator)
cout << "catching operation not exist exception with new AMI mapping... " << flush;
{
+#ifdef ICE_CPP11_MAPPING
+ shared_ptr<WrongOperationPrx> thrower4 = Ice::uncheckedCast<WrongOperationPrx>(thrower);
+ auto f = thrower4->noSuchOperation_async();
+ try
+ {
+ f.get();
+ }
+ catch(const Ice::OperationNotExistException& ex)
+ {
+ test(ex.operation == "noSuchOperation");
+ }
+ catch(...)
+ {
+ test(false);
+ }
+#else
CallbackPtr cb = new Callback;
- Callback_WrongOperation_noSuchOperationPtr callback =
- newCallback_WrongOperation_noSuchOperation(cb, &Callback::response,
+ Callback_WrongOperation_noSuchOperationPtr callback =
+ newCallback_WrongOperation_noSuchOperation(cb, &Callback::response,
&Callback::exception_noSuchOperation);
WrongOperationPrx thrower4 = WrongOperationPrx::uncheckedCast(thrower);
thrower4->begin_noSuchOperation(callback);
cb->check();
+#endif
}
cout << "ok" << endl;
cout << "catching unknown local exception with new AMI mapping... " << flush;
+#ifdef ICE_CPP11_MAPPING
+ {
+ auto f = thrower->throwLocalException_async();
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const Ice::UnknownLocalException&)
+ {
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
{
+ auto f = thrower->throwLocalExceptionIdempotent_async();
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const Ice::UnknownLocalException&)
+ {
+ }
+ catch(const Ice::OperationNotExistException&)
+ {
+ }
+ catch(...)
+ {
+ test(false);
+ }
+ }
+#else
+ {
CallbackPtr cb = new Callback;
- Callback_Thrower_throwLocalExceptionPtr callback =
+ Callback_Thrower_throwLocalExceptionPtr callback =
newCallback_Thrower_throwLocalException(cb, &Callback::response, &Callback::exception_LocalException);
thrower->begin_throwLocalException(callback);
cb->check();
@@ -1265,23 +1700,40 @@ allTests(const Ice::CommunicatorPtr& communicator)
{
CallbackPtr cb = new Callback;
- Callback_Thrower_throwLocalExceptionIdempotentPtr callback =
- newCallback_Thrower_throwLocalExceptionIdempotent(cb, &Callback::response,
+ Callback_Thrower_throwLocalExceptionIdempotentPtr callback =
+ newCallback_Thrower_throwLocalExceptionIdempotent(cb, &Callback::response,
&Callback::exception_LocalException);
thrower->begin_throwLocalExceptionIdempotent(callback);
cb->check();
}
-
+#endif
cout << "ok" << endl;
cout << "catching unknown non-Ice exception with new AMI mapping... " << flush;
{
+#ifdef ICE_CPP11_MAPPING
+ auto f = thrower->throwNonIceException_async();
+ try
+ {
+ f.get();
+ test(false);
+ }
+ catch(const Ice::UnknownException&)
+ {
+ }
+ catch(...)
+ {
+ test(false);
+ }
+
+#else
CallbackPtr cb = new Callback;
- Callback_Thrower_throwNonIceExceptionPtr callback =
+ Callback_Thrower_throwNonIceExceptionPtr callback =
newCallback_Thrower_throwNonIceException(cb, &Callback::response, &Callback::exception_NonIceException);
thrower->begin_throwNonIceException(callback);
cb->check();
+#endif
}
cout << "ok" << endl;