diff options
Diffstat (limited to 'cpp/test/Ice/slicing/objects/AllTests.cpp')
-rw-r--r-- | cpp/test/Ice/slicing/objects/AllTests.cpp | 920 |
1 files changed, 753 insertions, 167 deletions
diff --git a/cpp/test/Ice/slicing/objects/AllTests.cpp b/cpp/test/Ice/slicing/objects/AllTests.cpp index 6f6d31ef209..b048c8129d4 100644 --- a/cpp/test/Ice/slicing/objects/AllTests.cpp +++ b/cpp/test/Ice/slicing/objects/AllTests.cpp @@ -52,7 +52,10 @@ private: bool _called; }; -class Callback : public CallbackBase, public IceUtil::Shared +class Callback : public CallbackBase +#ifndef ICE_CPP11_MAPPING + , public virtual IceUtil::Shared +#endif { public: @@ -61,7 +64,7 @@ public: { test(o); test(o->ice_id() == "::Test::SBase"); - SBasePtr sb = SBasePtr::dynamicCast(o); + SBasePtr sb = ICE_DYNAMIC_CAST(SBase, o); test(sb); test(sb->sb == "SBase.sb"); called(); @@ -77,12 +80,12 @@ public: void response_SBSKnownDerivedAsSBase(const SBasePtr& sb) { - SBSKnownDerivedPtr sbskd = SBSKnownDerivedPtr::dynamicCast(sb); + SBSKnownDerivedPtr sbskd = ICE_DYNAMIC_CAST(SBSKnownDerived, sb); test(sbskd); test(sbskd->sbskd == "SBSKnownDerived.sbskd"); called(); } - + void response_SBSKnownDerivedAsSBSKnownDerived(const SBSKnownDerivedPtr& sbskd) { @@ -106,7 +109,7 @@ public: void exception_SBSUnknownDerivedAsSBaseCompact(const Ice::Exception& exc) { - test(exc.ice_name() == "Ice::NoObjectFactoryException"); + test(exc.ice_id() == "::Ice::NoValueFactoryException"); called(); } @@ -119,15 +122,15 @@ public: void exception_SUnknownAsObject10(const Ice::Exception& exc) { - test(exc.ice_name() == "Ice::NoObjectFactoryException"); + test(exc.ice_id() == "::Ice::NoValueFactoryException"); called(); } void response_SUnknownAsObject11(const Ice::ObjectPtr& o) { - test(Ice::UnknownSlicedObjectPtr::dynamicCast(o)); - test(Ice::UnknownSlicedObjectPtr::dynamicCast(o)->getUnknownTypeId() == "::Test::SUnknown"); + test(ICE_DYNAMIC_CAST(Ice::UnknownSlicedValue, o)); + test(ICE_DYNAMIC_CAST(Ice::UnknownSlicedValue, o)->getUnknownTypeId() == "::Test::SUnknown"); called(); } @@ -170,7 +173,7 @@ public: test(b1->sb == "D1.sb"); test(b1->pb); test(b1->pb != b1); - D1Ptr d1 = D1Ptr::dynamicCast(b1); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); test(d1); test(d1->sd1 == "D1.sd1"); test(d1->pd1); @@ -216,7 +219,7 @@ public: test(b1->ice_id() == "::Test::D1"); test(b1->sb == "D1.sb"); test(b1->pb == b2); - D1Ptr d1 = D1Ptr::dynamicCast(b1); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); test(d1); test(d1->sd1 == "D1.sd1"); test(d1->pd1 == b2); @@ -230,7 +233,7 @@ public: test(b1->ice_id() == "::Test::D1"); test(b1->sb == "D1.sb"); test(b1->pb == b2); - D1Ptr d1 = D1Ptr::dynamicCast(b1); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); test(d1); test(d1->sd1 == "D1.sd1"); test(d1->pd1 == b2); @@ -316,7 +319,7 @@ public: void exception_throwBaseAsBase(const ::Ice::Exception& ex) { - test(ex.ice_name() == "Test::BaseException"); + test(ex.ice_id() == "::Test::BaseException"); const BaseException& e = dynamic_cast<const BaseException&>(ex); test(e.sbe == "sbe"); test(e.pb); @@ -328,7 +331,7 @@ public: void exception_throwDerivedAsBase(const ::Ice::Exception& ex) { - test(ex.ice_name() == "Test::DerivedException"); + test(ex.ice_id() == "::Test::DerivedException"); const DerivedException& e = dynamic_cast<const DerivedException&>(ex); test(e.sbe == "sbe"); test(e.pb); @@ -346,7 +349,7 @@ public: void exception_throwDerivedAsDerived(const ::Ice::Exception& ex) { - test(ex.ice_name() == "Test::DerivedException"); + test(ex.ice_id() == "::Test::DerivedException"); const DerivedException& e = dynamic_cast<const DerivedException&>(ex); test(e.sbe == "sbe"); test(e.pb); @@ -365,7 +368,7 @@ public: void exception_throwUnknownDerivedAsBase(const ::Ice::Exception& ex) { - test(ex.ice_name() == "Test::BaseException"); + test(ex.ice_id() == "::Test::BaseException"); const BaseException& e = dynamic_cast<const BaseException&>(ex); test(e.sbe == "sbe"); test(e.pb); @@ -375,16 +378,9 @@ public: } void - response_useForward(const ForwardPtr& f) - { - test(f); - called(); - } - - void response_preserved1(const PBasePtr& r) { - PDerivedPtr pd = PDerivedPtr::dynamicCast(r); + PDerivedPtr pd = ICE_DYNAMIC_CAST(PDerived, r); test(pd); test(pd->pi == 3); test(pd->ps == "preserved"); @@ -395,7 +391,7 @@ public: void response_preserved2(const PBasePtr& r) { - PCUnknownPtr p2 = PCUnknownPtr::dynamicCast(r); + PCUnknownPtr p2 = ICE_DYNAMIC_CAST(PCUnknown, r); test(!p2); test(r->pi == 3); called(); @@ -407,7 +403,7 @@ public: // // Encoding 1.0 // - PCDerivedPtr p2 = PCDerivedPtr::dynamicCast(r); + PCDerivedPtr p2 = ICE_DYNAMIC_CAST(PCDerived, r); test(!p2); test(r->pi == 3); called(); @@ -419,7 +415,7 @@ public: // // Encoding > 1.0 // - PCDerivedPtr p2 = PCDerivedPtr::dynamicCast(r); + PCDerivedPtr p2 = ICE_DYNAMIC_CAST(PCDerived, r); test(p2); test(p2->pi == 3); test(p2->pbs[0] == p2); @@ -429,12 +425,12 @@ public: void response_preserved5(const PBasePtr& r) { - PCDerived3Ptr p3 = PCDerived3Ptr::dynamicCast(r); + PCDerived3Ptr p3 = ICE_DYNAMIC_CAST(PCDerived3, r); test(p3); test(p3->pi == 3); for(int i = 0; i < 300; ++i) { - PCDerived2Ptr p2 = PCDerived2Ptr::dynamicCast(p3->pbs[i]); + PCDerived2Ptr p2 = ICE_DYNAMIC_CAST(PCDerived2, p3->pbs[i]); test(p2->pi == i); test(p2->pbs.size() == 1); test(!p2->pbs[0]); @@ -451,7 +447,7 @@ public: // // Encoding 1.0 // - CompactPCDerivedPtr p2 = CompactPCDerivedPtr::dynamicCast(r); + CompactPCDerivedPtr p2 = ICE_DYNAMIC_CAST(CompactPCDerived, r); test(!p2); test(r->pi == 3); called(); @@ -463,20 +459,20 @@ public: // // Encoding > 1.0 // - CompactPCDerivedPtr p2 = CompactPCDerivedPtr::dynamicCast(r); + CompactPCDerivedPtr p2 = ICE_DYNAMIC_CAST(CompactPCDerived, r); test(p2); test(p2->pi == 3); test(p2->pbs[0] == p2); called(); } - void + void response() { test(false); } - void + void exception(const ::Ice::Exception& ex) { if(!dynamic_cast<const Ice::OperationNotExistException*>(&ex)) @@ -488,15 +484,15 @@ public: called(); } } - + BPtr rb; SS3 rss3; BDict rbdict; BDict obdict; }; -typedef IceUtil::Handle<Callback> CallbackPtr; +ICE_DEFINE_PTR(CallbackPtr, Callback); -class PNodeI : virtual public PNode +class PNodeI : public virtual PNode { public: @@ -515,7 +511,8 @@ public: int PNodeI::counter = 0; -class NodeFactoryI : public Ice::ObjectFactory +#ifndef ICE_CPP11_MAPPING +class NodeFactoryI : public Ice::ValueFactory { public: @@ -532,8 +529,9 @@ public: { } }; +#endif -class PreservedI : virtual public Preserved +class PreservedI : public virtual Preserved { public: @@ -552,7 +550,8 @@ public: int PreservedI::counter = 0; -class PreservedFactoryI : public Ice::ObjectFactory +#ifndef ICE_CPP11_MAPPING +class PreservedFactoryI : public Ice::ValueFactory { public: @@ -569,20 +568,21 @@ public: { } }; +#endif void -testUOO(const TestIntfPrx& test) +testUOO(const TestIntfPrxPtr& test) { - Ice::ObjectPtr o; + Ice::ValuePtr o; try { o = test->SUnknownAsObject(); test(test->ice_getEncodingVersion() != Ice::Encoding_1_0); - test(Ice::UnknownSlicedObjectPtr::dynamicCast(o)); - test(Ice::UnknownSlicedObjectPtr::dynamicCast(o)->getUnknownTypeId() == "::Test::SUnknown"); + test(ICE_DYNAMIC_CAST(Ice::UnknownSlicedValue, o)); + test(ICE_DYNAMIC_CAST(Ice::UnknownSlicedValue, o)->getUnknownTypeId() == "::Test::SUnknown"); test->checkSUnknown(o); } - catch(const Ice::NoObjectFactoryException&) + catch(const Ice::NoValueFactoryException&) { test(test->ice_getEncodingVersion() == Ice::Encoding_1_0); } @@ -597,26 +597,31 @@ testUOO(const TestIntfPrx& test) } } -TestIntfPrx +TestIntfPrxPtr allTests(const Ice::CommunicatorPtr& communicator) { - Ice::ObjectPrx obj = communicator->stringToProxy("Test:default -p 12010"); - TestIntfPrx test = TestIntfPrx::checkedCast(obj); + Ice::ObjectPrxPtr obj = communicator->stringToProxy("Test:" + getTestEndpoint(communicator, 0)); + TestIntfPrxPtr test = ICE_CHECKED_CAST(TestIntfPrx, obj); cout << "base as Object... " << flush; { - Ice::ObjectPtr o; + Ice::ValuePtr o; try { o = test->SBaseAsObject(); test(o); test(o->ice_id() == "::Test::SBase"); } + catch(const std::exception& ex) + { + cerr << ex.what() << endl; + test(false); + } catch(...) { test(false); } - SBasePtr sb = SBasePtr::dynamicCast(o); + SBasePtr sb = ICE_DYNAMIC_CAST(SBase, o); test(sb); test(sb->sb == "SBase.sb"); } @@ -624,10 +629,27 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "base as Object (AMI)... " << flush; { - CallbackPtr cb = new Callback; +#ifdef ICE_CPP11_MAPPING + auto f = test->SBaseAsObjectAsync(); + try + { + auto o = f.get(); + test(o); + test(o->ice_id() == "::Test::SBase"); + auto sb = dynamic_pointer_cast<SBase>(o); + test(sb); + test(sb->sb == "SBase.sb"); + } + catch(...) + { + test(false); + } +#else + CallbackPtr cb = new Callback(); test->begin_SBaseAsObject( newCallback_TestIntf_SBaseAsObject(cb, &Callback::response_SBaseAsObject, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -648,10 +670,22 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "base as base (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + try + { + auto sb = test->SBaseAsSBaseAsync().get(); + test(sb->sb == "SBase.sb"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_SBaseAsSBase( newCallback_TestIntf_SBaseAsSBase(cb, &Callback::response_SBaseAsSBase, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -667,7 +701,7 @@ allTests(const Ice::CommunicatorPtr& communicator) { test(false); } - SBSKnownDerivedPtr sbskd = SBSKnownDerivedPtr::dynamicCast(sb); + SBSKnownDerivedPtr sbskd = ICE_DYNAMIC_CAST(SBSKnownDerived, sb); test(sbskd); test(sbskd->sbskd == "SBSKnownDerived.sbskd"); } @@ -675,11 +709,28 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "base with known derived as base (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->SBSKnownDerivedAsSBaseAsync(); + try + { + shared_ptr<SBase> sb = f.get(); + sb = test->SBSKnownDerivedAsSBase(); + test(sb->sb == "SBSKnownDerived.sb"); + SBSKnownDerivedPtr sbskd = ICE_DYNAMIC_CAST(SBSKnownDerived, sb); + test(sbskd); + test(sbskd->sbskd == "SBSKnownDerived.sbskd"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_SBSKnownDerivedAsSBase( newCallback_TestIntf_SBSKnownDerivedAsSBase( cb, &Callback::response_SBSKnownDerivedAsSBase, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -700,11 +751,24 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "base with known derived as known derived (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->SBSKnownDerivedAsSBSKnownDerivedAsync(); + try + { + SBSKnownDerivedPtr sbskd = test->SBSKnownDerivedAsSBSKnownDerived(); + test(sbskd->sbskd == "SBSKnownDerived.sbskd"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_SBSKnownDerivedAsSBSKnownDerived( newCallback_TestIntf_SBSKnownDerivedAsSBSKnownDerived( cb, &Callback::response_SBSKnownDerivedAsSBSKnownDerived, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -753,7 +817,7 @@ allTests(const Ice::CommunicatorPtr& communicator) catch(const Ice::OperationNotExistException&) { } - catch(const Ice::NoObjectFactoryException&) + catch(const Ice::NoValueFactoryException&) { // Expected. } @@ -766,22 +830,48 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "base with unknown derived as base (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->SBSUnknownDerivedAsSBaseAsync(); + try + { + SBasePtr sb = f.get(); + test(sb->sb == "SBSUnknownDerived.sb"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_SBSUnknownDerivedAsSBase( newCallback_TestIntf_SBSUnknownDerivedAsSBase( cb, &Callback::response_SBSUnknownDerivedAsSBase, &Callback::exception)); cb->check(); +#endif } if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) { // // This test succeeds for the 1.0 encoding. // +#ifdef ICE_CPP11_MAPPING + auto f = test->SBSUnknownDerivedAsSBaseCompactAsync(); + try + { + SBasePtr sb = f.get(); + test(sb->sb == "SBSUnknownDerived.sb"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_SBSUnknownDerivedAsSBaseCompact( newCallback_TestIntf_SBSUnknownDerivedAsSBaseCompact( cb, &Callback::response_SBSUnknownDerivedAsSBase, &Callback::exception)); cb->check(); +#endif } else { @@ -789,12 +879,28 @@ allTests(const Ice::CommunicatorPtr& communicator) // This test fails when using the compact format because the instance cannot // be sliced to a known type. // +#ifdef ICE_CPP11_MAPPING + auto f = test->SBSUnknownDerivedAsSBaseCompactAsync(); + try + { + f.get(); + test(false); + } + catch(const Ice::NoValueFactoryException&) + { + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_SBSUnknownDerivedAsSBaseCompact( newCallback_TestIntf_SBSUnknownDerivedAsSBaseCompact( cb, &Callback::response_SBSUnknownDerivedAsSBaseCompact, &Callback::exception_SBSUnknownDerivedAsSBaseCompact)); cb->check(); +#endif } cout << "ok" << endl; @@ -808,6 +914,39 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { +#ifdef ICE_CPP11_MAPPING + if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) + { + auto f = test->SUnknownAsObjectAsync(); + try + { + f.get(); + test(false); + } + catch(const Ice::NoValueFactoryException&) + { + } + catch(...) + { + test(false); + } + } + else + { + auto f = test->SUnknownAsObjectAsync(); + try + { + shared_ptr<Ice::Value> v = f.get(); + test(dynamic_pointer_cast<Ice::UnknownSlicedValue>(v)); + test(dynamic_pointer_cast<Ice::UnknownSlicedValue>(v)->getUnknownTypeId() == "::Test::SUnknown"); + } + catch(...) + { + test(false); + } + + } +#else CallbackPtr cb = new Callback; if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) { @@ -822,6 +961,7 @@ allTests(const Ice::CommunicatorPtr& communicator) cb, &Callback::response_SUnknownAsObject11, &Callback::exception_SUnknownAsObject11)); } cb->check(); +#endif } catch(...) { @@ -849,11 +989,27 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "one-element cycle (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->oneElementCycleAsync(); + try + { + auto b = f.get(); + test(b); + test(b->ice_id() == "::Test::B"); + test(b->sb == "B1.sb"); + test(b->pb == b); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_oneElementCycle( newCallback_TestIntf_oneElementCycle( cb, &Callback::response_oneElementCycle, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -881,11 +1037,32 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "two-element cycle (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->twoElementCycleAsync(); + try + { + auto b1 = f.get(); + test(b1); + test(b1->ice_id() == "::Test::B"); + test(b1->sb == "B1.sb"); + + auto b2 = b1->pb; + test(b2); + test(b2->ice_id() == "::Test::B"); + test(b2->sb == "B2.sb"); + test(b2->pb == b1); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_twoElementCycle( newCallback_TestIntf_twoElementCycle( cb, &Callback::response_twoElementCycle, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -900,7 +1077,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b1->sb == "D1.sb"); test(b1->pb); test(b1->pb != b1); - D1Ptr d1 = D1Ptr::dynamicCast(b1); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); test(d1); test(d1->sd1 == "D1.sd1"); test(d1->pd1); @@ -922,9 +1099,38 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "known derived pointer slicing as base (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->D1AsBAsync(); + try + { + auto b1 = f.get(); + test(b1); + test(b1->ice_id() == "::Test::D1"); + test(b1->sb == "D1.sb"); + test(b1->pb); + test(b1->pb != b1); + auto d1 = dynamic_pointer_cast<D1>(b1); + test(d1); + test(d1->sd1 == "D1.sd1"); + test(d1->pd1); + test(d1->pd1 != b1); + test(b1->pb == d1->pd1); + + auto b2 = b1->pb; + test(b2); + test(b2->pb == b1); + test(b2->sb == "D2.sb"); + test(b2->ice_id() == "::Test::B"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_D1AsB(newCallback_TestIntf_D1AsB(cb, &Callback::response_D1AsB, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -955,9 +1161,32 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "known derived pointer slicing as derived (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->D1AsD1Async(); + try + { + auto d1 = f.get(); + test(d1); + test(d1->ice_id() == "::Test::D1"); + test(d1->sb == "D1.sb"); + test(d1->pb); + test(d1->pb != d1); + + auto b2 = d1->pb; + test(b2); + test(b2->ice_id() == "::Test::B"); + test(b2->sb == "D2.sb"); + test(b2->pb == d1); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_D1AsD1(newCallback_TestIntf_D1AsD1(cb, &Callback::response_D1AsD1, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -978,7 +1207,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b1->ice_id() == "::Test::D1"); test(b1->sb == "D1.sb"); test(b1->pb == b2); - D1Ptr d1 = D1Ptr::dynamicCast(b1); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); test(d1); test(d1->sd1 == "D1.sd1"); test(d1->pd1 == b2); @@ -992,9 +1221,36 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "unknown derived pointer slicing as base (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->D2AsBAsync(); + try + { + auto b2 = test->D2AsB(); + test(b2); + test(b2->ice_id() == "::Test::B"); + test(b2->sb == "D2.sb"); + test(b2->pb); + test(b2->pb != b2); + + auto b1 = b2->pb; + test(b1); + test(b1->ice_id() == "::Test::D1"); + test(b1->sb == "D1.sb"); + test(b1->pb == b2); + auto d1 = dynamic_pointer_cast<D1>(b1); + test(d1); + test(d1->sd1 == "D1.sd1"); + test(d1->pd1 == b2); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_D2AsB(newCallback_TestIntf_D2AsB(cb, &Callback::response_D2AsB, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -1010,7 +1266,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b1->ice_id() == "::Test::D1"); test(b1->sb == "D1.sb"); test(b1->pb == b2); - D1Ptr d1 = D1Ptr::dynamicCast(b1); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); test(d1); test(d1->sd1 == "D1.sd1"); test(d1->pd1 == b2); @@ -1029,10 +1285,38 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "param ptr slicing with known first (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->paramTest1Async(); + try + { + auto result = f.get(); + auto b1 = move(result.p1); + auto b2 = move(result.p2); + + test(b1); + test(b1->ice_id() == "::Test::D1"); + test(b1->sb == "D1.sb"); + test(b1->pb == b2); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); + test(d1); + test(d1->sd1 == "D1.sd1"); + test(d1->pd1 == b2); + + test(b2); + test(b2->ice_id() == "::Test::B"); // No factory, must be sliced + test(b2->sb == "D2.sb"); + test(b2->pb == b1); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_paramTest1( newCallback_TestIntf_paramTest1(cb, &Callback::response_paramTest1, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -1048,7 +1332,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b1->ice_id() == "::Test::D1"); test(b1->sb == "D1.sb"); test(b1->pb == b2); - D1Ptr d1 = D1Ptr::dynamicCast(b1); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b1); test(d1); test(d1->sd1 == "D1.sd1"); test(d1->pd1 == b2); @@ -1083,10 +1367,23 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "return value identity with known first (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->returnTest1Async(); + try + { + auto result = f.get(); + test(result.returnValue == result.p1); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_returnTest1( newCallback_TestIntf_returnTest1(cb, &Callback::response_returnTest1, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -1108,10 +1405,23 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "return value identity with unknown first (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->returnTest2Async(); + try + { + auto result = f.get(); + test(result.returnValue == result.p2); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_returnTest2( newCallback_TestIntf_returnTest2(cb, &Callback::response_returnTest2, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -1119,24 +1429,26 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - D1Ptr d1 = new D1; + D1Ptr d1 = ICE_MAKE_SHARED(D1); d1->sb = "D1.sb"; d1->sd1 = "D1.sd1"; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->pb = d1; d3->sb = "D3.sb"; d3->sd3 = "D3.sd3"; d3->pd3 = d1; d1->pb = d3; d1->pd1 = d3; +#ifndef ICE_CPP11_MAPPING d1->ice_collectable(true); +#endif BPtr b1 = test->returnTest3(d1, d3); test(b1); test(b1->sb == "D1.sb"); test(b1->ice_id() == "::Test::D1"); - D1Ptr p1 = D1Ptr::dynamicCast(b1); + D1Ptr p1 = ICE_DYNAMIC_CAST(D1, b1); test(p1); test(p1->sd1 == "D1.sd1"); test(p1->pd1 == b1->pb); @@ -1146,7 +1458,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b2->sb == "D3.sb"); test(b2->ice_id() == "::Test::B"); // Sliced by server test(b2->pb == b1); - D3Ptr p3 = D3Ptr::dynamicCast(b2); + D3Ptr p3 = ICE_DYNAMIC_CAST(D3, b2); test(!p3); test(b1 != d1); @@ -1165,28 +1477,35 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - D1Ptr d1 = new D1; + D1Ptr d1 = ICE_MAKE_SHARED(D1); d1->sb = "D1.sb"; d1->sd1 = "D1.sd1"; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->pb = d1; d3->sb = "D3.sb"; d3->sd3 = "D3.sd3"; d3->pd3 = d1; d1->pb = d3; d1->pd1 = d3; +#ifndef ICE_CPP11_MAPPING d1->ice_collectable(true); - +#endif + +#ifdef ICE_CPP11_MAPPING + auto f = test->returnTest3Async(d1, d3); + auto b1 = f.get(); +#else CallbackPtr cb = new Callback; test->begin_returnTest3(d1, d3, newCallback_TestIntf_returnTest3(cb, &Callback::response_returnTest3, &Callback::exception)); cb->check(); BPtr b1 = cb->rb; +#endif test(b1); test(b1->sb == "D1.sb"); test(b1->ice_id() == "::Test::D1"); - D1Ptr p1 = D1Ptr::dynamicCast(b1); + D1Ptr p1 = ICE_DYNAMIC_CAST(D1, b1); test(p1); test(p1->sd1 == "D1.sd1"); test(p1->pd1 == b1->pb); @@ -1196,7 +1515,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b2->sb == "D3.sb"); test(b2->ice_id() == "::Test::B"); // Sliced by server test(b2->pb == b1); - D3Ptr p3 = D3Ptr::dynamicCast(b2); + D3Ptr p3 = ICE_DYNAMIC_CAST(D3, b2); test(!p3); test(b1 != d1); @@ -1215,24 +1534,26 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - D1Ptr d1 = new D1; + D1Ptr d1 = ICE_MAKE_SHARED(D1); d1->sb = "D1.sb"; d1->sd1 = "D1.sd1"; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->pb = d1; d3->sb = "D3.sb"; d3->sd3 = "D3.sd3"; d3->pd3 = d1; d1->pb = d3; d1->pd1 = d3; +#ifndef ICE_CPP11_MAPPING d1->ice_collectable(true); - +#endif BPtr b1 = test->returnTest3(d3, d1); test(b1); test(b1->sb == "D3.sb"); test(b1->ice_id() == "::Test::B"); // Sliced by server - D3Ptr p1 = D3Ptr::dynamicCast(b1); + + D3Ptr p1 = ICE_DYNAMIC_CAST(D3, b1); test(!p1); BPtr b2 = b1->pb; @@ -1240,7 +1561,8 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b2->sb == "D1.sb"); test(b2->ice_id() == "::Test::D1"); test(b2->pb == b1); - D1Ptr p3 = D1Ptr::dynamicCast(b2); + + D1Ptr p3 = ICE_DYNAMIC_CAST(D1, b2); test(p3); test(p3->sd1 == "D1.sd1"); test(p3->pd1 == b1); @@ -1261,28 +1583,35 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - D1Ptr d1 = new D1; + D1Ptr d1 = ICE_MAKE_SHARED(D1); d1->sb = "D1.sb"; d1->sd1 = "D1.sd1"; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->pb = d1; d3->sb = "D3.sb"; d3->sd3 = "D3.sd3"; d3->pd3 = d1; d1->pb = d3; d1->pd1 = d3; +#ifndef ICE_CPP11_MAPPING d1->ice_collectable(true); - +#endif + +#ifdef ICE_CPP11_MAPPING + auto f = test->returnTest3Async(d3, d1); + auto b1 = f.get(); +#else CallbackPtr cb = new Callback; - test->begin_returnTest3(d3, d1, + test->begin_returnTest3(d3, d1, newCallback_TestIntf_returnTest3(cb, &Callback::response_returnTest3, &Callback::exception)); cb->check(); BPtr b1 = cb->rb; +#endif test(b1); test(b1->sb == "D3.sb"); test(b1->ice_id() == "::Test::B"); // Sliced by server - D3Ptr p1 = D3Ptr::dynamicCast(b1); + D3Ptr p1 = ICE_DYNAMIC_CAST(D3, b1); test(!p1); BPtr b2 = b1->pb; @@ -1290,7 +1619,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(b2->sb == "D1.sb"); test(b2->ice_id() == "::Test::D1"); test(b2->pb == b1); - D1Ptr p3 = D1Ptr::dynamicCast(b2); + D1Ptr p3 = ICE_DYNAMIC_CAST(D1, b2); test(p3); test(p3->sd1 == "D1.sd1"); test(p3->pd1 == b1); @@ -1339,10 +1668,40 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "remainder unmarshaling (3 instances) (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->paramTest3Async(); + try + { + auto result = f.get(); + auto ret = result.returnValue; + auto p1 = result.p1; + auto p2 = result.p2; + + test(p1); + test(p1->sb == "D2.sb (p1 1)"); + test(p1->pb == 0); + test(p1->ice_id() == "::Test::B"); + + test(p2); + test(p2->sb == "D2.sb (p2 1)"); + test(p2->pb == 0); + test(p2->ice_id() == "::Test::B"); + + test(ret); + test(ret->sb == "D1.sb (p2 2)"); + test(ret->pb == 0); + test(ret->ice_id() == "::Test::D1"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_paramTest3( newCallback_TestIntf_paramTest3(cb, &Callback::response_paramTest3, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -1372,10 +1731,34 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "remainder unmarshaling (4 instances) (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + auto f = test->paramTest4Async(); + try + { + auto result = f.get(); + auto ret = move(result.returnValue); + auto b = move(result.p); + + test(b); + test(b->sb == "D4.sb (1)"); + test(b->pb == nullptr); + test(b->ice_id() == "::Test::B"); + + test(ret); + test(ret->sb == "B.sb (2)"); + test(ret->pb == nullptr); + test(ret->ice_id() == "::Test::B"); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_paramTest4( newCallback_TestIntf_paramTest4(cb, &Callback::response_paramTest4, &Callback::exception)); cb->check(); +#endif } cout << "ok" << endl; @@ -1383,18 +1766,20 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - BPtr b1 = new B; + BPtr b1 = ICE_MAKE_SHARED(B); b1->sb = "B.sb(1)"; b1->pb = b1; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->sb = "D3.sb"; d3->pb = d3; d3->sd3 = "D3.sd3"; d3->pd3 = b1; +#ifndef ICE_CPP11_MAPPING d3->ice_collectable(true); +#endif - BPtr b2 = new B; + BPtr b2 = ICE_MAKE_SHARED(B); b2->sb = "B.sb(2)"; b2->pb = b1; @@ -1416,27 +1801,32 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - BPtr b1 = new B; + BPtr b1 = ICE_MAKE_SHARED(B); b1->sb = "B.sb(1)"; b1->pb = b1; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->sb = "D3.sb"; d3->pb = d3; d3->sd3 = "D3.sd3"; d3->pd3 = b1; +#ifndef ICE_CPP11_MAPPING d3->ice_collectable(true); +#endif - BPtr b2 = new B; + BPtr b2 = ICE_MAKE_SHARED(B); b2->sb = "B.sb(2)"; b2->pb = b1; +#ifdef ICE_CPP11_MAPPING + auto r = test->returnTest3Async(d3, b2).get(); +#else CallbackPtr cb = new Callback; test->begin_returnTest3(d3, b2, newCallback_TestIntf_returnTest3(cb, &Callback::response_returnTest3, &Callback::exception)); cb->check(); BPtr r = cb->rb; - +#endif test(r); test(r->ice_id() == "::Test::B"); test(r->sb == "D3.sb"); @@ -1454,25 +1844,27 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - D1Ptr d11 = new D1; + D1Ptr d11 = ICE_MAKE_SHARED(D1); d11->sb = "D1.sb(1)"; d11->pb = d11; d11->sd1 = "D1.sd1(1)"; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->sb = "D3.sb"; d3->pb = d3; d3->sd3 = "D3.sd3"; d3->pd3 = d11; +#ifndef ICE_CPP11_MAPPING d3->ice_collectable(true); - - D1Ptr d12 = new D1; +#endif + D1Ptr d12 = ICE_MAKE_SHARED(D1); d12->sb = "D1.sb(2)"; d12->pb = d12; d12->sd1 = "D1.sd1(2)"; d12->pd1 = d11; +#ifndef ICE_CPP11_MAPPING d12->ice_collectable(true); - +#endif BPtr r = test->returnTest3(d3, d12); test(r); test(r->ice_id() == "::Test::B"); @@ -1491,30 +1883,37 @@ allTests(const Ice::CommunicatorPtr& communicator) { try { - D1Ptr d11 = new D1; + D1Ptr d11 = ICE_MAKE_SHARED(D1); d11->sb = "D1.sb(1)"; d11->pb = d11; d11->sd1 = "D1.sd1(1)"; - D3Ptr d3 = new D3; + D3Ptr d3 = ICE_MAKE_SHARED(D3); d3->sb = "D3.sb"; d3->pb = d3; d3->sd3 = "D3.sd3"; d3->pd3 = d11; +#ifndef ICE_CPP11_MAPPING d3->ice_collectable(true); - - D1Ptr d12 = new D1; +#endif + D1Ptr d12 = ICE_MAKE_SHARED(D1); d12->sb = "D1.sb(2)"; d12->pb = d12; d12->sd1 = "D1.sd1(2)"; d12->pd1 = d11; +#ifndef ICE_CPP11_MAPPING d12->ice_collectable(true); +#endif +#ifdef ICE_CPP11_MAPPING + auto r = test->returnTest3Async(d3, d12).get(); +#else CallbackPtr cb = new Callback; test->begin_returnTest3(d3, d12, newCallback_TestIntf_returnTest3(cb, &Callback::response_returnTest3, &Callback::exception)); cb->check(); BPtr r = cb->rb; +#endif test(r); test(r->ice_id() == "::Test::B"); test(r->sb == "D3.sb"); @@ -1533,31 +1932,32 @@ allTests(const Ice::CommunicatorPtr& communicator) { SS3 ss; { - BPtr ss1b = new B; + BPtr ss1b = ICE_MAKE_SHARED(B); ss1b->sb = "B.sb"; ss1b->pb = ss1b; - D1Ptr ss1d1 = new D1; + D1Ptr ss1d1 = ICE_MAKE_SHARED(D1); ss1d1->sb = "D1.sb"; ss1d1->sd1 = "D1.sd1"; ss1d1->pb = ss1b; - D3Ptr ss1d3 = new D3; + D3Ptr ss1d3 = ICE_MAKE_SHARED(D3); ss1d3->sb = "D3.sb"; ss1d3->sd3 = "D3.sd3"; ss1d3->pb = ss1b; +#ifndef ICE_CPP11_MAPPING ss1d3->ice_collectable(true); - - BPtr ss2b = new B; +#endif + BPtr ss2b = ICE_MAKE_SHARED(B); ss2b->sb = "B.sb"; ss2b->pb = ss1b; - D1Ptr ss2d1 = new D1; + D1Ptr ss2d1 = ICE_MAKE_SHARED(D1); ss2d1->sb = "D1.sb"; ss2d1->sd1 = "D1.sd1"; ss2d1->pb = ss2b; - D3Ptr ss2d3 = new D3; + D3Ptr ss2d3 = ICE_MAKE_SHARED(D3); ss2d3->sb = "D3.sb"; ss2d3->sd3 = "D3.sd3"; ss2d3->pb = ss2b; @@ -1568,19 +1968,20 @@ allTests(const Ice::CommunicatorPtr& communicator) ss2d1->pd1 = ss1d3; ss2d3->pd3 = ss1d1; - SS1Ptr ss1 = new SS1; + SS1Ptr ss1 = ICE_MAKE_SHARED(SS1); ss1->s.push_back(ss1b); ss1->s.push_back(ss1d1); ss1->s.push_back(ss1d3); - SS2Ptr ss2 = new SS2; + SS2Ptr ss2 = ICE_MAKE_SHARED(SS2); ss2->s.push_back(ss2b); ss2->s.push_back(ss2d1); ss2->s.push_back(ss2d3); - + +#ifndef ICE_CPP11_MAPPING ss1->ice_collectable(true); ss2->ice_collectable(true); - +#endif ss = test->sequenceTest(ss1, ss2); } @@ -1624,31 +2025,33 @@ allTests(const Ice::CommunicatorPtr& communicator) { SS3 ss; { - BPtr ss1b = new B; + BPtr ss1b = ICE_MAKE_SHARED(B); ss1b->sb = "B.sb"; ss1b->pb = ss1b; - D1Ptr ss1d1 = new D1; + D1Ptr ss1d1 = ICE_MAKE_SHARED(D1); ss1d1->sb = "D1.sb"; ss1d1->sd1 = "D1.sd1"; ss1d1->pb = ss1b; - D3Ptr ss1d3 = new D3; + D3Ptr ss1d3 = ICE_MAKE_SHARED(D3); ss1d3->sb = "D3.sb"; ss1d3->sd3 = "D3.sd3"; ss1d3->pb = ss1b; +#ifndef ICE_CPP11_MAPPING ss1d3->ice_collectable(true); +#endif - BPtr ss2b = new B; + BPtr ss2b = ICE_MAKE_SHARED(B); ss2b->sb = "B.sb"; ss2b->pb = ss1b; - D1Ptr ss2d1 = new D1; + D1Ptr ss2d1 = ICE_MAKE_SHARED(D1); ss2d1->sb = "D1.sb"; ss2d1->sd1 = "D1.sd1"; ss2d1->pb = ss2b; - D3Ptr ss2d3 = new D3; + D3Ptr ss2d3 = ICE_MAKE_SHARED(D3); ss2d3->sb = "D3.sb"; ss2d3->sd3 = "D3.sd3"; ss2d3->pb = ss2b; @@ -1659,24 +2062,29 @@ allTests(const Ice::CommunicatorPtr& communicator) ss2d1->pd1 = ss1d3; ss2d3->pd3 = ss1d1; - SS1Ptr ss1 = new SS1; + SS1Ptr ss1 = ICE_MAKE_SHARED(SS1); ss1->s.push_back(ss1b); ss1->s.push_back(ss1d1); ss1->s.push_back(ss1d3); - SS2Ptr ss2 = new SS2; + SS2Ptr ss2 = ICE_MAKE_SHARED(SS2); ss2->s.push_back(ss2b); ss2->s.push_back(ss2d1); ss2->s.push_back(ss2d3); - +#ifndef ICE_CPP11_MAPPING ss1->ice_collectable(true); ss2->ice_collectable(true); +#endif +#ifdef ICE_CPP11_MAPPING + ss = test->sequenceTestAsync(ss1, ss2).get(); +#else CallbackPtr cb = new Callback; test->begin_sequenceTest(ss1, ss2, newCallback_TestIntf_sequenceTest(cb, &Callback::response_sequenceTest, &Callback::exception)); cb->check(); ss = cb->rss3; +#endif } test(ss.c1); @@ -1725,12 +2133,14 @@ allTests(const Ice::CommunicatorPtr& communicator) { ostringstream s; s << "D1." << i; - D1Ptr d1 = new D1; + D1Ptr d1 = ICE_MAKE_SHARED(D1); d1->sb = s.str(); d1->pb = d1; d1->sd1 = s.str(); bin[i] = d1; +#ifndef ICE_CPP11_MAPPING d1->ice_collectable(true); +#endif } r = test->dictionaryTest(bin, bout); @@ -1758,7 +2168,7 @@ allTests(const Ice::CommunicatorPtr& communicator) s << "D1." << i * 20; test(b->sb == s.str()); test(b->pb == (i == 0 ? BPtr(0) : r.find((i - 1) * 20)->second)); - D1Ptr d1 = D1Ptr::dynamicCast(b); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b); test(d1); test(d1->sd1 == s.str()); test(d1->pd1 == d1); @@ -1783,20 +2193,28 @@ allTests(const Ice::CommunicatorPtr& communicator) { ostringstream s; s << "D1." << i; - D1Ptr d1 = new D1; + D1Ptr d1 = ICE_MAKE_SHARED(D1); d1->sb = s.str(); d1->pb = d1; d1->sd1 = s.str(); bin[i] = d1; +#ifndef ICE_CPP11_MAPPING d1->ice_collectable(true); +#endif } +#ifdef ICE_CPP11_MAPPING + auto result = test->dictionaryTestAsync(bin).get(); + r = result.returnValue; + bout = result.bout; +#else CallbackPtr cb = new Callback; test->begin_dictionaryTest(bin, newCallback_TestIntf_dictionaryTest(cb, &Callback::response_dictionaryTest, &Callback::exception)); cb->check(); bout = cb->obdict; r = cb->rbdict; +#endif test(bout.size() == 10); for(i = 0; i < 10; ++i) @@ -1821,7 +2239,7 @@ allTests(const Ice::CommunicatorPtr& communicator) s << "D1." << i * 20; test(b->sb == s.str()); test(b->pb == (i == 0 ? BPtr(0) : r.find((i - 1) * 20)->second)); - D1Ptr d1 = D1Ptr::dynamicCast(b); + D1Ptr d1 = ICE_DYNAMIC_CAST(D1, b); test(d1); test(d1->sd1 == s.str()); test(d1->pd1 == d1); @@ -1843,7 +2261,7 @@ allTests(const Ice::CommunicatorPtr& communicator) } catch(const BaseException& e) { - test(e.ice_name() == "Test::BaseException"); + test(e.ice_id() == "::Test::BaseException"); test(e.sbe == "sbe"); test(e.pb); test(e.pb->sb == "sb"); @@ -1858,10 +2276,30 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "base exception thrown as base exception (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + try + { + test->throwBaseAsBaseAsync().get(); + test(false); + } + catch(const BaseException& ex) + { + test(ex.ice_id() == "::Test::BaseException"); + test(ex.sbe == "sbe"); + test(ex.pb); + test(ex.pb->sb == "sb"); + test(ex.pb->pb == ex.pb); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_throwBaseAsBase( newCallback_TestIntf_throwBaseAsBase(cb, &Callback::response, &Callback::exception_throwBaseAsBase)); cb->check(); +#endif } cout << "ok" << endl; @@ -1874,7 +2312,7 @@ allTests(const Ice::CommunicatorPtr& communicator) } catch(const DerivedException& e) { - test(e.ice_name() == "Test::DerivedException"); + test(e.ice_id() == "::Test::DerivedException"); test(e.sbe == "sbe"); test(e.pb); test(e.pb->sb == "sb1"); @@ -1895,10 +2333,36 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "derived exception thrown as base exception (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + try + { + test->throwDerivedAsBaseAsync().get(); + test(false); + } + catch(const DerivedException& ex) + { + test(ex.ice_id() == "::Test::DerivedException"); + test(ex.sbe == "sbe"); + test(ex.pb); + test(ex.pb->sb == "sb1"); + test(ex.pb->pb == ex.pb); + test(ex.sde == "sde1"); + test(ex.pd1); + test(ex.pd1->sb == "sb2"); + test(ex.pd1->pb == ex.pd1); + test(ex.pd1->sd1 == "sd2"); + test(ex.pd1->pd1 == ex.pd1); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_throwDerivedAsBase( newCallback_TestIntf_throwDerivedAsBase(cb, &Callback::response, &Callback::exception_throwDerivedAsBase)); cb->check(); +#endif } cout << "ok" << endl; @@ -1911,7 +2375,7 @@ allTests(const Ice::CommunicatorPtr& communicator) } catch(const DerivedException& e) { - test(e.ice_name() == "Test::DerivedException"); + test(e.ice_id() == "::Test::DerivedException"); test(e.sbe == "sbe"); test(e.pb); test(e.pb->sb == "sb1"); @@ -1932,11 +2396,37 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "derived exception thrown as derived exception (AMI)... " << flush; { +#ifdef ICE_CPP11_MAPPING + try + { + test->throwDerivedAsDerivedAsync().get(); + test(false); + } + catch(const DerivedException& e) + { + test(e.ice_id() == "::Test::DerivedException"); + test(e.sbe == "sbe"); + test(e.pb); + test(e.pb->sb == "sb1"); + test(e.pb->pb == e.pb); + test(e.sde == "sde1"); + test(e.pd1); + test(e.pd1->sb == "sb2"); + test(e.pd1->pb == e.pd1); + test(e.pd1->sd1 == "sd2"); + test(e.pd1->pd1 == e.pd1); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_throwDerivedAsDerived( newCallback_TestIntf_throwDerivedAsDerived( cb, &Callback::response, &Callback::exception_throwDerivedAsDerived)); cb->check(); +#endif } cout << "ok" << endl; @@ -1949,7 +2439,7 @@ allTests(const Ice::CommunicatorPtr& communicator) } catch(const BaseException& e) { - test(e.ice_name() == "Test::BaseException"); + test(e.ice_id() == "::Test::BaseException"); test(e.sbe == "sbe"); test(e.pb); test(e.pb->sb == "sb d2"); @@ -1964,35 +2454,31 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "unknown derived exception thrown as base exception (AMI)... " << flush; { - CallbackPtr cb = new Callback; - test->begin_throwUnknownDerivedAsBase( - newCallback_TestIntf_throwUnknownDerivedAsBase( - cb, &Callback::response, &Callback::exception_throwUnknownDerivedAsBase)); - cb->check(); - } - cout << "ok" << endl; - - cout << "forward-declared class... " << flush; - { +#ifdef ICE_CPP11_MAPPING try { - ForwardPtr f; - test->useForward(f); - test(f); + test->throwUnknownDerivedAsBaseAsync().get(); + test(false); + } + catch(const BaseException& e) + { + test(e.ice_id() == "::Test::BaseException"); + test(e.sbe == "sbe"); + test(e.pb); + test(e.pb->sb == "sb d2"); + test(e.pb->pb == e.pb); } catch(...) { test(false); } - } - cout << "ok" << endl; - - cout << "forward-declared class (AMI)... " << flush; - { +#else CallbackPtr cb = new Callback; - test->begin_useForward( - newCallback_TestIntf_useForward(cb, &Callback::response_useForward, &Callback::exception)); + test->begin_throwUnknownDerivedAsBase( + newCallback_TestIntf_throwUnknownDerivedAsBase( + cb, &Callback::response, &Callback::exception_throwUnknownDerivedAsBase)); cb->check(); +#endif } cout << "ok" << endl; @@ -2002,14 +2488,15 @@ allTests(const Ice::CommunicatorPtr& communicator) // // Server knows the most-derived class PDerived. // - PDerivedPtr pd = new PDerived; + PDerivedPtr pd = ICE_MAKE_SHARED(PDerived); pd->pi = 3; pd->ps = "preserved"; pd->pb = pd; +#ifndef ICE_CPP11_MAPPING pd->ice_collectable(true); - +#endif PBasePtr r = test->exchangePBase(pd); - PDerivedPtr p2 = PDerivedPtr::dynamicCast(r); + PDerivedPtr p2 = ICE_DYNAMIC_CAST(PDerived, r); test(p2); test(p2->pi == 3); test(p2->ps == "preserved"); @@ -2024,12 +2511,11 @@ allTests(const Ice::CommunicatorPtr& communicator) // // Server only knows the base (non-preserved) type, so the object is sliced. // - PCUnknownPtr pu = new PCUnknown; + PCUnknownPtr pu = ICE_MAKE_SHARED(PCUnknown); pu->pi = 3; pu->pu = "preserved"; - PBasePtr r = test->exchangePBase(pu); - PCUnknownPtr p2 = PCUnknownPtr::dynamicCast(r); + PCUnknownPtr p2 = ICE_DYNAMIC_CAST(PCUnknown, r); test(!p2); test(r->pi == 3); } @@ -2043,13 +2529,15 @@ allTests(const Ice::CommunicatorPtr& communicator) // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // - PCDerivedPtr pcd = new PCDerived; + PCDerivedPtr pcd = ICE_MAKE_SHARED(PCDerived); pcd->pi = 3; pcd->pbs.push_back(pcd); +#ifndef ICE_CPP11_MAPPING pcd->ice_collectable(true); +#endif PBasePtr r = test->exchangePBase(pcd); - PCDerivedPtr p2 = PCDerivedPtr::dynamicCast(r); + PCDerivedPtr p2 = ICE_DYNAMIC_CAST(PCDerived, r); if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) { test(!p2); @@ -2072,13 +2560,15 @@ allTests(const Ice::CommunicatorPtr& communicator) // Server only knows the intermediate type CompactPDerived. The object will be sliced to // CompactPDerived for the 1.0 encoding; otherwise it should be returned intact. // - CompactPCDerivedPtr pcd = new CompactPCDerived; + CompactPCDerivedPtr pcd = ICE_MAKE_SHARED(CompactPCDerived); pcd->pi = 3; pcd->pbs.push_back(pcd); +#ifndef ICE_CPP11_MAPPING pcd->ice_collectable(true); +#endif PBasePtr r = test->exchangePBase(pcd); - CompactPCDerivedPtr p2 = CompactPCDerivedPtr::dynamicCast(r); + CompactPCDerivedPtr p2 = ICE_DYNAMIC_CAST(CompactPCDerived, r); if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) { test(!p2); @@ -2101,7 +2591,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Send an object that will have multiple preserved slices in the server. // The object will be sliced to Preserved for the 1.0 encoding. // - PCDerived3Ptr pcd = new PCDerived3; + PCDerived3Ptr pcd = ICE_MAKE_SHARED(PCDerived3); pcd->pi = 3; // // Sending more than 254 objects exercises the encoding for object ids. @@ -2109,7 +2599,7 @@ allTests(const Ice::CommunicatorPtr& communicator) int i; for(i = 0; i < 300; ++i) { - PCDerived2Ptr p2 = new PCDerived2; + PCDerived2Ptr p2 = ICE_MAKE_SHARED(PCDerived2); p2->pi = i; p2->pbs.push_back(0); // Nil reference. This slice should not have an indirection table. p2->pcd2 = i; @@ -2119,11 +2609,11 @@ allTests(const Ice::CommunicatorPtr& communicator) pcd->pcd3 = pcd->pbs[10]; PBasePtr r = test->exchangePBase(pcd); - PCDerived3Ptr p3 = PCDerived3Ptr::dynamicCast(r); + PCDerived3Ptr p3 = ICE_DYNAMIC_CAST(PCDerived3, r); if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) { test(!p3); - test(PreservedPtr::dynamicCast(r)); + test(ICE_DYNAMIC_CAST(Preserved, r)); test(r->pi == 3); } else @@ -2132,7 +2622,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(p3->pi == 3); for(i = 0; i < 300; ++i) { - PCDerived2Ptr p2 = PCDerived2Ptr::dynamicCast(p3->pbs[i]); + PCDerived2Ptr p2 = ICE_DYNAMIC_CAST(PCDerived2, p3->pbs[i]); test(p2->pi == i); test(p2->pbs.size() == 1); test(!p2->pbs[0]); @@ -2171,31 +2661,62 @@ allTests(const Ice::CommunicatorPtr& communicator) // // Server knows the most-derived class PDerived. // - PDerivedPtr pd = new PDerived; + PDerivedPtr pd = ICE_MAKE_SHARED(PDerived); pd->pi = 3; pd->ps = "preserved"; pd->ps = "preserved"; pd->pb = pd; + +#ifndef ICE_CPP11_MAPPING pd->ice_collectable(true); - +#endif + +#ifdef ICE_CPP11_MAPPING + try + { + pd = dynamic_pointer_cast<PDerived>(test->exchangePBaseAsync(pd).get()); + test(pd); + test(pd->pi == 3); + test(pd->ps == "preserved"); + test(pd->pb == pd); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_exchangePBase( pd, newCallback_TestIntf_exchangePBase(cb, &Callback::response_preserved1, &Callback::exception)); cb->check(); +#endif } { // // Server only knows the base (non-preserved) type, so the object is sliced. // - PCUnknownPtr pu = new PCUnknown; + PCUnknownPtr pu = ICE_MAKE_SHARED(PCUnknown); pu->pi = 3; pu->pu = "preserved"; - +#ifdef ICE_CPP11_MAPPING + try + { + auto r = test->exchangePBaseAsync(pu).get(); + auto p2 = dynamic_pointer_cast<PCUnknown>(r); + test(!p2); + test(r->pi == 3); + } + catch(...) + { + test(false); + } +#else CallbackPtr cb = new Callback; test->begin_exchangePBase( pu, newCallback_TestIntf_exchangePBase(cb, &Callback::response_preserved2, &Callback::exception)); cb->check(); +#endif } { @@ -2203,9 +2724,26 @@ allTests(const Ice::CommunicatorPtr& communicator) // Server only knows the intermediate type Preserved. The object will be sliced to // Preserved for the 1.0 encoding; otherwise it should be returned intact. // - PCDerivedPtr pcd = new PCDerived; + PCDerivedPtr pcd = ICE_MAKE_SHARED(PCDerived); pcd->pi = 3; pcd->pbs.push_back(pcd); +#ifdef ICE_CPP11_MAPPING + if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) + { + auto r = test->exchangePBaseAsync(pcd).get(); + auto p2 = dynamic_pointer_cast<PCDerived>(r); + test(!p2); + test(r->pi == 3); + } + else + { + auto r = test->exchangePBaseAsync(pcd).get(); + auto p2 = dynamic_pointer_cast<PCDerived>(r); + test(p2); + test(p2->pi == 3); + test(p2->pbs[0] == p2); + } +#else pcd->ice_collectable(true); CallbackPtr cb = new Callback; @@ -2220,6 +2758,7 @@ allTests(const Ice::CommunicatorPtr& communicator) pcd, newCallback_TestIntf_exchangePBase(cb, &Callback::response_preserved4, &Callback::exception)); } cb->check(); +#endif } { @@ -2227,11 +2766,29 @@ allTests(const Ice::CommunicatorPtr& communicator) // Server only knows the intermediate type CompactPDerived. The object will be sliced to // CompactPDerived for the 1.0 encoding; otherwise it should be returned intact. // - CompactPCDerivedPtr pcd = new CompactPCDerived; + CompactPCDerivedPtr pcd = ICE_MAKE_SHARED(CompactPCDerived); pcd->pi = 3; pcd->pbs.push_back(pcd); + +#ifdef ICE_CPP11_MAPPING + if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) + { + auto r = test->exchangePBaseAsync(pcd).get(); + auto p2 = dynamic_pointer_cast<CompactPCDerived>(r); + test(!p2); + test(r->pi == 3); + } + else + { + auto r = test->exchangePBaseAsync(pcd).get(); + auto p2 = dynamic_pointer_cast<CompactPCDerived>(r); + test(p2); + test(p2->pi == 3); + test(p2->pbs[0] == p2); + } +#else pcd->ice_collectable(true); - + CallbackPtr cb = new Callback; if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) { @@ -2242,10 +2799,11 @@ allTests(const Ice::CommunicatorPtr& communicator) else { test->begin_exchangePBase(pcd, newCallback_TestIntf_exchangePBase(cb, - &Callback::response_compactPreserved2, + &Callback::response_compactPreserved2, &Callback::exception)); } cb->check(); +#endif } { @@ -2253,7 +2811,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Send an object that will have multiple preserved slices in the server. // The object will be sliced to Preserved for the 1.0 encoding. // - PCDerived3Ptr pcd = new PCDerived3; + PCDerived3Ptr pcd = ICE_MAKE_SHARED(PCDerived3); pcd->pi = 3; // // Sending more than 254 objects exercises the encoding for object ids. @@ -2261,7 +2819,7 @@ allTests(const Ice::CommunicatorPtr& communicator) int i; for(i = 0; i < 300; ++i) { - PCDerived2Ptr p2 = new PCDerived2; + PCDerived2Ptr p2 = ICE_MAKE_SHARED(PCDerived2); p2->pi = i; p2->pbs.push_back(0); // Nil reference. This slice should not have an indirection table. p2->pcd2 = i; @@ -2270,6 +2828,32 @@ allTests(const Ice::CommunicatorPtr& communicator) pcd->pcd2 = pcd->pi; pcd->pcd3 = pcd->pbs[10]; +#ifdef ICE_CPP11_MAPPING + if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) + { + auto r = test->exchangePBaseAsync(pcd).get(); + auto p2 = dynamic_pointer_cast<PCDerived>(r); + test(!p2); + test(r->pi == 3); + } + else + { + auto r = test->exchangePBaseAsync(pcd).get(); + auto p3 = dynamic_pointer_cast<PCDerived3>(r); + test(p3); + test(p3->pi == 3); + for(int i = 0; i < 300; ++i) + { + auto p2 = dynamic_pointer_cast<PCDerived2>(p3->pbs[i]); + test(p2->pi == i); + test(p2->pbs.size() == 1); + test(!p2->pbs[0]); + test(p2->pcd2 == i); + } + test(p3->pcd2 == p3->pi); + test(p3->pcd3 == p3->pbs[10]); + } +#else CallbackPtr cb = new Callback; if(test->ice_getEncodingVersion() == Ice::Encoding_1_0) { @@ -2282,9 +2866,11 @@ allTests(const Ice::CommunicatorPtr& communicator) pcd, newCallback_TestIntf_exchangePBase(cb, &Callback::response_preserved5, &Callback::exception)); } cb->check(); +#endif } cout << "ok" << endl; +#ifndef ICE_CPP11_MAPPING cout << "garbage collection for preserved classes... " << flush; try { @@ -2292,7 +2878,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Register a factory in order to substitute our own subclass of PNode. This provides // an easy way to determine how many unmarshaled instances currently exist. // - communicator->addObjectFactory(new NodeFactoryI, PNode::ice_staticId()); + communicator->getValueFactoryManager()->add(new NodeFactoryI, PNode::ice_staticId()); // // Relay a graph through the server. This test uses a preserved class @@ -2338,7 +2924,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Register a factory in order to substitute our own subclass of Preserved. This provides // an easy way to determine how many unmarshaled instances currently exist. // - communicator->addObjectFactory(new PreservedFactoryI, Preserved::ice_staticId()); + communicator->getValueFactoryManager()->add(new PreservedFactoryI, Preserved::ice_staticId()); // // Obtain a preserved object from the server where the most-derived @@ -2400,6 +2986,6 @@ allTests(const Ice::CommunicatorPtr& communicator) { } cout << "ok" << endl; - +#endif return test; } |