📄 option.cpp
字号:
if(OptionItem::createItem(work, arg))
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("isValid/createInvalidItem", "柍岠傪帵偡僀儞僗僞儞僗傪惗惉偱偒丄偦傟傪敾掕偱偒傞") {
OptionItem work;
BEGIN_CASE("1","僨僼僅儖僩僐儞僗僩儔僋僞偱惗惉偟偨僆僽僕僃僋僩偼桳岠") {
if(!work.isValid())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","柍岠僀儞僗僞儞僗偼摉慠柍岠") {
work = OptionItem::createInvalidItem();
if(work.isValid())
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("getParameters","getParameters") {
BEGIN_CASE("1","惓偟偔僆僾僔儑儞傪寢崌偱偒傞") {
OptionItem work;
string arg("-test a b c d e f g");
TEST_CASE("0","[慜採]僆僾僔儑儞夝愅偵惉岟偡傞", OptionItem::createItem(work,arg));
TEST_CASE("1","寢崌偱偒傞", work.getParameters().compare("a b c d e f g") == 0);
TEST_CASE("2","嬫愗傝巵傪巜掕偟偰寢崌偱偒傞", work.getParameters(",").compare("a,b,c,d,e,f,g") == 0);
} END_CASE;
} END_CASE;
BEGIN_CASE("checkParameterCount","checkParameterCount") {
BEGIN_CASE("1","僆僾僔儑儞偺悢偑偁偭偰偄傟偼true") {
OptionItem work;
string arg("-test a b c d e f g");
TEST_CASE("0","[慜採]僆僾僔儑儞夝愅偵惉岟偡傞", OptionItem::createItem(work,arg));
if(!work.checkParameterCount(7))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","僆僾僔儑儞偺悢偑娫堘偭偰偄傞偲false") {
OptionItem work;
string arg("-test a b c d e f g");
TEST_CASE("0","[慜採]僆僾僔儑儞夝愅偵惉岟偡傞", OptionItem::createItem(work,arg));
if(work.checkParameterCount(2))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","僆僾僔儑儞偑側偔偰丄!allow_zero側傜false") {
OptionItem work;
string arg("-test");
TEST_CASE("0","[慜採]僆僾僔儑儞夝愅偵惉岟偡傞", OptionItem::createItem(work,arg));
if(work.checkParameterCount(1,false))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4","僆僾僔儑儞偑側偔偰丄allow_zero側傜true") {
OptionItem work;
string arg("-test");
TEST_CASE("0","[慜採]僆僾僔儑儞夝愅偵惉岟偡傞", OptionItem::createItem(work,arg));
if(work.checkParameterCount(1,true))
TEST_FAIL;
} END_CASE;
} END_CASE;
}
/********************************* 僥僗僩僗傿乕僩 *********************************/
TESTSUITE(main,OptionParameter)
{
SINGLETON(OptionParameter);
BEGIN_CASE("countItem","僆僾僔儑儞傾僀僥儉偺悢偑惓偟偔庢摼偱偒傞") {
OptionParameter param;
if(param.countItem() != 0)
TEST_FAIL;
param.container.insert(pair<string, OptionItem>(DEFAULT_PARAMETER, OptionItem()));
if(param.countItem() != 1)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("opeator []","operator []偱梫慺偵傾僋僙僗偱偒傞") {
OptionParameter param;
OptionItem work;
string arg("-test param");
OptionItem::createItem(work, arg);
param.container.insert(pair<string, OptionItem>(work, work));
BEGIN_CASE("1", "operator [] (const string &)偱憤慶偵傾僋僙僗偱偒傞") {
if(param[string("test")][0].compare("param") != 0)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2", "operator [] (const char *)偱憤慶偵傾僋僙僗偱偒傞") {
if(param["test"][0].compare("param") != 0)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3", "operator []偱怗傞偲丄check偑擖傞") {
if(!param["test"].isChecked())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4", "operator []偵柍岠側僉乕傪擖傟傞偲丄柍岠側僨乕僞偑曉偭偰偔傞") {
if(param["nonexist"].isValid())
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("get","梫慺傊偺傾僋僙僗") {
OptionParameter param;
OptionItem work;
OptionItem::createItem(work, string("-test param"));
param.container.insert(pair<string, OptionItem>(work, work));
OptionItem::createItem(work, string("-test2 param2"));
param.container.insert(pair<string, OptionItem>(work, work));
BEGIN_CASE("1","get(test)偱梫慺偑庢摼偱偒丄僠僃僢僋偑擖傞") {
TEST_CASE("1","梫慺偑懚嵼偡傞", (work = param.get("test")).isValid());
TEST_CASE("2","僠僃僢僋偑擖偭偰偄傞", work.isChecked() );
TEST_CASE("3","梫慺偼僷儔儊乕僞傪帩偮", work.hasParameter() );
} END_CASE;
BEGIN_CASE("2","get(test2,false)偱梫慺偑庢摼偱偒丄僠僃僢僋偼偮偐側偄") {
TEST_CASE("1","梫慺偑懚嵼偡傞", (work = param.get("test2",false)).isValid());
TEST_CASE("2","僠僃僢僋偑擖偭偰偄側偄", !work.isChecked() );
} END_CASE;
BEGIN_CASE("3","偡偱偵僠僃僢僋偺偮偄偨test偵懳偟丄get(test,false)偱梫慺偑庢摼偱偒丄僠僃僢僋嵪傒") {
TEST_CASE("1","梫慺偑懚嵼偡傞", (work = param.get("test",false)).isValid());
TEST_CASE("2","僠僃僢僋偑擖偭偰偄側偄", work.isChecked() );
} END_CASE;
BEGIN_CASE("4","get(柍岠側柤慜)偱柍岠側梫慺偑曉傞") {
TEST_CASE("1","梫慺偑懚嵼偡傞", !param.get("unknown").isValid());
} END_CASE;
} END_CASE;
BEGIN_CASE("parseOption","僷儔儊乕僞偺僷乕僗偑惓忢偵偱偒傞偐") {
BEGIN_CASE("01","拞恎偑壗傕側偄僷儔儊乕僞傪梌偊偰傕惉岟偡傞") {
OptionParameter param;
char ** argv = { NULL };
if(!param.parseOption(0, argv))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("02","僾儘僌儔儉柤偼僆僾僔儑儞偲偟偰夝愅偝傟側偄") {
OptionParameter param;
char * argv[] = { "test.exe", NULL };
if(!param.parseOption(1, argv))
TEST_FAIL;
if(param.countItem() != 0)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("03","僷儔儊乕僞偑偦傟側傝偵夝愅偝傟傞") {
OptionParameter param;
char * argv[] = { "test.exe", "-test", "param", "-test2=\"dummy\"", NULL };
if(!param.parseOption(4, argv))
TEST_FAIL;
if(param.countItem() != 2)
TEST_FAIL;
if(param[string("test")][0].compare("param") != 0)
TEST_FAIL;
if(param["test2"][0].compare("dummy") != 0)
TEST_FAIL;
if(param.getProgramName().compare("test.exe") != 0)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("04","堷悢楍偑庢傟傞") {
OptionParameter param;
char * argv[] = { "test.exe", "-test", "param", "-test2=\"dummy\"", NULL };
if(!param.parseOption(4, argv))
TEST_FAIL;
if(param.getCommandLine().compare("-test param -test2=\"dummy\" ") != 0)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("05","壗傕堷悢偑柍偄偲偒偵偼僨僼僅儖僩堷悢傪傂偄偰偔傞") {
OptionParameter param;
char * argv[] = { "test.exe", NULL };
if(!param.parseOption(1, argv, "-default=parameter"))
TEST_FAIL;
if(param.getCommandLine().compare("-default=parameter ") != 0)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("04","嶲徠儅乕僋傪偮偗傞") {
OptionParameter param;
char * argv[] = { "test.exe", "-test", "param", "-test2=\"dummy\"", NULL };
if(!param.parseOption(4, argv))
TEST_FAIL;
if(param.container.find(string("test"))->second.isChecked())
TEST_FAIL;
param.check("test");
if(!param.container.find(string("test"))->second.isChecked())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("05","validateOption") {
OptionParameter param;
char * argv[] = { "test.exe", "-test", "param", "-test2=\"dummy\"", NULL };
if(!param.parseOption(4, argv))
TEST_FAIL;
BEGIN_CASE("1","壗傕巊梡偟偰偄側偄偲偒偵偼false") {
if(param.validateOption())
TEST_FAIL;
} END_CASE;
param["test"]._check();
BEGIN_CASE("2","傎偐偵僠僃僢僋偟偰偄側偄僆僾僔儑儞偑偁傟偽false") {
if(param.validateOption())
TEST_FAIL;
} END_CASE;
param["test2"]._check();
BEGIN_CASE("3","慡偰巊梡偝傟傟偽true") {
if(!param.validateOption())
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("06","getInvalidOptions") {
OptionParameter param;
char * argv[] = { "test.exe", "-test", "param", "-test2=\"dummy\"", NULL };
if(!param.parseOption(4, argv))
TEST_FAIL;
BEGIN_CASE("1","壗傕巊梡偟偰偄側偄偲偒偵偼慡偰偺僆僾僔儑儞偑柍岠") {
if(param.getInvalidOptions().compare("-test \"param\" -test2 \"dummy\"") != 0)
TEST_FAIL;
} END_CASE;
param["test"]._check();
BEGIN_CASE("2","傎偐偵僠僃僢僋偟偰偄側偄僆僾僔儑儞偑偁傟偽偦傟偑庢傟傞") {
if(param.getInvalidOptions().compare("-test2 \"dummy\"") != 0)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("07","find") {
OptionParameter param;
char * argv[] = { "test.exe", "-test", "param", "-test2=\"dummy\"", NULL };
if(!param.parseOption(4, argv))
TEST_FAIL;
BEGIN_CASE("1","懚嵼偡傞僆僾僔儑儞偵懳偟偰true偑曉傞") {
if(!param.find("test") || !param.find("test2"))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","懚嵼偟側偄僆僾僔儑儞偵懳偟偰false偑曉傞") {
if(param.find("unknown"))
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","嬻暥帤偵懳偟偰false偑曉傞") {
if(param.find(""))
TEST_FAIL;
} END_CASE;
} END_CASE;
Singleton<OptionParameter>::restoreContext(context);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -