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 <string>
#include <utility>
#include <vector>
#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));
}
static void SetupArgs(const std::vector<std::string>& args)
static void SetupArgs(const std::vector<std::pair<std::string, unsigned int>>& args)
{
gArgs.ClearArgs();
for (const std::string& arg : args) {
gArgs.AddArg(arg, "", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
for (const auto& arg : args) {
gArgs.AddArg(arg.first, "", arg.second, OptionsCategory::OPTIONS);
}
}
BOOST_AUTO_TEST_CASE(boolarg)
{
SetupArgs({"-foo"});
const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_BOOL);
SetupArgs({foo});
ResetArgs("-foo");
BOOST_CHECK(gArgs.GetBoolArg("-foo", false));
BOOST_CHECK(gArgs.GetBoolArg("-foo", true));
@ -95,7 +97,9 @@ BOOST_AUTO_TEST_CASE(boolarg)
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("");
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", ""), "");
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", "eleven"), "eleven");
@ -120,7 +124,9 @@ BOOST_AUTO_TEST_CASE(stringarg)
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("");
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", 11), 11);
BOOST_CHECK_EQUAL(gArgs.GetArg("-foo", 0), 0);
@ -140,7 +146,9 @@ BOOST_AUTO_TEST_CASE(intarg)
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");
BOOST_CHECK_EQUAL(gArgs.GetBoolArg("-foo", false), true);
@ -151,7 +159,9 @@ BOOST_AUTO_TEST_CASE(doubledash)
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");
BOOST_CHECK(!gArgs.GetBoolArg("-foo", true));
BOOST_CHECK(!gArgs.GetBoolArg("-foo", false));

View file

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