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

📄 cmdargs_unittest_.h

📁 新版本TR1的stl
💻 H
字号:

#if !defined(STLSOFT_INCL_STLSOFT_SYSTEM_HPP_CMDARGS)
# error This file cannot be directly included, and should only be included within stlsoft/system/cmdargs.hpp
#endif /* !STLSOFT_INCL_STLSOFT_SYSTEM_HPP_CMDARGS */

#if !defined(STLSOFT_UNITTEST)
# error This file cannot be included when not unit-testing STLSoft
#endif /* !STLSOFT_UNITTEST */

namespace unittest
{
	namespace
	{
		ss_bool_t test_stlsoft_system_cmdargs(unittest_reporter *r)
		{
			ss_bool_t				bSuccess	=	true;

			unittest_initialiser	init(r, "STLSoft", "system/cmdargs", __FILE__);

			{ // empty
				char	*argv[] =
				{
						"dummyprocname"
					,	NULL
				};

				cmdargs 	args(STLSOFT_NUM_ELEMENTS(argv) - 1, argv);

				if(0 != args.options_size())
				{
					r->report("cmdargs::options_size() returned invalid value for empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(0 != args.values_size())
				{
					r->report("cmdargs::values_size() returned invalid value for empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(0 != args.size())
				{
					r->report("cmdargs::size() returned invalid value for empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(args.options_begin() != args.options_end())
				{
					r->report("cmdargs::options_begin() != cmdargs::options_end() for empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(args.values_begin() != args.values_end())
				{
					r->report("cmdargs::values_begin() != cmdargs::values_end() for empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(!args.options().empty())
				{
					r->report("cmdargs::options() returns non-empty collection for empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(!args.values().empty())
				{
					r->report("cmdargs::values() returns non-empty collection for empty cmdargs instance", __LINE__);
					bSuccess = false;
				}
			}


			{ // non-empty
				char	*argv[] =
				{
						"dummyprocname"
					,	"value0"
					,	"-option0=ov0"
					,	"--option1=ov1"
					,	"value1"
					,	"-option2"
					,	"---option3"
					,	NULL
				};

				cmdargs 	args(STLSOFT_NUM_ELEMENTS(argv) - 1, argv);

				if(4 != args.options_size())
				{
					r->report("cmdargs::options_size() returned invalid value for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(2 != args.values_size())
				{
					r->report("cmdargs::values_size() returned invalid value for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(6 != args.size())
				{
					r->report("cmdargs::size() returned invalid value for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(args.options_begin() == args.options_end())
				{
					r->report("cmdargs::options_begin() == cmdargs::options_end() for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(args.values_begin() == args.values_end())
				{
					r->report("cmdargs::values_begin() == cmdargs::values_end() for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(args.options().empty())
				{
					r->report("cmdargs::options() returns empty collection for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(args.values().empty())
				{
					r->report("cmdargs::values() returns empty collection for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				cmdargs::option const	&option0	=	args.options()[0];
				cmdargs::option const	&option1	=	args.options()[1];
				cmdargs::option const	&option2	=	args.options()[2];
				cmdargs::option const	&option3	=	args.options()[3];

				cmdargs::value const	&value0 	=	args.values()[0];
				cmdargs::value const	&value1 	=	args.values()[1];

				if(option0.m_name != "option0")
				{
					r->report("cmdargs option[0] not valid (name) for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(option0.m_value != "ov0")
				{
					r->report("cmdargs option[0] not valid (value) for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(option0.m_type != cmdargs::singleDash)
				{
					r->report("cmdargs option[0] not valid (type) for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(option0.m_index != 2)
				{
					r->report("cmdargs option[0] not valid (index) for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(option0.m_original != "-option0=ov0")
				{
					r->report("cmdargs option[0] not valid (original) for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if( option1.m_name != "option1" ||
					option1.m_value != "ov1" ||
					option1.m_type != cmdargs::doubleDash ||
					option1.m_index != 3 ||
					option1.m_original != "--option1=ov1")
				{
					r->report("cmdargs option[1] not valid for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if( option2.m_name != "option2" ||
					option2.m_value != "" ||
					option2.m_type != cmdargs::singleDash ||
					option2.m_index != 5 ||
					option2.m_original != "-option2")
				{
					r->report("cmdargs option[2] not valid for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if( option3.m_name != "-option3" ||
					option3.m_value != "" ||
					option3.m_type != cmdargs::doubleDash ||
					option3.m_index != 6 ||
					option3.m_original != "---option3")
				{
					r->report("cmdargs option[3] not valid for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(value0.m_value != "value0")
				{
					r->report("cmdargs value[0] not valid (value) for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if(value0.m_index != 1)
				{
					r->report("cmdargs value[0] not valid (index) for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}

				if( value1.m_value != "value1" ||
					value1.m_index != 4)
				{
					r->report("cmdargs value[1] not valid for non-empty cmdargs instance", __LINE__);
					bSuccess = false;
				}
			}

			return bSuccess;
		}

		unittest_registrar	  unittest_stlsoft_system_cmdargs(test_stlsoft_system_cmdargs);
	} // anonymous namespace

} // namespace unittest

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -