📄 component.cpp
字号:
void body(void) throw(Exception)
{
actcnt = ++counter;
check_body = true;
if(throw_body)
ExceptionMessage("exception","exception").throwException();
}
void onFatalExit(void) throw(Exception)
{
actcnt = ++counter;
check_onFatalExit = true;
if(throw_onFatalExit)
ExceptionMessage("exception","exception").throwException();
}
};
class DerivedTestComponent : public TestComponent
{};
}
TESTSUITE_(main,ComponentInfo,Component)
{
Singleton<ComponentInfo>::Context context;
Singleton<ComponentInfo>::saveContext(context);
Singleton<ComponentInfo>::renewInstance();
BEGIN_CASE("addComponent","addComponent") {
BEGIN_CASE("1","惓偟偔捛壛偱偒傞") {
ComponentInfo info;
BEGIN_CASE("1","娭悢偼惉岟偡傞") {
if(!info.addComponent((Component *)0x1234, 10))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","捛壛偝傟偰偄傞") {
if(info.componentList.size() != 1)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3", "撪梕偑惓偟偄") {
if(info.componentList.begin()->first != 10 || info.componentList.begin()->second != (Component *)0x1234)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("2","NULL僀儞僗僞儞僗偼搊榐偱偒側偄") {
ComponentInfo info;
BEGIN_CASE("1","娭悢偼幐攕偡傞") {
if(info.addComponent(0, 10))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","梫慺偼捛壛偝傟偰偄側偄") {
if(info.componentList.size() != 0)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("3","NULL僀儞僗僞儞僗偵憖嶌偡傞偲false偑曉傞") {
if(((ComponentInfo *)0)->addComponent((Component *)0x1234, 10))
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("removeComponent(Component *, int)","removeComponent(Component *, int)") {
BEGIN_CASE("1", "惓偟偔夝彍偱偒傞") {
ComponentInfo info;
info.addComponent((Component *)0x0123, 10); //38峴栚偺if偺else傪幚峴偝偣傞偨傔偺僟儈乕
info.addComponent((Component *)0x1234, 10);
info.addComponent((Component *)0x1234, 20);
info.removeComponent((Component *)0x1234, 10);
info.removeComponent((Component *)0x0123, 10);
BEGIN_CASE("1","梫慺悢偑1") {
if(info.componentList.size() != 1)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","巆偭偨梫慺偺order偼20") {
if(info.componentList.begin()->first != 20)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("2", "NULL僆僽僕僃僋僩偐傜幚峴偟偰傕戝忎晇") {
((ComponentInfo *)0)->removeComponent(0, 0);
} END_CASE;
} END_CASE;
BEGIN_CASE("removeComponent(Component *)","removeComponent(Component *)") {
BEGIN_CASE("1", "惓偟偔夝彍偱偒傞") {
ComponentInfo info;
multimap<int, Component *>::iterator scope;
info.addComponent((Component *)0x1234, 10);
info.addComponent((Component *)0x1235, 10);
info.addComponent((Component *)0x1234, 20);
info.addComponent((Component *)0x1235, 20);
info.removeComponent((Component *)0x1234);
BEGIN_CASE("1","梫慺悢偑2") {
if(info.componentList.size() != 2)
TEST_FAIL;
} END_CASE;
scope = info.componentList.begin();
BEGIN_CASE("2","巆偭偨梫慺偺撪梕偼惓偟偄") {
if(scope->first != 10 || scope->second != (Component *)0x1235)
TEST_FAIL;
++ scope;
if(scope->first != 20 || scope->second != (Component *)0x1235)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("2", "NULL僆僽僕僃僋僩偐傜幚峴偟偰傕戝忎晇") {
((ComponentInfo *)0)->removeComponent(0);
} END_CASE;
} END_CASE;
BEGIN_CASE("activateComponent","activateComponent") {
BEGIN_CASE("1","惓忢偵捛壛偱偒傞") {
ComponentInfo info;
BEGIN_CASE("1","娭悢偼惉岟偡傞") {
if(!info.activateComponent((Component *)0x1234))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","婲摦梫媮儕僗僩偵惓偟偔捛壛偝傟偰偄傞") {
if(info.activatedComponentList.size() != 1)
TEST_FAIL;
if(*info.activatedComponentList.begin() != (Component *)0x1234)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","NULL僆僽僕僃僋僩偐傜敪峴偟偰傕朶憱偟側偄") {
((ComponentInfo *)0)->activateComponent();
} END_CASE;
} END_CASE;
BEGIN_CASE("1","NULL僀儞僗僞儞僗偼捛壛偝傟側偄") {
ComponentInfo info;
BEGIN_CASE("1","娭悢偼幐攕偡傞") {
if(info.activateComponent((Component *)0))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","婲摦梫媮儕僗僩偼嬻偺傑傑") {
if(!info.activatedComponentList.empty())
TEST_FAIL;
} END_CASE;
} END_CASE;
} END_CASE;
BEGIN_CASE("Component::Component","Component::Component") {
Singleton<ComponentInfo>::renewInstance();
TestComponent * test = 0;
BEGIN_CASE("0","慜採忦審傪枮偨偡") {
if(Singleton<ComponentInfo>::getInstance()->componentList.size() != 0)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("1","Component傪僀儞僗僞儞僗壔偡傞偲丄彑庤偵搊榐偝傟傞") {
test = new TestComponent;
if(Singleton<ComponentInfo>::getInstance()->componentList.size() != 1)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","搊榐偝傟偰偄傞撪梕偼惓偟偄") {
if(Singleton<ComponentInfo>::getInstance()->componentList.begin()->second != test)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","攋婞偡傞偲僄儞僩儕偑徚偊傞") {
delete test;
if(Singleton<ComponentInfo>::getInstance()->componentList.size() != 0)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("parseOption","parseOption") {
BEGIN_CASE("1","parseOption傪幚峴偡傞偲搊榐偝傟偨僐儞億乕僱儞僩偺parseOption偑幚峴偝傟傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
if(!test.check_parseOption || !test2.check_parseOption)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","婲摦弴彉偑惓偟偄 (摨堦儗儀儖側傜搊榐弴)") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
counter = 0;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
if(test.actcnt != 1 || test2.actcnt != 2 )
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","婲摦弴彉偑惓偟偄 (桪愭搙弴)") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test(10);
TestComponent test2(1);
counter = 0;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
if(test.actcnt != 2 || test2.actcnt != 1 )
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4","activate傪偐偗傞偲activateList偵搊榐偝傟傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
list<Component *>::iterator scope;
test.activation = true;
test2.activation = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
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;
BEGIN_CASE("5","椺奜偼敳偗偰偔傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
list<Component *>::iterator scope;
bool result = false;
Exception::setThrowControl(true);
test.throw_parseOption = true;
try {
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
}
catch(...) {
result = true;
}
if(!result)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("6","椺奜慜偵搊榐偝傟偨activate偼巆傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
list<Component *>::iterator scope;
bool result = false;
Exception::setThrowControl(true);
test.activation = true;
test2.throw_parseOption = true;
try {
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
}
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("7","NULL僀儞僗僞儞僗偐傜偺僐乕儖偵懴偊傞") {
((ComponentInfo *)0)->parseOption(getOptionParameter());
} END_CASE;
}END_CASE;
BEGIN_CASE("activateCompoent/Component::body","activateCompoent/Component::body") {
BEGIN_CASE("1","activateComponent傪偡傞偲丄婲摦梫媮傪弌偟偨僐儞億乕僱儞僩偑婲摦偝傟傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
test.activation = true;
test2.activation = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
Singleton<ComponentInfo>::getInstance()->activateComponent();
if(!test.check_body || !test2.check_body)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","婲摦梫媮傪弌偝側偄僐儞億乕僱儞僩偼婲摦偝傟側偄") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
test.activation = false;
test2.activation = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
Singleton<ComponentInfo>::getInstance()->activateComponent();
if(test.check_body || !test2.check_body)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","婲摦弴彉偑惓偟偄 (摨堦儗儀儖側傜搊榐弴)") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
counter = 0;
test.activation = test2.activation = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
Singleton<ComponentInfo>::getInstance()->activateComponent();
if(test.actcnt != 3 || test2.actcnt != 4 )
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4","婲摦弴彉偑惓偟偄 (桪愭搙弴)") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test(10);
TestComponent test2(4);
counter = 0;
test.activation = test2.activation = true;
Singleton<ComponentInfo>::getInstance()->parseOption(getOptionParameter());
Singleton<ComponentInfo>::getInstance()->activateComponent();
if(test.actcnt != 4 || test2.actcnt != 3 )
TEST_FAIL;
} END_CASE;
BEGIN_CASE("5","椺奜偼敳偗偰偔傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
TestComponent test2;
list<Component *>::iterator scope;
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;
} END_CASE;
BEGIN_CASE("6","椺奜傪婲偙偟偨傜丄偦傟傑偱偵婲摦偟偨僐儞億乕僱儞僩偑activatedComponentList偵巆傞") {
Singleton<ComponentInfo>::renewInstance();
TestComponent test;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -