test: Make tests arg type specific

This commit is contained in:
Hennadii Stepanov 2019-07-27 20:27:08 +03:00
parent b70cc5d733
commit e6f649cb2c
No known key found for this signature in database
GPG key ID: 410108112E7EA81F
2 changed files with 53 additions and 21 deletions

View file

@ -7,6 +7,7 @@
#include <test/setup_common.h> #include <test/setup_common.h>
#include <string> #include <string>
#include <utility>
#include <vector> #include <vector>
#include <boost/algorithm/string.hpp> #include <boost/algorithm/string.hpp>
@ -32,17 +33,18 @@ static void ResetArgs(const std::string& strArg)
BOOST_CHECK(gArgs.ParseParameters(vecChar.size(), vecChar.data(), error)); BOOST_CHECK(gArgs.ParseParameters(vecChar.size(), vecChar.data(), error));
} }
static void SetupArgs(const std::vector<std::string>& args) static void SetupArgs(const std::vector<std::pair<std::string, unsigned int>>& args)
{ {
gArgs.ClearArgs(); gArgs.ClearArgs();
for (const std::string& arg : args) { for (const auto& arg : args) {
gArgs.AddArg(arg, "", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); gArgs.AddArg(arg.first, "", arg.second, OptionsCategory::OPTIONS);
} }
} }
BOOST_AUTO_TEST_CASE(boolarg) BOOST_AUTO_TEST_CASE(boolarg)
{ {
SetupArgs({"-foo"}); const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_BOOL);
SetupArgs({foo});
ResetArgs("-foo"); ResetArgs("-foo");
BOOST_CHECK(gArgs.GetBoolArg("-foo", false)); BOOST_CHECK(gArgs.GetBoolArg("-foo", false));
BOOST_CHECK(gArgs.GetBoolArg("-foo", true)); BOOST_CHECK(gArgs.GetBoolArg("-foo", true));
@ -95,7 +97,9 @@ BOOST_AUTO_TEST_CASE(boolarg)
BOOST_AUTO_TEST_CASE(stringarg) BOOST_AUTO_TEST_CASE(stringarg)
{ {
SetupArgs({"-foo", "-bar"}); const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_STRING);
const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_STRING);
SetupArgs({foo, bar});
ResetArgs(""); ResetArgs("");
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", ""), ""); BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", ""), "");
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", "eleven"), "eleven"); BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", "eleven"), "eleven");
@ -120,7 +124,9 @@ BOOST_AUTO_TEST_CASE(stringarg)
BOOST_AUTO_TEST_CASE(intarg) BOOST_AUTO_TEST_CASE(intarg)
{ {
SetupArgs({"-foo", "-bar"}); const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_INT);
const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_INT);
SetupArgs({foo, bar});
ResetArgs(""); ResetArgs("");
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", 11), 11); BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", 11), 11);
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", 0), 0); BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", 0), 0);
@ -140,7 +146,9 @@ BOOST_AUTO_TEST_CASE(intarg)
BOOST_AUTO_TEST_CASE(doubledash) BOOST_AUTO_TEST_CASE(doubledash)
{ {
SetupArgs({"-foo", "-bar"}); const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_ANY);
const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_ANY);
SetupArgs({foo, bar});
ResetArgs("--foo"); ResetArgs("--foo");
BOOST_CHECK_EQUAL(gArgs.GetBoolArg("-foo", false), true); BOOST_CHECK_EQUAL(gArgs.GetBoolArg("-foo", false), true);
@ -151,7 +159,9 @@ BOOST_AUTO_TEST_CASE(doubledash)
BOOST_AUTO_TEST_CASE(boolargno) BOOST_AUTO_TEST_CASE(boolargno)
{ {
SetupArgs({"-foo", "-bar"}); const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_BOOL);
const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_BOOL);
SetupArgs({foo, bar});
ResetArgs("-nofoo"); ResetArgs("-nofoo");
BOOST_CHECK(!gArgs.GetBoolArg("-foo", true)); BOOST_CHECK(!gArgs.GetBoolArg("-foo", true));
BOOST_CHECK(!gArgs.GetBoolArg("-foo", false)); BOOST_CHECK(!gArgs.GetBoolArg("-foo", false));

View file

@ -14,6 +14,7 @@
#include <stdint.h> #include <stdint.h>
#include <thread> #include <thread>
#include <utility>
#include <vector> #include <vector>
#ifndef WIN32 #ifndef WIN32
#include <signal.h> #include <signal.h>
@ -154,10 +155,10 @@ struct TestArgsManager : public ArgsManager
LOCK(cs_args); LOCK(cs_args);
m_network_only_args.insert(arg); m_network_only_args.insert(arg);
} }
void SetupArgs(int argv, const char* args[]) void SetupArgs(const std::vector<std::pair<std::string, unsigned int>>& args)
{ {
for (int i = 0; i < argv; ++i) { for (const auto& arg : args) {
AddArg(args[i], "", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); AddArg(arg.first, "", arg.second, OptionsCategory::OPTIONS);
} }
} }
using ArgsManager::ReadConfigStream; using ArgsManager::ReadConfigStream;
@ -168,11 +169,15 @@ struct TestArgsManager : public ArgsManager
BOOST_AUTO_TEST_CASE(util_ParseParameters) BOOST_AUTO_TEST_CASE(util_ParseParameters)
{ {
TestArgsManager testArgs; TestArgsManager testArgs;
const char* avail_args[] = {"-a", "-b", "-ccc", "-d"}; const auto a = std::make_pair("-a", ArgsManager::ALLOW_ANY);
const auto b = std::make_pair("-b", ArgsManager::ALLOW_ANY);
const auto ccc = std::make_pair("-ccc", ArgsManager::ALLOW_ANY);
const auto d = std::make_pair("-d", ArgsManager::ALLOW_ANY);
const char *argv_test[] = {"-ignored", "-a", "-b", "-ccc=argument", "-ccc=multiple", "f", "-d=e"}; const char *argv_test[] = {"-ignored", "-a", "-b", "-ccc=argument", "-ccc=multiple", "f", "-d=e"};
std::string error; std::string error;
testArgs.SetupArgs(4, avail_args); testArgs.SetupArgs({a, b, ccc, d});
BOOST_CHECK(testArgs.ParseParameters(0, (char**)argv_test, error)); BOOST_CHECK(testArgs.ParseParameters(0, (char**)argv_test, error));
BOOST_CHECK(testArgs.GetOverrideArgs().empty() && testArgs.GetConfigArgs().empty()); BOOST_CHECK(testArgs.GetOverrideArgs().empty() && testArgs.GetConfigArgs().empty());
@ -200,11 +205,17 @@ BOOST_AUTO_TEST_CASE(util_ParseParameters)
BOOST_AUTO_TEST_CASE(util_GetBoolArg) BOOST_AUTO_TEST_CASE(util_GetBoolArg)
{ {
TestArgsManager testArgs; TestArgsManager testArgs;
const char* avail_args[] = {"-a", "-b", "-c", "-d", "-e", "-f"}; const auto a = std::make_pair("-a", ArgsManager::ALLOW_BOOL);
const auto b = std::make_pair("-b", ArgsManager::ALLOW_BOOL);
const auto c = std::make_pair("-c", ArgsManager::ALLOW_BOOL);
const auto d = std::make_pair("-d", ArgsManager::ALLOW_BOOL);
const auto e = std::make_pair("-e", ArgsManager::ALLOW_BOOL);
const auto f = std::make_pair("-f", ArgsManager::ALLOW_BOOL);
const char *argv_test[] = { const char *argv_test[] = {
"ignored", "-a", "-nob", "-c=0", "-d=1", "-e=false", "-f=true"}; "ignored", "-a", "-nob", "-c=0", "-d=1", "-e=false", "-f=true"};
std::string error; std::string error;
testArgs.SetupArgs(6, avail_args); testArgs.SetupArgs({a, b, c, d, e, f});
BOOST_CHECK(testArgs.ParseParameters(7, (char**)argv_test, error)); BOOST_CHECK(testArgs.ParseParameters(7, (char**)argv_test, error));
// Each letter should be set. // Each letter should be set.
@ -237,9 +248,10 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArgEdgeCases)
TestArgsManager testArgs; TestArgsManager testArgs;
// Params test // Params test
const char* avail_args[] = {"-foo", "-bar"}; const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_BOOL);
const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_BOOL);
const char *argv_test[] = {"ignored", "-nofoo", "-foo", "-nobar=0"}; const char *argv_test[] = {"ignored", "-nofoo", "-foo", "-nobar=0"};
testArgs.SetupArgs(2, avail_args); testArgs.SetupArgs({foo, bar});
std::string error; std::string error;
BOOST_CHECK(testArgs.ParseParameters(4, (char**)argv_test, error)); BOOST_CHECK(testArgs.ParseParameters(4, (char**)argv_test, error));
@ -308,8 +320,17 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
"iii=2\n"; "iii=2\n";
TestArgsManager test_args; TestArgsManager test_args;
const char* avail_args[] = {"-a", "-b", "-ccc", "-d", "-e", "-fff", "-ggg", "-h", "-i", "-iii"}; const auto a = std::make_pair("-a", ArgsManager::ALLOW_BOOL);
test_args.SetupArgs(10, avail_args); const auto b = std::make_pair("-b", ArgsManager::ALLOW_BOOL);
const auto ccc = std::make_pair("-ccc", ArgsManager::ALLOW_STRING);
const auto d = std::make_pair("-d", ArgsManager::ALLOW_STRING);
const auto e = std::make_pair("-e", ArgsManager::ALLOW_ANY);
const auto fff = std::make_pair("-fff", ArgsManager::ALLOW_BOOL);
const auto ggg = std::make_pair("-ggg", ArgsManager::ALLOW_BOOL);
const auto h = std::make_pair("-h", ArgsManager::ALLOW_BOOL);
const auto i = std::make_pair("-i", ArgsManager::ALLOW_BOOL);
const auto iii = std::make_pair("-iii", ArgsManager::ALLOW_INT);
test_args.SetupArgs({a, b, ccc, d, e, fff, ggg, h, i, iii});
test_args.ReadConfigString(str_config); test_args.ReadConfigString(str_config);
// expectation: a, b, ccc, d, fff, ggg, h, i end up in map // expectation: a, b, ccc, d, fff, ggg, h, i end up in map
@ -507,8 +528,9 @@ BOOST_AUTO_TEST_CASE(util_GetArg)
BOOST_AUTO_TEST_CASE(util_GetChainName) BOOST_AUTO_TEST_CASE(util_GetChainName)
{ {
TestArgsManager test_args; TestArgsManager test_args;
const char* avail_args[] = {"-testnet", "-regtest"}; const auto testnet = std::make_pair("-testnet", ArgsManager::ALLOW_BOOL);
test_args.SetupArgs(2, avail_args); const auto regtest = std::make_pair("-regtest", ArgsManager::ALLOW_BOOL);
test_args.SetupArgs({testnet, regtest});
const char* argv_testnet[] = {"cmd", "-testnet"}; const char* argv_testnet[] = {"cmd", "-testnet"};
const char* argv_regtest[] = {"cmd", "-regtest"}; const char* argv_regtest[] = {"cmd", "-regtest"};