diff options
Diffstat (limited to 'test/argument_test.cpp')
-rw-r--r-- | test/argument_test.cpp | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/test/argument_test.cpp b/test/argument_test.cpp deleted file mode 100644 index 3cb5dc9..0000000 --- a/test/argument_test.cpp +++ /dev/null @@ -1,158 +0,0 @@ -#include "argument_test.hpp" - -#include "argument.hpp" - -#include <string> -#include <vector> - -static const std::string expected_path1 = "/arg1-test-path"; -static const std::string expected_target1 = "t1.target"; -static const std::string expected_target2 = "t2.target"; - -// Allow for a single unrecognized option then the Usage printout -static const std::string invalid_arg_regex = - "^[^\n]*unrecognized option[^\n]*\nUsage: "; - -static const std::string clean_usage_regex = "^Usage: "; - -namespace phosphor -{ -namespace watchdog -{ - -void ArgumentTest::SetUp() -{ - arg0 = "argument_test"; -} - -/** @brief ArgumentParser should return no values if given no options */ -TEST_F(ArgumentTest, NoOptions) -{ - char* const args[] = {&arg0[0], nullptr}; - ArgumentParser ap(sizeof(args) / sizeof(char*) - 1, args); - EXPECT_EQ(std::vector<std::string>({}), ap["path"]); - EXPECT_EQ(std::vector<std::string>({}), ap["continue"]); - EXPECT_EQ(std::vector<std::string>({}), ap["arbitrary_unknown"]); -} - -/** @brief ArgumentParser should return true for an existing no-arg option - * Make sure we don't parse arguments if an option takes none - * Also make sure we don't populate options not used. - */ -TEST_F(ArgumentTest, LongOptionNoArg) -{ - std::string arg_continue = "--continue"; - std::string arg_extra = "not-a-bool"; - char* const args[] = {&arg0[0], &arg_continue[0], &arg_extra[0], nullptr}; - ArgumentParser ap(sizeof(args) / sizeof(char*) - 1, args); - EXPECT_EQ(std::vector<std::string>({}), ap["path"]); - EXPECT_EQ(std::vector<std::string>({ArgumentParser::trueString}), - ap["continue"]); -} - -/** @brief ArgumentParser should return a string for long options that - * take an arg - */ -TEST_F(ArgumentTest, LongOptionRequiredArg) -{ - std::string arg_path = "--path"; - std::string arg_path_val = expected_path1; - std::string arg_extra = "/unused-path"; - char* const args[] = {&arg0[0], &arg_path[0], &arg_path_val[0], - &arg_extra[0], nullptr}; - ArgumentParser ap(sizeof(args) / sizeof(char*) - 1, args); - EXPECT_EQ(std::vector<std::string>({expected_path1}), ap["path"]); -} - -/** @brief ArgumentParser should return a string for long options that - * accept an argument when passed an argument inline - */ -TEST_F(ArgumentTest, LongOptionInlineArg) -{ - std::string arg_path = "--path=" + expected_path1; - std::string arg_extra = "/unused-path"; - char* const args[] = {&arg0[0], &arg_path[0], &arg_extra[0], nullptr}; - ArgumentParser ap(sizeof(args) / sizeof(char*) - 1, args); - EXPECT_EQ(std::vector<std::string>({expected_path1}), ap["path"]); -} - -/** @brief ArgumentParser should return a string for short options that - * accept an argument. - */ -TEST_F(ArgumentTest, ShortOptionRequiredArg) -{ - std::string arg_path = "-p"; - std::string arg_path_val = expected_path1; - std::string arg_extra = "/unused-path"; - char* const args[] = {&arg0[0], &arg_path[0], &arg_path_val[0], - &arg_extra[0], nullptr}; - ArgumentParser ap(sizeof(args) / sizeof(char*) - 1, args); - EXPECT_EQ(std::vector<std::string>({expected_path1}), ap["path"]); -} - -/** @brief ArgumentParser should be able to handle parsing multiple options - * Make sure this works for no-arg and required-arg type options - * Make sure this works between short and long options - */ -TEST_F(ArgumentTest, MultiOptionOverride) -{ - std::string arg_continue_short = "-c"; - std::string arg_path = "--path=" + expected_path1; - std::string arg_continue_long = "--continue"; - std::string arg_target = "--target=" + expected_target2; - std::string arg_target_short = "-t"; - std::string arg_target_val = expected_target1; - char* const args[] = {&arg0[0], &arg_continue_short[0], - &arg_path[0], &arg_continue_long[0], - &arg_target[0], &arg_target_short[0], - &arg_target_val[0], nullptr}; - ArgumentParser ap(sizeof(args) / sizeof(char*) - 1, args); - EXPECT_EQ(std::vector<std::string>({expected_path1}), ap["path"]); - EXPECT_EQ(std::vector<std::string>( - {ArgumentParser::trueString, ArgumentParser::trueString}), - ap["continue"]); - EXPECT_EQ(std::vector<std::string>({expected_target2, expected_target1}), - ap["target"]); -} - -/** @brief ArgumentParser should print usage information when given a help - * argument anywhere in the arguments array - */ -TEST_F(ArgumentTest, ShortOptionHelp) -{ - std::string arg_extra = "extra"; - std::string arg_help = "-h"; - char* const args[] = {&arg0[0], &arg_extra[0], &arg_help[0], nullptr}; - EXPECT_EXIT(ArgumentParser(sizeof(args) / sizeof(char*) - 1, args), - ::testing::ExitedWithCode(255), clean_usage_regex); -} - -/** @brief ArgumentParser should print usage information when given a help - * argument anywhere in the arguments array - */ -TEST_F(ArgumentTest, LongOptionHelp) -{ - std::string arg_help = "--help"; - std::string arg_extra = "extra"; - char* const args[] = {&arg0[0], &arg_help[0], &arg_extra[0], nullptr}; - EXPECT_EXIT(ArgumentParser(sizeof(args) / sizeof(char*) - 1, args), - ::testing::ExitedWithCode(255), clean_usage_regex); -} - -/** @brief ArgumentParser should print an invalid argument error and - * usage information when given an invalid argument anywhere - * in the arguments array - */ -TEST_F(ArgumentTest, InvalidOptionHelp) -{ - std::string arg_continue = "--continue"; - std::string arg_bad = "--bad_arg"; - std::string arg_target = "--target=/unused-path"; - char* const args[] = {&arg0[0], &arg_continue[0], &arg_bad[0], - &arg_target[0], nullptr}; - EXPECT_EXIT(ArgumentParser(sizeof(args) / sizeof(char*) - 1, args), - ::testing::ExitedWithCode(255), invalid_arg_regex); -} - -} // namespace watchdog -} // namespace phosphor |