📄 component.cpp
字号:
TestComponent test2;
bool result = false;
Exception::setThrowControl(true);
test.activation = test2.activation = true;
test.throw_body = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try {
Singleton<ComponentInfo>::getInstance()->activateComponent();
}
catch(...) {
result = true;
}
if(!result)
TEST_FAIL;
if(Singleton<ComponentInfo>::getInstance()->activatedComponentList.size() != 1)
TEST_FAIL;
if(*Singleton<ComponentInfo>::getInstance()->activatedComponentList.begin() != &test)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("8","椺奜傪婲偙偟偨傜丄偦傟傑偱偵婲摦偟偨僐儞億乕僱儞僩偑activatedComponentList偵巆傞(2屄栚)") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
list<Component *>::iterator scope;
bool result = false;
Exception::setThrowControl(true);
test.activation = test2.activation = true;
test2.throw_body = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try {
Singleton<ComponentInfo>::getInstance()->activateComponent();
}
catch(...) {
result = true;
}
if(!result)
TEST_FAIL;
if(Singleton<ComponentInfo>::getInstance()->activatedComponentList.size() != 2)
TEST_FAIL;
scope = Singleton<ComponentInfo>::getInstance()->activatedComponentList.begin();
if(*scope != &test)
TEST_FAIL;
++ scope;
if(*scope != &test2)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("onFatalExit","onFatalExit") {
BEGIN_CASE("1","OnFatalExit傪偡傞偲婲摦梫媮儕僗僩偵偁傞僐儞億乕僱儞僩偑屇偽傟傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
test.activation = test2.activation = true;
test2.throw_body = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try{ Singleton<ComponentInfo>::getInstance()->activateComponent(); } catch(...) {}
Singleton<ComponentInfo>::getInstance()->onFatalExit();
if(!test.check_onFatalExit || !test2.check_onFatalExit)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","婲摦梫媮傪弌偝側偄僐儞億乕僱儞僩偼婲摦偝傟側偄") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
test.activation = false;
test2.activation = true;
test2.throw_body = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try{ Singleton<ComponentInfo>::getInstance()->activateComponent(); } catch(...) {}
Singleton<ComponentInfo>::getInstance()->onFatalExit();
if(test.check_onFatalExit || !test2.check_onFatalExit)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4","婲摦弴彉偑惓偟偄 (摨堦儗儀儖側傜搊榐弴)") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
counter = 0;
test2.throw_body = true;
test.activation = test2.activation = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try{ Singleton<ComponentInfo>::getInstance()->activateComponent(); } catch(...) {}
Singleton<ComponentInfo>::getInstance()->onFatalExit();
if(test.actcnt != 5 || test2.actcnt != 6 )
TEST_FAIL;
} END_CASE;
BEGIN_CASE("5","婲摦弴彉偑惓偟偄 (桪愭搙弴)") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test(10);
TestComponent test2(4);
counter = 0;
test.activation = test2.activation = true;
test.throw_body = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try{ Singleton<ComponentInfo>::getInstance()->activateComponent(); } catch(...) {}
Singleton<ComponentInfo>::getInstance()->onFatalExit();
if(test.actcnt != 6 || test2.actcnt != 5 )
TEST_FAIL;
} END_CASE;
BEGIN_CASE("6","椺奜偼敳偗偰偔傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
list<Component *>::iterator scope;
bool result = false;
Exception::setThrowControl(true);
test.activation = test2.activation = true;
test2.throw_body = true;
test.throw_onFatalExit = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try{ Singleton<ComponentInfo>::getInstance()->activateComponent(); } catch(...) {}
try {
Singleton<ComponentInfo>::getInstance()->onFatalExit();
}
catch(...) {
result = true;
}
if(!result)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("7","椺奜偑婲偒偨偲偒丄傑偩幚峴偝傟偰偄側偄僐儞億乕僱儞僩偺僴儞僪儔婲摦梫媮偼巆傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
list<Component *>::iterator scope;
bool result = false;
Exception::setThrowControl(true);
test.activation = test2.activation = true;
test2.throw_body = true;
test.throw_onFatalExit = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
try{ Singleton<ComponentInfo>::getInstance()->activateComponent(); } catch(...) {}
try{
Singleton<ComponentInfo>::getInstance()->onFatalExit();
}
catch(...) {
result = true;
}
if(!result)
TEST_FAIL;
if(Singleton<ComponentInfo>::getInstance()->activatedComponentList.size() != 1)
TEST_FAIL;
if(*Singleton<ComponentInfo>::getInstance()->activatedComponentList.begin() != &test2)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("8","NULL僆僽僕僃僋僩偐傜敪峴偟偰傕戝忎晇") {
((ComponentInfo *)0)->onFatalExit();
} END_CASE;
} END_CASE;
BEGIN_CASE("isActive","isActive") {
BEGIN_CASE("1","婲摦偟偨僐儞億乕僱儞僩傪敾掕偱偒傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
Singleton<ComponentInfo>::getInstance()->activateComponent(&test);
if(!Singleton<ComponentInfo>::getInstance()->isActive<TestComponent>())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","婲摦偟偰偄側偄僐儞億乕僱儞僩偵偼斀墳偟側偄") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
if(Singleton<ComponentInfo>::getInstance()->isActive<TestComponent>())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","攈惗偟偨僐儞億乕僱儞僩偺僀儞僗僞儞僗偵偼斀墳偡傞") {
Singleton<ComponentInfo>::renewInstance();
DerivedTestComponent test;
Singleton<ComponentInfo>::getInstance()->activateComponent(&test);
if(!Singleton<ComponentInfo>::getInstance()->isActive<TestComponent>())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4","暋悢婲摦偟偰偄偰傕梫媮偵崌偭偨傕偺傪扵偣傞") { //isActive偺if(dynamic_cast<T *>(iterator->instance) != 0)偺else愡傪幚峴偝偣傞偺偑栚揑
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
Singleton<ComponentInfo>::getInstance()->activateComponent(&test);
DerivedTestComponent test2;
Singleton<ComponentInfo>::getInstance()->activateComponent(&test2);
if(!Singleton<ComponentInfo>::getInstance()->isActive<DerivedTestComponent>())
TEST_FAIL;
} END_CASE;
} END_CASE;
Singleton<ComponentInfo>::restoreContext(context);
}
//--------
TESTSUITE(main,Component)
{
SingletonBase::ContextChain chain;
chain.saveContext<ComponentInfo>();
chain.saveContext<OptionParameter>();
chain.saveContext<VerboseMessage::VerboseControl>();
chain.saveContext<Message::MessageControl>();
chain.saveContext<DebugMessage::DebugControl>();
BEGIN_CASE("executeComponent","executeComponent") {
BEGIN_CASE("1","摿偵壗傕側偗偽parseOption/body偑幚峴偝傟傞") {
chain.renewInstance();
bool result = true;
TestComponent test;
test.activation = true;
Exception::setThrowControl(true);
try { executeComponents(getOptionParameter()); }
catch(...) { result = false; }
BEGIN_CASE("1","椺奜偼婲偙傜側偄") {
if(!result)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","parseOption/body偼幚峴偝傟傞") {
if(!test.check_parseOption || !test.check_body || test.check_onFatalExit)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("2","張棟偟偰側偄僆僾僔儑儞偑偁傞") {
TestSuite::clearCheckpoints();
chain.renewInstance();
char * argv[] = { "test.exe", "-test" };
bool result = false;
TestComponent test;
test.activation = true;
getOptionParameter().parseOption(2, argv);
Exception::setThrowControl(true);
try { executeComponents(getOptionParameter()); }
catch(...) { result = true; }
BEGIN_CASE("1","椺奜偑婲偙傞") {
if(!result)
TEST_FAIL;
if(!TestSuite::isReached("Exception_UnknownOption"))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","parseOption/onFatalExit偼幚峴偝傟傞偑body偼幚峴偝傟側偄") {
if(!test.check_parseOption || test.check_body || !test.check_onFatalExit)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("3","僆僾僔儑儞僷乕僗拞偵椺奜 (activate側偟)") {
chain.renewInstance();
bool result = false;
TestComponent test;
test.throw_parseOption = true;
Exception::setThrowControl(true);
try { executeComponents(getOptionParameter()); }
catch(...) { result = true; }
BEGIN_CASE("1","椺奜偑婲偙傞") {
if(!result)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","parseOption偼幚峴偝傟傞偑body/onFatalExit偼幚峴偝傟側偄") {
if(!test.check_parseOption || test.check_body || test.check_onFatalExit)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("4","僆僾僔儑儞僷乕僗拞偵椺奜 (activate偁傝)") {
chain.renewInstance();
bool result = false;
TestComponent test;
test.throw_parseOption = true;
test.activation = true;
Exception::setThrowControl(true);
try { executeComponents(getOptionParameter()); }
catch(...) { result = true; }
BEGIN_CASE("1","椺奜偑婲偙傞") {
if(!result)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","parseOption/onFatalExit偼幚峴偝傟傞偑body偼幚峴偝傟側偄") {
if(!test.check_parseOption || test.check_body || !test.check_onFatalExit)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("5","body偱椺奜") {
chain.renewInstance();
bool result = false;
TestComponent test;
test.throw_body = true;
test.activation = true;
Exception::setThrowControl(true);
try { executeComponents(getOptionParameter()); }
catch(...) { result = true; }
BEGIN_CASE("1","椺奜偑婲偙傞") {
if(!result)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","parseOption/body/onFatalExit偲傕幚峴偝傟傞") {
if(!test.check_parseOption || !test.check_body || !test.check_onFatalExit)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("6","onFatalExit偱椺奜") {
TestSuite::clearCheckpoints();
chain.renewInstance();
bool result = false;
TestComponent test;
test.throw_onFatalExit = true;
test.activation = true;
TestComponent test2;
test2.throw_body = true;
test2.activation = true;
Exception::setThrowControl(true);
try { executeComponents(getOptionParameter()); }
catch(...) { result = true; }
BEGIN_CASE("1","椺奜偑婲偙傞") {
if(!result)
TEST_FAIL;
if(!TestSuite::isReached("Exception_onFatalExit"))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","嵟弶偺僐儞億乕僱儞僩偼parseOption/body/onFatalExit偲傕幚峴偝傟傞") {
if(!test.check_parseOption || !test.check_body || !test.check_onFatalExit)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","師偺僐儞億乕僱儞僩傕parseOption/body/onFatalExit偲傕幚峴偝傟傞") {
if(!test2.check_parseOption || !test2.check_body || !test2.check_onFatalExit)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -