⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alltests.cpp

📁 ICE-3.2 一个开源的中间件
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            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 + -