1 #include <boost/algorithm/string.hpp>
2 #include <boost/foreach.hpp>
3 #include <boost/test/unit_test.hpp>
7 BOOST_AUTO_TEST_SUITE(getarg_tests)
10 ResetArgs(const std::string& strArg)
12 std::vector<std::string> vecArg;
13 boost::split(vecArg, strArg, boost::is_space(), boost::token_compress_on);
15 // Insert dummy executable name:
16 vecArg.insert(vecArg.begin(), "testbitcoin");
19 std::vector<const char*> vecChar;
20 BOOST_FOREACH(std::string& s, vecArg)
21 vecChar.push_back(s.c_str());
23 ParseParameters(vecChar.size(), &vecChar[0]);
26 BOOST_AUTO_TEST_CASE(boolarg)
29 BOOST_CHECK(GetBoolArg("-foo"));
30 BOOST_CHECK(GetBoolArg("-foo", false));
31 BOOST_CHECK(GetBoolArg("-foo", true));
33 BOOST_CHECK(!GetBoolArg("-fo"));
34 BOOST_CHECK(!GetBoolArg("-fo", false));
35 BOOST_CHECK(GetBoolArg("-fo", true));
37 BOOST_CHECK(!GetBoolArg("-fooo"));
38 BOOST_CHECK(!GetBoolArg("-fooo", false));
39 BOOST_CHECK(GetBoolArg("-fooo", true));
42 BOOST_CHECK(!GetBoolArg("-foo"));
43 BOOST_CHECK(!GetBoolArg("-foo", false));
44 BOOST_CHECK(!GetBoolArg("-foo", true));
47 BOOST_CHECK(GetBoolArg("-foo"));
48 BOOST_CHECK(GetBoolArg("-foo", false));
49 BOOST_CHECK(GetBoolArg("-foo", true));
51 // New 0.6 feature: auto-map -nosomething to !-something:
53 BOOST_CHECK(!GetBoolArg("-foo"));
54 BOOST_CHECK(!GetBoolArg("-foo", false));
55 BOOST_CHECK(!GetBoolArg("-foo", true));
57 ResetArgs("-nofoo=1");
58 BOOST_CHECK(!GetBoolArg("-foo"));
59 BOOST_CHECK(!GetBoolArg("-foo", false));
60 BOOST_CHECK(!GetBoolArg("-foo", true));
62 ResetArgs("-foo -nofoo"); // -foo should win
63 BOOST_CHECK(GetBoolArg("-foo"));
64 BOOST_CHECK(GetBoolArg("-foo", false));
65 BOOST_CHECK(GetBoolArg("-foo", true));
67 ResetArgs("-foo=1 -nofoo=1"); // -foo should win
68 BOOST_CHECK(GetBoolArg("-foo"));
69 BOOST_CHECK(GetBoolArg("-foo", false));
70 BOOST_CHECK(GetBoolArg("-foo", true));
72 ResetArgs("-foo=0 -nofoo=0"); // -foo should win
73 BOOST_CHECK(!GetBoolArg("-foo"));
74 BOOST_CHECK(!GetBoolArg("-foo", false));
75 BOOST_CHECK(!GetBoolArg("-foo", true));
77 // New 0.6 feature: treat -- same as -:
79 BOOST_CHECK(GetBoolArg("-foo"));
80 BOOST_CHECK(GetBoolArg("-foo", false));
81 BOOST_CHECK(GetBoolArg("-foo", true));
83 ResetArgs("--nofoo=1");
84 BOOST_CHECK(!GetBoolArg("-foo"));
85 BOOST_CHECK(!GetBoolArg("-foo", false));
86 BOOST_CHECK(!GetBoolArg("-foo", true));
90 BOOST_AUTO_TEST_CASE(stringarg)
93 BOOST_CHECK_EQUAL(GetArg("-foo", ""), "");
94 BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "eleven");
96 ResetArgs("-foo -bar");
97 BOOST_CHECK_EQUAL(GetArg("-foo", ""), "");
98 BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "");
101 BOOST_CHECK_EQUAL(GetArg("-foo", ""), "");
102 BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "");
104 ResetArgs("-foo=11");
105 BOOST_CHECK_EQUAL(GetArg("-foo", ""), "11");
106 BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "11");
108 ResetArgs("-foo=eleven");
109 BOOST_CHECK_EQUAL(GetArg("-foo", ""), "eleven");
110 BOOST_CHECK_EQUAL(GetArg("-foo", "eleven"), "eleven");
114 BOOST_AUTO_TEST_CASE(intarg)
117 BOOST_CHECK_EQUAL(GetArg("-foo", 11), 11);
118 BOOST_CHECK_EQUAL(GetArg("-foo", 0), 0);
120 ResetArgs("-foo -bar");
121 BOOST_CHECK_EQUAL(GetArg("-foo", 11), 0);
122 BOOST_CHECK_EQUAL(GetArg("-bar", 11), 0);
124 ResetArgs("-foo=11 -bar=12");
125 BOOST_CHECK_EQUAL(GetArg("-foo", 0), 11);
126 BOOST_CHECK_EQUAL(GetArg("-bar", 11), 12);
128 ResetArgs("-foo=NaN -bar=NotANumber");
129 BOOST_CHECK_EQUAL(GetArg("-foo", 1), 0);
130 BOOST_CHECK_EQUAL(GetArg("-bar", 11), 0);
133 BOOST_AUTO_TEST_CASE(doubledash)
136 BOOST_CHECK_EQUAL(GetBoolArg("-foo"), true);
138 ResetArgs("--foo=verbose --bar=1");
139 BOOST_CHECK_EQUAL(GetArg("-foo", ""), "verbose");
140 BOOST_CHECK_EQUAL(GetArg("-bar", 0), 1);
143 BOOST_AUTO_TEST_CASE(boolargno)
146 BOOST_CHECK(!GetBoolArg("-foo"));
147 BOOST_CHECK(!GetBoolArg("-foo", true));
148 BOOST_CHECK(!GetBoolArg("-foo", false));
150 ResetArgs("-nofoo=1");
151 BOOST_CHECK(!GetBoolArg("-foo"));
152 BOOST_CHECK(!GetBoolArg("-foo", true));
153 BOOST_CHECK(!GetBoolArg("-foo", false));
155 ResetArgs("-nofoo=0");
156 BOOST_CHECK(GetBoolArg("-foo"));
157 BOOST_CHECK(GetBoolArg("-foo", true));
158 BOOST_CHECK(GetBoolArg("-foo", false));
160 ResetArgs("-foo --nofoo");
161 BOOST_CHECK(GetBoolArg("-foo"));
163 ResetArgs("-nofoo -foo"); // foo always wins:
164 BOOST_CHECK(GetBoolArg("-foo"));
167 BOOST_AUTO_TEST_SUITE_END()