📄 alltests.cpp
字号:
d3->pb = d3; d3->sd3 = "D3.sd3"; d3->pd3 = d11; D1Ptr d12 = new D1; d12->sb = "D1.sb(2)"; d12->pb = d12; d12->sd1 = "D1.sd1(2)"; d12->pd1 = d11; AMI_Test_returnTest3IPtr cb = new AMI_Test_returnTest3I; test->returnTest3_async(cb, d3, d12); test(cb->check()); BPtr r = cb->r; test(r); test(r->ice_id() == "::Test::B"); test(r->sb == "D3.sb"); test(r->pb == r); } catch(...) { test(0); } } cout << "ok" << endl; cout << "sequence slicing... " << flush; { try { SS ss; { BPtr ss1b = new B; ss1b->sb = "B.sb"; ss1b->pb = ss1b; D1Ptr ss1d1 = new D1; ss1d1->sb = "D1.sb"; ss1d1->sd1 = "D1.sd1"; ss1d1->pb = ss1b; D3Ptr ss1d3 = new D3; ss1d3->sb = "D3.sb"; ss1d3->sd3 = "D3.sd3"; ss1d3->pb = ss1b; BPtr ss2b = new B; ss2b->sb = "B.sb"; ss2b->pb = ss1b; D1Ptr ss2d1 = new D1; ss2d1->sb = "D1.sb"; ss2d1->sd1 = "D1.sd1"; ss2d1->pb = ss2b; D3Ptr ss2d3 = new D3; ss2d3->sb = "D3.sb"; ss2d3->sd3 = "D3.sd3"; ss2d3->pb = ss2b; ss1d1->pd1 = ss2b; ss1d3->pd3 = ss2d1; ss2d1->pd1 = ss1d3; ss2d3->pd3 = ss1d1; SS1Ptr ss1 = new SS1; ss1->s.push_back(ss1b); ss1->s.push_back(ss1d1); ss1->s.push_back(ss1d3); SS2Ptr ss2 = new SS2; ss2->s.push_back(ss2b); ss2->s.push_back(ss2d1); ss2->s.push_back(ss2d3); ss = test->sequenceTest(ss1, ss2); } test(ss.c1); BPtr ss1b = ss.c1->s[0]; BPtr ss1d1 = ss.c1->s[1]; test(ss.c2); BPtr ss1d3 = ss.c1->s[2]; test(ss.c2); BPtr ss2b = ss.c2->s[0]; BPtr ss2d1 = ss.c2->s[1]; BPtr ss2d3 = ss.c2->s[2]; test(ss1b->pb == ss1b); test(ss1d1->pb == ss1b); test(ss1d3->pb == ss1b); test(ss2b->pb == ss1b); test(ss2d1->pb == ss2b); test(ss2d3->pb == ss2b); test(ss1b->ice_id() == "::Test::B"); test(ss1d1->ice_id() == "::Test::D1"); test(ss1d3->ice_id() == "::Test::B"); test(ss2b->ice_id() == "::Test::B"); test(ss2d1->ice_id() == "::Test::D1"); test(ss2d3->ice_id() == "::Test::B"); } catch(const ::Ice::Exception&) { test(0); } } cout << "ok" << endl; cout << "sequence slicing (AMI)... " << flush; { try { SS ss; { BPtr ss1b = new B; ss1b->sb = "B.sb"; ss1b->pb = ss1b; D1Ptr ss1d1 = new D1; ss1d1->sb = "D1.sb"; ss1d1->sd1 = "D1.sd1"; ss1d1->pb = ss1b; D3Ptr ss1d3 = new D3; ss1d3->sb = "D3.sb"; ss1d3->sd3 = "D3.sd3"; ss1d3->pb = ss1b; BPtr ss2b = new B; ss2b->sb = "B.sb"; ss2b->pb = ss1b; D1Ptr ss2d1 = new D1; ss2d1->sb = "D1.sb"; ss2d1->sd1 = "D1.sd1"; ss2d1->pb = ss2b; D3Ptr ss2d3 = new D3; ss2d3->sb = "D3.sb"; ss2d3->sd3 = "D3.sd3"; ss2d3->pb = ss2b; ss1d1->pd1 = ss2b; ss1d3->pd3 = ss2d1; ss2d1->pd1 = ss1d3; ss2d3->pd3 = ss1d1; SS1Ptr ss1 = new SS1; ss1->s.push_back(ss1b); ss1->s.push_back(ss1d1); ss1->s.push_back(ss1d3); SS2Ptr ss2 = new SS2; ss2->s.push_back(ss2b); ss2->s.push_back(ss2d1); ss2->s.push_back(ss2d3); AMI_Test_sequenceTestIPtr cb = new AMI_Test_sequenceTestI; test->sequenceTest_async(cb, ss1, ss2); test(cb->check()); ss = cb->r; } test(ss.c1); BPtr ss1b = ss.c1->s[0]; BPtr ss1d1 = ss.c1->s[1]; test(ss.c2); BPtr ss1d3 = ss.c1->s[2]; test(ss.c2); BPtr ss2b = ss.c2->s[0]; BPtr ss2d1 = ss.c2->s[1]; BPtr ss2d3 = ss.c2->s[2]; test(ss1b->pb == ss1b); test(ss1d1->pb == ss1b); test(ss1d3->pb == ss1b); test(ss2b->pb == ss1b); test(ss2d1->pb == ss2b); test(ss2d3->pb == ss2b); test(ss1b->ice_id() == "::Test::B"); test(ss1d1->ice_id() == "::Test::D1"); test(ss1d3->ice_id() == "::Test::B"); test(ss2b->ice_id() == "::Test::B"); test(ss2d1->ice_id() == "::Test::D1"); test(ss2d3->ice_id() == "::Test::B"); } catch(const ::Ice::Exception&) { test(0); } } cout << "ok" << endl; cout << "dictionary slicing... " << flush; { try { BDict bin; BDict bout; BDict r; int i; for(i = 0; i < 10; ++i) { ostringstream s; s << "D1." << i; D1Ptr d1 = new D1; d1->sb = s.str(); d1->pb = d1; d1->sd1 = s.str(); bin[i] = d1; } r = test->dictionaryTest(bin, bout); test(bout.size() == 10); for(i = 0; i < 10; ++i) { BPtr b = bout.find(i * 10)->second; test(b); std::ostringstream s; s << "D1." << i; test(b->sb == s.str()); test(b->pb); test(b->pb != b); test(b->pb->sb == s.str()); test(b->pb->pb == b->pb); } test(r.size() == 10); for(i = 0; i < 10; ++i) { BPtr b = r.find(i * 20)->second; test(b); std::ostringstream s; 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); test(d1); test(d1->sd1 == s.str()); test(d1->pd1 == d1); } } catch(const ::Ice::Exception&) { test(0); } } cout << "ok" << endl; cout << "dictionary slicing (AMI)... " << flush; { try { BDict bin; BDict bout; BDict r; int i; for(i = 0; i < 10; ++i) { ostringstream s; s << "D1." << i; D1Ptr d1 = new D1; d1->sb = s.str(); d1->pb = d1; d1->sd1 = s.str(); bin[i] = d1; } AMI_Test_dictionaryTestIPtr cb = new AMI_Test_dictionaryTestI; test->dictionaryTest_async(cb, bin); test(cb->check()); bout = cb->bout; r = cb->r; test(bout.size() == 10); for(i = 0; i < 10; ++i) { BPtr b = bout.find(i * 10)->second; test(b); std::ostringstream s; s << "D1." << i; test(b->sb == s.str()); test(b->pb); test(b->pb != b); test(b->pb->sb == s.str()); test(b->pb->pb == b->pb); } test(r.size() == 10); for(i = 0; i < 10; ++i) { BPtr b = r.find(i * 20)->second; test(b); std::ostringstream s; 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); test(d1); test(d1->sd1 == s.str()); test(d1->pd1 == d1); } } catch(const ::Ice::Exception&) { test(0); } } cout << "ok" << endl; cout << "base exception thrown as base exception... " << flush; { try { test->throwBaseAsBase(); test(0); } catch(const BaseException& e) { test(e.ice_name() == "Test::BaseException"); test(e.sbe == "sbe"); test(e.pb); test(e.pb->sb == "sb"); test(e.pb->pb == e.pb); } catch(...) { test(0); } } cout << "ok" << endl; cout << "base exception thrown as base exception (AMI)... " << flush; { AMI_Test_throwBaseAsBaseIPtr cb = new AMI_Test_throwBaseAsBaseI; test->throwBaseAsBase_async(cb); test(cb->check()); } cout << "ok" << endl; cout << "derived exception thrown as base exception... " << flush; { try { test->throwDerivedAsBase(); test(0); } catch(const DerivedException& e) { test(e.ice_name() == "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(0); } } cout << "ok" << endl; cout << "derived exception thrown as base exception (AMI)... " << flush; { AMI_Test_throwDerivedAsBaseIPtr cb = new AMI_Test_throwDerivedAsBaseI; test->throwDerivedAsBase_async(cb); test(cb->check()); } cout << "ok" << endl; cout << "derived exception thrown as derived exception... " << flush; { try { test->throwDerivedAsDerived(); test(0); } catch(const DerivedException& e) { test(e.ice_name() == "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(0); } } cout << "ok" << endl; cout << "derived exception thrown as derived exception (AMI)... " << flush; { AMI_Test_throwDerivedAsDerivedIPtr cb = new AMI_Test_throwDerivedAsDerivedI; test->throwDerivedAsDerived_async(cb); test(cb->check()); } cout << "ok" << endl; cout << "unknown derived exception thrown as base exception... " << flush; { try { test->throwUnknownDerivedAsBase(); test(0); } catch(const BaseException& e) { test(e.ice_name() == "Test::BaseException"); test(e.sbe == "sbe"); test(e.pb); test(e.pb->sb == "sb d2"); test(e.pb->pb == e.pb); } catch(...) { test(0); } } cout << "ok" << endl; cout << "unknown derived exception thrown as base exception (AMI)... " << flush; { AMI_Test_throwUnknownDerivedAsBaseIPtr cb = new AMI_Test_throwUnknownDerivedAsBaseI; test->throwUnknownDerivedAsBase_async(cb); test(cb->check()); } cout << "ok" << endl; cout << "forward-declared class... " << flush; { try { ForwardPtr f; test->useForward(f); test(f); } catch(...) { test(0); } } cout << "ok" << endl; cout << "forward-declared class (AMI)... " << flush; { AMI_Test_useForwardIPtr cb = new AMI_Test_useForwardI; test->useForward_async(cb); test(cb->check()); } cout << "ok" << endl; return test;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -