Mercurial > code
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 |
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() |