Unit tests for the GetArg() methods
[novacoin.git] / src / test / getarg_tests.cpp
1 #include <boost/algorithm/string.hpp>
2 #include <boost/foreach.hpp>
3 #include <boost/test/unit_test.hpp>
4
5 #include "util.h"
6
7 BOOST_AUTO_TEST_SUITE(getarg_tests)
8
9 static void
10 ResetArgs(const std::string& strArg)
11 {
12     std::vector<std::string> vecArg;
13     boost::split(vecArg, strArg, boost::is_space(), boost::token_compress_on);
14
15     // Insert dummy executable name:
16     vecArg.insert(vecArg.begin(), "testbitcoin");
17
18     // Convert to char*:
19     std::vector<const char*> vecChar;
20     BOOST_FOREACH(std::string& s, vecArg)
21         vecChar.push_back(s.c_str());
22
23     ParseParameters(vecChar.size(), &vecChar[0]);
24 }
25
26 BOOST_AUTO_TEST_CASE(boolarg)
27 {
28     ResetArgs("-foo");
29     BOOST_CHECK(GetBoolArg("-foo"));
30     BOOST_CHECK(GetBoolArg("-foo", false));
31     BOOST_CHECK(GetBoolArg("-foo", true));
32
33     BOOST_CHECK(!GetBoolArg("-fo"));
34     BOOST_CHECK(!GetBoolArg("-fo", false));
35     BOOST_CHECK(GetBoolArg("-fo", true));
36
37     BOOST_CHECK(!GetBoolArg("-fooo"));
38     BOOST_CHECK(!GetBoolArg("-fooo", false));
39     BOOST_CHECK(GetBoolArg("-fooo", true));
40
41     ResetArgs("-foo=0");
42     BOOST_CHECK(!GetBoolArg("-foo"));
43     BOOST_CHECK(!GetBoolArg("-foo", false));
44     BOOST_CHECK(!GetBoolArg("-foo", true));
45
46     ResetArgs("-foo=1");
47     BOOST_CHECK(GetBoolArg("-foo"));
48     BOOST_CHECK(GetBoolArg("-foo", false));
49     BOOST_CHECK(GetBoolArg("-foo", true));
50 }
51
52 BOOST_AUTO_TEST_CASE(stringarg)
53 {
54     ResetArgs("");
55     BOOST_CHECK_EQUAL(GetArg("-foo", ""), "");
56     BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "eleven");
57
58     ResetArgs("-foo -bar");
59     BOOST_CHECK_EQUAL(GetArg("-foo", ""), "");
60     BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "");
61
62     ResetArgs("-foo=");
63     BOOST_CHECK_EQUAL(GetArg("-foo", ""), "");
64     BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "");
65
66     ResetArgs("-foo=11");
67     BOOST_CHECK_EQUAL(GetArg("-foo", ""), "11");
68     BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "11");
69
70     ResetArgs("-foo=eleven");
71     BOOST_CHECK_EQUAL(GetArg("-foo", ""), "eleven");
72     BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "eleven");
73
74 }
75
76 BOOST_AUTO_TEST_CASE(intarg)
77 {
78     ResetArgs("");
79     BOOST_CHECK_EQUAL(GetArg("-foo", 11), 11);
80     BOOST_CHECK_EQUAL(GetArg("-foo", 0), 0);
81
82     ResetArgs("-foo -bar");
83     BOOST_CHECK_EQUAL(GetArg("-foo", 11), 0);
84     BOOST_CHECK_EQUAL(GetArg("-bar", 11), 0);
85
86     ResetArgs("-foo=11 -bar=12");
87     BOOST_CHECK_EQUAL(GetArg("-foo", 0), 11);
88     BOOST_CHECK_EQUAL(GetArg("-bar", 11), 12);
89
90     ResetArgs("-foo=NaN -bar=NotANumber");
91     BOOST_CHECK_EQUAL(GetArg("-foo", 1), 0);
92     BOOST_CHECK_EQUAL(GetArg("-bar", 11), 0);
93 }
94
95 BOOST_AUTO_TEST_SUITE_END()