annotate modules/options/test/main.cpp @ 618:1ae8106369e5

Options: initial reimport, closes #705
author David Demelier <markand@malikania.fr>
date Tue, 26 Sep 2017 09:50:02 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
618
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- main test file for OptionParser
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2015 David Demelier <markand@malikania.fr>
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define BOOST_TEST_MODULE "Options"
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <boost/test/unit_test.hpp>
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <options.hpp>
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 /*
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 * Short options.
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 * ------------------------------------------------------------------
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 */
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 BOOST_AUTO_TEST_SUITE(short_options)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 BOOST_AUTO_TEST_CASE(simple)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 std::vector<std::string> args{"-a", "-b"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 auto pack = option::read(args, {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 { "-a", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 { "-b", false }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 });
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 BOOST_TEST(pack.size() == 2U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 BOOST_TEST(args.size() == 0U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 BOOST_TEST(pack.count("-a") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 BOOST_TEST(pack.count("-b") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 BOOST_AUTO_TEST_CASE(simple_arg)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 std::vector<std::string> args{"-v", "-cfoo.conf"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 auto pack = option::read(args, {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 { "-v", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 { "-c", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 });
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 BOOST_TEST(pack.size() == 2U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 BOOST_TEST(args.size() == 0U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 BOOST_TEST(pack.count("-v") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 BOOST_TEST(pack.find("-c")->second == "foo.conf");
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 BOOST_AUTO_TEST_CASE(spaced_arg)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 std::vector<std::string> args{"-v", "-c", "foo.conf"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 auto pack = option::read(args, {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 { "-v", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 { "-c", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 });
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 BOOST_TEST(pack.size() == 2U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 BOOST_TEST(args.size() == 0U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 BOOST_TEST(pack.count("-v") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 BOOST_TEST(pack.find("-c")->second == "foo.conf");
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 BOOST_AUTO_TEST_CASE(compacted)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 std::vector<std::string> args{"-abc"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 auto pack = option::read(args, {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 { "-a", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 { "-b", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 { "-c", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 });
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 BOOST_TEST(pack.size() == 3U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 BOOST_TEST(args.size() == 0U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 BOOST_TEST(pack.count("-a") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 BOOST_TEST(pack.count("-b") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 BOOST_TEST(pack.count("-c") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 BOOST_AUTO_TEST_CASE(compacted_arg)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 std::vector<std::string> args{"-vdcfoo.conf"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 auto pack = option::read(args, {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 { "-v", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 { "-d", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 { "-c", true },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 });
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 BOOST_TEST(pack.size() == 3U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 BOOST_TEST(args.size() == 0U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 BOOST_TEST(pack.count("-v") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 BOOST_TEST(pack.count("-d") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 BOOST_TEST(pack.find("-c")->second == "foo.conf");
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 BOOST_AUTO_TEST_SUITE_END()
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 /*
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 * Long options.
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 * ------------------------------------------------------------------
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 */
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
116
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 BOOST_AUTO_TEST_SUITE(long_options)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 BOOST_AUTO_TEST_CASE(simple)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 std::vector<std::string> args{"--fullscreen"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 auto pack = option::read(args, {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 { "--verbose", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 { "--fullscreen", false }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 });
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 BOOST_TEST(pack.size() == 1U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 BOOST_TEST(args.size() == 0U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 BOOST_TEST(pack.count("--fullscreen") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
132
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 BOOST_AUTO_TEST_CASE(simple_arg)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 std::vector<std::string> args{"--config", "config.conf", "--level", "2"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 auto pack = option::read(args, {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 { "--config", true },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 { "--level", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 });
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
141
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 BOOST_TEST(pack.size() == 2U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 BOOST_TEST(args.size() == 0U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 BOOST_TEST(pack.find("--config")->second == "config.conf");
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 BOOST_TEST(pack.find("--level")->second == "2");
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
147
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 BOOST_AUTO_TEST_SUITE_END()
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 /*
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 * Errors.
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 * ------------------------------------------------------------------
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 */
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 BOOST_AUTO_TEST_SUITE(errors)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
156
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 BOOST_AUTO_TEST_CASE(stop)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 std::vector<std::string> args{"-v", "install", "-y", "irccd"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 std::vector<std::string> expected{"install", "-y", "irccd"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
161
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 auto pack = option::read(args, {{ "-v", false }});
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
163
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 BOOST_TEST(pack.size() == 1U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 BOOST_TEST(args.size() == 3U);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 BOOST_TEST(pack.count("-v") != 0);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 BOOST_TEST(expected == args);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 BOOST_AUTO_TEST_CASE(missing_short_arg)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 std::vector<std::string> args{"-c"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 BOOST_REQUIRE_THROW(option::read(args, {{ "-c", true }}), option::missing_value);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 BOOST_AUTO_TEST_CASE(missing_short_arg2)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 const option::options options{
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 { "-v", false },
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 { "-c", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 };
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
183
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 std::vector<std::string> args{"-vc"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 BOOST_REQUIRE_THROW(option::read(args, options), option::missing_value);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 BOOST_AUTO_TEST_CASE(missing_long_arg)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 const option::options options{
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 { "--config", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 };
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 std::vector<std::string> args{"--config"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
196
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 BOOST_REQUIRE_THROW(option::read(args, options), option::missing_value);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
199
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 BOOST_AUTO_TEST_CASE(invalid_option)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 const option::options options{
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 { "-v", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 };
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
205
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 std::vector<std::string> args{"-x"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
207
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 BOOST_REQUIRE_THROW(option::read(args, options), option::invalid_option);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
210
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 BOOST_AUTO_TEST_CASE(invalid_option2)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 const option::options options{
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 { "--verbose", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 };
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
216
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 std::vector<std::string> args{"--destroy"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
218
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 BOOST_REQUIRE_THROW(option::read(args, options), option::invalid_option);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
221
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 BOOST_AUTO_TEST_CASE(invalid_option3)
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 {
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 const option::options options{
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 { "-x", true }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 };
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
227
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 std::vector<std::string> args{"-vx"};
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
229
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 BOOST_REQUIRE_THROW(option::read(args, options), option::invalid_option);
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 }
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
232
1ae8106369e5 Options: initial reimport, closes #705
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 BOOST_AUTO_TEST_SUITE_END()