Changeset View
Changeset View
Standalone View
Standalone View
src/test/util_tests.cpp
Show First 20 Lines • Show All 170 Lines • ▼ Show 20 Lines | |||||
struct TestArgsManager : public ArgsManager { | struct TestArgsManager : public ArgsManager { | ||||
std::map<std::string, std::vector<std::string>> &GetOverrideArgs() { | std::map<std::string, std::vector<std::string>> &GetOverrideArgs() { | ||||
return m_override_args; | return m_override_args; | ||||
} | } | ||||
std::map<std::string, std::vector<std::string>> &GetConfigArgs() { | std::map<std::string, std::vector<std::string>> &GetConfigArgs() { | ||||
return m_config_args; | return m_config_args; | ||||
} | } | ||||
const std::unordered_set<std::string> &GetNegatedArgs() { | |||||
return m_negated_args; | |||||
} | |||||
void ReadConfigString(const std::string str_config) { | void ReadConfigString(const std::string str_config) { | ||||
std::istringstream streamConfig(str_config); | std::istringstream streamConfig(str_config); | ||||
{ | { | ||||
LOCK(cs_args); | LOCK(cs_args); | ||||
m_config_args.clear(); | m_config_args.clear(); | ||||
} | } | ||||
ReadConfigStream(streamConfig); | ReadConfigStream(streamConfig); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(util_GetBoolArg) { | ||||
BOOST_CHECK(testArgs.GetOverrideArgs().size() == 6 && | BOOST_CHECK(testArgs.GetOverrideArgs().size() == 6 && | ||||
testArgs.GetConfigArgs().empty()); | testArgs.GetConfigArgs().empty()); | ||||
// The -no prefix should get stripped on the way in. | // The -no prefix should get stripped on the way in. | ||||
BOOST_CHECK(!testArgs.IsArgSet("-nob")); | BOOST_CHECK(!testArgs.IsArgSet("-nob")); | ||||
// The -b option is flagged as negated, and nothing else is | // The -b option is flagged as negated, and nothing else is | ||||
BOOST_CHECK(testArgs.IsArgNegated("-b")); | BOOST_CHECK(testArgs.IsArgNegated("-b")); | ||||
BOOST_CHECK(testArgs.GetNegatedArgs().size() == 1); | |||||
BOOST_CHECK(!testArgs.IsArgNegated("-a")); | BOOST_CHECK(!testArgs.IsArgNegated("-a")); | ||||
// Check expected values. | // Check expected values. | ||||
BOOST_CHECK(testArgs.GetBoolArg("-a", false) == true); | BOOST_CHECK(testArgs.GetBoolArg("-a", false) == true); | ||||
BOOST_CHECK(testArgs.GetBoolArg("-b", true) == false); | BOOST_CHECK(testArgs.GetBoolArg("-b", true) == false); | ||||
BOOST_CHECK(testArgs.GetBoolArg("-c", true) == false); | BOOST_CHECK(testArgs.GetBoolArg("-c", true) == false); | ||||
BOOST_CHECK(testArgs.GetBoolArg("-d", false) == true); | BOOST_CHECK(testArgs.GetBoolArg("-d", false) == true); | ||||
BOOST_CHECK(testArgs.GetBoolArg("-e", true) == false); | BOOST_CHECK(testArgs.GetBoolArg("-e", true) == false); | ||||
BOOST_CHECK(testArgs.GetBoolArg("-f", true) == false); | BOOST_CHECK(testArgs.GetBoolArg("-f", true) == false); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(util_GetBoolArgEdgeCases) { | BOOST_AUTO_TEST_CASE(util_GetBoolArgEdgeCases) { | ||||
// Test some awful edge cases that hopefully no user will ever exercise. | // Test some awful edge cases that hopefully no user will ever exercise. | ||||
TestArgsManager testArgs; | TestArgsManager testArgs; | ||||
// Params test | // Params test | ||||
const char *argv_test[] = {"ignored", "-nofoo", "-foo", "-nobar=0"}; | const char *argv_test[] = {"ignored", "-nofoo", "-foo", "-nobar=0"}; | ||||
testArgs.ParseParameters(4, (char **)argv_test); | testArgs.ParseParameters(4, (char **)argv_test); | ||||
// This was passed twice, second one overrides the negative setting. | // This was passed twice, second one overrides the negative setting. | ||||
BOOST_CHECK(!testArgs.IsArgNegated("-foo")); | BOOST_CHECK(!testArgs.IsArgNegated("-foo")); | ||||
BOOST_CHECK(testArgs.GetArg("-foo", "xxx") == ""); | BOOST_CHECK(testArgs.GetArg("-foo", "xxx") == ""); | ||||
// A double negative is a positive. | // A double negative is a positive, and not marked as negated. | ||||
BOOST_CHECK(testArgs.IsArgNegated("-bar")); | BOOST_CHECK(!testArgs.IsArgNegated("-bar")); | ||||
BOOST_CHECK(testArgs.GetArg("-bar", "xxx") == "1"); | BOOST_CHECK(testArgs.GetArg("-bar", "xxx") == "1"); | ||||
// Config test | // Config test | ||||
const char *conf_test = "nofoo=1\nfoo=1\nnobar=0\n"; | const char *conf_test = "nofoo=1\nfoo=1\nnobar=0\n"; | ||||
testArgs.ParseParameters(1, (char **)argv_test); | testArgs.ParseParameters(1, (char **)argv_test); | ||||
testArgs.ReadConfigString(conf_test); | testArgs.ReadConfigString(conf_test); | ||||
// This was passed twice, second one overrides the negative setting, | // This was passed twice, second one overrides the negative setting, | ||||
// but not the value. | // and the value. | ||||
BOOST_CHECK(!testArgs.IsArgNegated("-foo")); | BOOST_CHECK(!testArgs.IsArgNegated("-foo")); | ||||
BOOST_CHECK(testArgs.GetArg("-foo", "xxx") == "0"); | BOOST_CHECK(testArgs.GetArg("-foo", "xxx") == "1"); | ||||
// A double negative is a positive. | // A double negative is a positive, and does not count as negated. | ||||
BOOST_CHECK(testArgs.IsArgNegated("-bar")); | BOOST_CHECK(!testArgs.IsArgNegated("-bar")); | ||||
BOOST_CHECK(testArgs.GetArg("-bar", "xxx") == "1"); | BOOST_CHECK(testArgs.GetArg("-bar", "xxx") == "1"); | ||||
// Combined test | // Combined test | ||||
const char *combo_test_args[] = {"ignored", "-nofoo", "-bar"}; | const char *combo_test_args[] = {"ignored", "-nofoo", "-bar"}; | ||||
const char *combo_test_conf = "foo=1\nnobar=1\n"; | const char *combo_test_conf = "foo=1\nnobar=1\n"; | ||||
testArgs.ParseParameters(3, (char **)combo_test_args); | testArgs.ParseParameters(3, (char **)combo_test_args); | ||||
testArgs.ReadConfigString(combo_test_conf); | testArgs.ReadConfigString(combo_test_conf); | ||||
// Command line overrides, but doesn't erase old setting | // Command line overrides, but doesn't erase old setting | ||||
BOOST_CHECK(!testArgs.IsArgNegated("-foo")); | BOOST_CHECK(testArgs.IsArgNegated("-foo")); | ||||
BOOST_CHECK(testArgs.GetArg("-foo", "xxx") == "0"); | BOOST_CHECK(testArgs.GetArg("-foo", "xxx") == "0"); | ||||
BOOST_CHECK(testArgs.GetArgs("-foo").size() == 2 && | BOOST_CHECK(testArgs.GetArgs("-foo").size() == 0); | ||||
testArgs.GetArgs("-foo").front() == "0" && | |||||
testArgs.GetArgs("-foo").back() == "1"); | |||||
// Command line overrides, but doesn't erase old setting | // Command line overrides, but doesn't erase old setting | ||||
BOOST_CHECK(testArgs.IsArgNegated("-bar")); | BOOST_CHECK(!testArgs.IsArgNegated("-bar")); | ||||
BOOST_CHECK(testArgs.GetArg("-bar", "xxx") == ""); | BOOST_CHECK(testArgs.GetArg("-bar", "xxx") == ""); | ||||
BOOST_CHECK(testArgs.GetArgs("-bar").size() == 2 && | BOOST_CHECK(testArgs.GetArgs("-bar").size() == 1 && | ||||
testArgs.GetArgs("-bar").front() == "" && | testArgs.GetArgs("-bar").front() == ""); | ||||
testArgs.GetArgs("-bar").back() == "0"); | |||||
} | } | ||||
BOOST_AUTO_TEST_CASE(util_ReadConfigStream) { | BOOST_AUTO_TEST_CASE(util_ReadConfigStream) { | ||||
const char *str_config = "a=\n" | const char *str_config = "a=\n" | ||||
"b=1\n" | "b=1\n" | ||||
"ccc=argument\n" | "ccc=argument\n" | ||||
"ccc=multiple\n" | "ccc=multiple\n" | ||||
"d=e\n" | "d=e\n" | ||||
Show All 28 Lines | BOOST_CHECK(test_args.IsArgSet("-a") && test_args.IsArgSet("-b") && | ||||
!test_args.IsArgSet("-zzz")); | !test_args.IsArgSet("-zzz")); | ||||
BOOST_CHECK(test_args.GetArg("-a", "xxx") == "" && | BOOST_CHECK(test_args.GetArg("-a", "xxx") == "" && | ||||
test_args.GetArg("-b", "xxx") == "1" && | test_args.GetArg("-b", "xxx") == "1" && | ||||
test_args.GetArg("-ccc", "xxx") == "argument" && | test_args.GetArg("-ccc", "xxx") == "argument" && | ||||
test_args.GetArg("-d", "xxx") == "e" && | test_args.GetArg("-d", "xxx") == "e" && | ||||
test_args.GetArg("-fff", "xxx") == "0" && | test_args.GetArg("-fff", "xxx") == "0" && | ||||
test_args.GetArg("-ggg", "xxx") == "1" && | test_args.GetArg("-ggg", "xxx") == "1" && | ||||
// 1st value takes precedence | test_args.GetArg("-h", "xxx") == "0" && | ||||
test_args.GetArg("-h", "xxx") == "1" && | test_args.GetArg("-i", "xxx") == "1" && | ||||
// 1st value takes precedence | |||||
test_args.GetArg("-i", "xxx") == "0" && | |||||
test_args.GetArg("-zzz", "xxx") == "xxx"); | test_args.GetArg("-zzz", "xxx") == "xxx"); | ||||
for (bool def : {false, true}) { | for (bool def : {false, true}) { | ||||
BOOST_CHECK(test_args.GetBoolArg("-a", def) && | BOOST_CHECK(test_args.GetBoolArg("-a", def) && | ||||
test_args.GetBoolArg("-b", def) && | test_args.GetBoolArg("-b", def) && | ||||
!test_args.GetBoolArg("-ccc", def) && | !test_args.GetBoolArg("-ccc", def) && | ||||
!test_args.GetBoolArg("-d", def) && | !test_args.GetBoolArg("-d", def) && | ||||
!test_args.GetBoolArg("-fff", def) && | !test_args.GetBoolArg("-fff", def) && | ||||
test_args.GetBoolArg("-ggg", def) && | test_args.GetBoolArg("-ggg", def) && | ||||
test_args.GetBoolArg("-h", def) && | !test_args.GetBoolArg("-h", def) && | ||||
!test_args.GetBoolArg("-i", def) && | test_args.GetBoolArg("-i", def) && | ||||
test_args.GetBoolArg("-zzz", def) == def); | test_args.GetBoolArg("-zzz", def) == def); | ||||
} | } | ||||
BOOST_CHECK(test_args.GetArgs("-a").size() == 1 && | BOOST_CHECK(test_args.GetArgs("-a").size() == 1 && | ||||
test_args.GetArgs("-a").front() == ""); | test_args.GetArgs("-a").front() == ""); | ||||
BOOST_CHECK(test_args.GetArgs("-b").size() == 1 && | BOOST_CHECK(test_args.GetArgs("-b").size() == 1 && | ||||
test_args.GetArgs("-b").front() == "1"); | test_args.GetArgs("-b").front() == "1"); | ||||
BOOST_CHECK(test_args.GetArgs("-ccc").size() == 2 && | BOOST_CHECK(test_args.GetArgs("-ccc").size() == 2 && | ||||
test_args.GetArgs("-ccc").front() == "argument" && | test_args.GetArgs("-ccc").front() == "argument" && | ||||
test_args.GetArgs("-ccc").back() == "multiple"); | test_args.GetArgs("-ccc").back() == "multiple"); | ||||
BOOST_CHECK(test_args.GetArgs("-fff").size() == 1 && | BOOST_CHECK(test_args.GetArgs("-fff").size() == 0); | ||||
test_args.GetArgs("-fff").front() == "0"); | |||||
BOOST_CHECK(test_args.GetArgs("-nofff").size() == 0); | BOOST_CHECK(test_args.GetArgs("-nofff").size() == 0); | ||||
BOOST_CHECK(test_args.GetArgs("-ggg").size() == 1 && | BOOST_CHECK(test_args.GetArgs("-ggg").size() == 1 && | ||||
test_args.GetArgs("-ggg").front() == "1"); | test_args.GetArgs("-ggg").front() == "1"); | ||||
BOOST_CHECK(test_args.GetArgs("-noggg").size() == 0); | BOOST_CHECK(test_args.GetArgs("-noggg").size() == 0); | ||||
BOOST_CHECK(test_args.GetArgs("-h").size() == 2 && | BOOST_CHECK(test_args.GetArgs("-h").size() == 0); | ||||
test_args.GetArgs("-h").front() == "1" && | |||||
test_args.GetArgs("-h").back() == "0"); | |||||
BOOST_CHECK(test_args.GetArgs("-noh").size() == 0); | BOOST_CHECK(test_args.GetArgs("-noh").size() == 0); | ||||
BOOST_CHECK(test_args.GetArgs("-i").size() == 2 && | BOOST_CHECK(test_args.GetArgs("-i").size() == 1 && | ||||
test_args.GetArgs("-i").front() == "0" && | test_args.GetArgs("-i").front() == "1"); | ||||
test_args.GetArgs("-i").back() == "1"); | |||||
BOOST_CHECK(test_args.GetArgs("-noi").size() == 0); | BOOST_CHECK(test_args.GetArgs("-noi").size() == 0); | ||||
BOOST_CHECK(test_args.GetArgs("-zzz").size() == 0); | BOOST_CHECK(test_args.GetArgs("-zzz").size() == 0); | ||||
BOOST_CHECK(!test_args.IsArgNegated("-a")); | BOOST_CHECK(!test_args.IsArgNegated("-a")); | ||||
BOOST_CHECK(!test_args.IsArgNegated("-b")); | BOOST_CHECK(!test_args.IsArgNegated("-b")); | ||||
BOOST_CHECK(!test_args.IsArgNegated("-ccc")); | BOOST_CHECK(!test_args.IsArgNegated("-ccc")); | ||||
BOOST_CHECK(!test_args.IsArgNegated("-d")); | BOOST_CHECK(!test_args.IsArgNegated("-d")); | ||||
BOOST_CHECK(test_args.IsArgNegated("-fff")); | BOOST_CHECK(test_args.IsArgNegated("-fff")); | ||||
// IsArgNegated==true when noggg=0 | BOOST_CHECK(!test_args.IsArgNegated("-ggg")); | ||||
BOOST_CHECK(test_args.IsArgNegated("-ggg")); | |||||
// last setting takes precedence | // last setting takes precedence | ||||
BOOST_CHECK(test_args.IsArgNegated("-h")); | BOOST_CHECK(test_args.IsArgNegated("-h")); | ||||
// last setting takes precedence | // last setting takes precedence | ||||
BOOST_CHECK(!test_args.IsArgNegated("-i")); | BOOST_CHECK(!test_args.IsArgNegated("-i")); | ||||
BOOST_CHECK(!test_args.IsArgNegated("-zzz")); | BOOST_CHECK(!test_args.IsArgNegated("-zzz")); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(util_GetArg) { | BOOST_AUTO_TEST_CASE(util_GetArg) { | ||||
▲ Show 20 Lines • Show All 733 Lines • Show Last 20 Lines |