📄 collection.cpp
字号:
if(!result)
TEST_FAIL;
} END_CASE;
#endif
} END_CASE;
BEGIN_CASE("destructor","destructor") {
BEGIN_CASE("1","幚懱傪搊榐偟偰攋婞") {
Collection * col = new Collection;
TestCollectable2 test2;
TestSuite::clearCheckpoints();
col->addInstance(test2);
delete col;
TEST_CASE("1","test2偼攋婞偝傟側偄", !TestSuite::isReached("TestCollectable2::~TestCollectable2"));
} END_CASE;
BEGIN_CASE("2","億僀儞僞傪搊榐偟偰clear") {
Collection * col = new Collection;
TestCollectable2 * test2 = new TestCollectable2;
TestSuite::clearCheckpoints();
col->addInstance(test2);
delete col;
TEST_CASE("1","test2偼攋婞偝傟傞", TestSuite::isReached("TestCollectable2::~TestCollectable2"));
} END_CASE;
#ifdef _MSC_VER
BEGIN_CASE("3","椺奜偑弌傞傛偆側僨僗僩儔僋僞傪帩偮僀儞僗僞儞僗傪攋婞偟偰傕椺奜偑楻傟側偄") {
Collection * col = new Collection;
TestCollectable3 * test2 = new TestCollectable3;
bool result = true;
TestSuite::clearCheckpoints();
col->addInstance(test2);
try {
delete col;
}
catch(...) {
result = false;
}
if(!result)
TEST_FAIL;
} END_CASE;
#endif
} END_CASE;
BEGIN_CASE("deleteInstance","deleteInstance") {
BEGIN_CASE("1","僀儞僗僞儞僗傪嶍彍偱偒傞") {
Collection col;
TestCollectable2 * test = new TestCollectable2;
TestSuite::clearCheckpoints();
col.addInstance(test);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance<TestCollectable2>() != 0);
col.deleteInstance<TestCollectable2>();
TEST_CASE("1","僀儞僗僞儞僗偑徚偊偰偄傞", col.getInstance<TestCollectable2>() == 0);
TEST_CASE("2","僨僗僩儔僋僞偑幚峴偝傟偰偄傞", TestSuite::isReached("TestCollectable2::~TestCollectable2"));
}END_CASE;
BEGIN_CASE("2","娭學側偄僋儔僗傪巜掕偟偨傜嶍彍偝傟側偄") {
Collection col;
TestCollectable2 * test = new TestCollectable2;
TestSuite::clearCheckpoints();
col.addInstance(test);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance<TestCollectable2>() != 0);
col.deleteInstance<TestCollectable>();
TEST_CASE("1","僀儞僗僞儞僗偑徚偊偰偄側偄", col.getInstance<TestCollectable2>() != 0);
TEST_CASE("2","僨僗僩儔僋僞偑幚峴偝傟偰偄側偄", !TestSuite::isReached("TestCollectable2::~TestCollectable2"));
delete test;
}END_CASE;
BEGIN_CASE("3","摨偠僋儔僗偩偗偱側偔攈惗愭傕徚偊傞") {
Collection col;
TestCollectable2 * test = new TestCollectable2;
TestCollectable4 * test2 = new TestCollectable4;
TestSuite::clearCheckpoints();
col.addInstance(test);
col.addInstance(test2);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance(typeid(TestCollectable2)) != 0);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance(typeid(TestCollectable4)) != 0);
col.deleteInstance<TestCollectable2>();
TEST_CASE("1","僀儞僗僞儞僗偑偡傋偰徚偊偰偄傞", col.getInstance<TestCollectable2>() == 0);
TEST_CASE("2","TestCollectable2偺僨僗僩儔僋僞偑幚峴偝傟偰偄傞", TestSuite::isReached("TestCollectable2::~TestCollectable2"));
TEST_CASE("3","TestCollectable4偺僨僗僩儔僋僞偑幚峴偝傟偰偄傞", TestSuite::isReached("TestCollectable4::~TestCollectable4"));
}END_CASE;
BEGIN_CASE("4","幚懱偼攋婞懳徾偵側傜側偄") {
Collection col;
TestCollectable2 test;
TestSuite::clearCheckpoints();
col.addInstance(test);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance<TestCollectable2>() != 0);
col.deleteInstance<TestCollectable2>();
TEST_CASE("1","僀儞僗僞儞僗偑徚偊偰偄傞", col.getInstance<TestCollectable2>() == 0);
TEST_CASE("2","僨僗僩儔僋僞偑幚峴偝傟偰偄側偄", !TestSuite::isReached("TestCollectable2::~TestCollectable2"));
}END_CASE;
BEGIN_CASE("5","NULL僆僽僕僃僋僩偵懳偟偰敪峴偟偰傕朶憱偟側偄") {
((Collection *)0)->deleteInstance<TestCollectable>();
} END_CASE;
} END_CASE;
BEGIN_CASE("replaceInstance","replaceInstance") {
BEGIN_CASE("1","搊榐嵪傒偺僀儞僗僞儞僗傪擖傟懼偊傞") {
Collection col;
TestCollectable2 test;
TestCollectable2 test2;
TestSuite::clearCheckpoints();
col.addInstance(test);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance(typeid(TestCollectable2)) != 0);
TEST_CASE("1", "娭悢偼惉岟偡傞", col.replaceInstance<TestCollectable2>(test2));
TEST_CASE("2", "僀儞僗僞儞僗偼擖傟懼傢偭偰偄傞", col.getInstance(typeid(TestCollectable2)) == &test2);
TEST_CASE("3", "test2埲奜偵僀儞僗僞儞僗偼側偄", col.getInstance(typeid(TestCollectable2), &test2) == 0);
TEST_CASE("4", "僨僗僩儔僋僞偼幚峴偝傟偰側偄", !TestSuite::isReached("TestCollectable2::~TestCollectable2"));
} END_CASE;
BEGIN_CASE("2","搊榐嵪傒偺僀儞僗僞儞僗傪攈惗僋儔僗偺僀儞僗僞儞僗偱擖傟懼偊傞") {
Collection col;
TestCollectable2 test;
TestCollectable4 test2;
TestSuite::clearCheckpoints();
col.addInstance(test);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance(typeid(TestCollectable2)) != 0);
TEST_CASE("1", "娭悢偼惉岟偡傞", col.replaceInstance<TestCollectable2>(test2));
TEST_CASE("2", "僀儞僗僞儞僗偼擖傟懼傢偭偰偄傞", col.getInstance<TestCollectable2>() == &test2);
TEST_CASE("3", "test2埲奜偵僀儞僗僞儞僗偼側偄", col.getInstance(typeid(TestCollectable2)) == 0);
TEST_CASE("4", "僨僗僩儔僋僞偼幚峴偝傟偰側偄", !TestSuite::isReached("TestCollectable2::~TestCollectable2"));
} END_CASE;
BEGIN_CASE("3","柍娭學側僋儔僗傪巜掕偟偰擖傟懼偊傞") {
Collection col;
TestCollectable2 test;
TestCollectable4 test2;
TestSuite::clearCheckpoints();
col.addInstance(test);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance(typeid(TestCollectable2)) != 0);
TEST_CASE("1", "娭悢偼幐攕偡傞", !col.replaceInstance<TestCollectable>(test2));
TEST_CASE("2", "僀儞僗僞儞僗偼巆偭偰偄傞", col.getInstance<TestCollectable2>() == &test);
} END_CASE;
BEGIN_CASE("4","搊榐嵪傒偺僀儞僗僞儞僗傪擖傟懼偊傞 (摦揑妋曐)") {
Collection col;
TestCollectable2 * test = new TestCollectable2;
TestCollectable2 test2;
TestSuite::clearCheckpoints();
col.addInstance(test);
TEST_CASE("0","[慜採] 偪傖傫偲搊榐偝傟偰偄傞", col.getInstance(typeid(TestCollectable2)) != 0);
TEST_CASE("1", "娭悢偼惉岟偡傞", col.replaceInstance<TestCollectable2>(test2));
TEST_CASE("2", "僀儞僗僞儞僗偼擖傟懼傢偭偰偄傞", col.getInstance(typeid(TestCollectable2)) == &test2);
TEST_CASE("3", "test2埲奜偵僀儞僗僞儞僗偼側偄", col.getInstance(typeid(TestCollectable2), &test2) == 0);
TEST_CASE("4", "僨僗僩儔僋僞偼幚峴偝傟偰傞", TestSuite::isReached("TestCollectable2::~TestCollectable2"));
} END_CASE;
} END_CASE;
}
class TestRuntimeObject : public RuntimeObject
{
public:
TestRuntimeObject(void) { CHECKPOINT("TestRuntimeObject::TestRuntimeObject"); }
~TestRuntimeObject(void) { CHECKPOINT("TestRuntimeObject::~TestRuntimeObject"); }
};
class TestRuntimeObject2 : public RuntimeObject
{
public:
TestRuntimeObject2(void) : RuntimeObject(true) { CHECKPOINT("TestRuntimeObject2::TestRuntimeObject2"); }
~TestRuntimeObject2(void) { CHECKPOINT("TestRuntimeObject2::~TestRuntimeObject2"); }
};
TESTSUITE(main, RuntimeObjectTable)
{
Singleton<RuntimeObjectTable>::Context context;
Singleton<RuntimeObjectTable>::saveContext(context);
BEGIN_CASE("getInstance","getInstance") {
BEGIN_CASE("1","getInstance偼惓偟偔婡擻偡傞") {
Singleton<RuntimeObjectTable>::renewInstance();
TestCollectable test;
Singleton<RuntimeObjectTable>::getInstance()->addInstance(test);
BEGIN_CASE("1","getInstance(typeid)") {
if(RuntimeObjectTable::getInstance(typeid(TestCollectable)) != &test)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","getInstance<T>()") {
if(RuntimeObjectTable::getInstance<TestCollectable>() != &test)
TEST_FAIL;
} END_CASE;
} END_CASE;
} END_CASE;
BEGIN_CASE("RuntimeObject","RuntimeObject") {
BEGIN_CASE("1","惗惉偡傞偲搊榐偝傟丄攋婞偱徚柵偡傞") {
TestRuntimeObject * ro;
TestSuite::clearCheckpoints();
TEST_CASE("0","[慜採] 搊榐偝傟偰偄側偄", RuntimeObjectTable::getInstance<TestRuntimeObject>() == 0);
ro = new TestRuntimeObject;
TEST_CASE("1","僐儞僗僩儔僋僞偑幚峴偝傟偰偄傞", TestSuite::isReached("TestRuntimeObject::TestRuntimeObject"));
TEST_CASE("2","搊榐偝傟偰偄傞", RuntimeObjectTable::getInstance<TestRuntimeObject>() == ro);
delete ro;
TEST_CASE("3","僨僗僩儔僋僞偑幚峴偝傟偰偄傞", TestSuite::isReached("TestRuntimeObject::~TestRuntimeObject"));
TEST_CASE("4","搊榐偑夝彍偝傟偰偄傞", RuntimeObjectTable::getInstance<TestRuntimeObject>() == 0);
} END_CASE;
BEGIN_CASE("2","帺摦攋婞偺僠僃僢僋") {
TestRuntimeObject * ro;
TestRuntimeObject2 * ro2;
TestSuite::clearCheckpoints();
TEST_CASE("0","[慜採] 搊榐偝傟偰偄側偄", RuntimeObjectTable::getInstance<TestRuntimeObject>() == 0);
TEST_CASE("0","[慜採] 搊榐偝傟偰偄側偄", RuntimeObjectTable::getInstance<TestRuntimeObject2>() == 0);
ro = new TestRuntimeObject;
ro2 = new TestRuntimeObject2;
TEST_CASE("1","僐儞僗僩儔僋僞偑幚峴偝傟偰偄傞(ro)", TestSuite::isReached("TestRuntimeObject::TestRuntimeObject"));
TEST_CASE("2","僐儞僗僩儔僋僞偑幚峴偝傟偰偄傞(ro2)", TestSuite::isReached("TestRuntimeObject2::TestRuntimeObject2"));
TEST_CASE("3","搊榐偝傟偰偄傞(ro)", RuntimeObjectTable::getInstance<TestRuntimeObject>() == ro);
TEST_CASE("4","搊榐偝傟偰偄傞(ro2)", RuntimeObjectTable::getInstance<TestRuntimeObject2>() == ro2);
Singleton<RuntimeObjectTable>::getInstance()->clear();
TEST_CASE("5","僨僗僩儔僋僞偼幚峴偝傟偰偄側偄 (ro)", !TestSuite::isReached("TestRuntimeObject::~TestRuntimeObject"));
TEST_CASE("6","僨僗僩儔僋僞偼幚峴偝傟偰偄傞 (ro2)", TestSuite::isReached("TestRuntimeObject2::~TestRuntimeObject2"));
TEST_CASE("7","搊榐偑夝彍偝傟偰偄傞", RuntimeObjectTable::getInstance<TestRuntimeObject>() == 0);
TEST_CASE("8","搊榐偑夝彍偝傟偰偄傞", RuntimeObjectTable::getInstance<TestRuntimeObject2>() == 0);
delete ro;
} END_CASE;
} END_CASE;
Singleton<RuntimeObjectTable>::restoreContext(context);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -