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

📄 cmdargs_unittest_.h

📁 用STL的方式封装了WindowsAPI、COM调用、ACE、ATL、MFC、WTL等多种组件
💻 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 + -