1 /*
2 Copyright 2020-2022 René Ferdinand Rivera Morell
3 Distributed under the Boost Software License, Version 1.0.
4 (See accompanying file LICENSE.txt or copy at
5 http://www.boost.org/LICENSE_1_0.txt)
6 */
7 
8 #include "mini_test.hpp"
9 #include <lyra/lyra.hpp>
10 #include <vector>
11 
main()12 int main()
13 {
14 	using namespace lyra;
15 	bfg::mini_test::scope test;
16 
17 	{
18 		lyra::main()("-o", -1)(
19 			args { "main", "-o", "5" },
20 			[&](lyra::main & m)
21 			{
22 				test(REQUIRE(int(m["-o"]) == 5));
23 				return 0;
24 			});
25 	}
26 	{
27 		lyra::main()("-o", -1)(
28 			args { "main" },
29 			[&](lyra::main & m)
30 			{
31 				test(REQUIRE(int(m["-o"]) == -1));
32 				return 0;
33 			});
34 	}
35 	{
36 		lyra::main()("-o", -1.0f)(
37 			args { "main", "-o", "5.0" },
38 			[&](lyra::main & m)
39 			{
40 				test(REQUIRE(int(m["-o"]) == 5));
41 				return 0;
42 			});
43 	}
44 	{
45 		lyra::main()("-o", -1.0f)(
46 			args { "main" },
47 			[&](lyra::main & m)
48 			{
49 				test(REQUIRE(int(m["-o"]) == -1));
50 				return 0;
51 			});
52 	}
53 	{
54 		lyra::main()("-o", std::vector<int>())(
55 			args { "main" },
56 			[&](lyra::main & m)
57 			{
58 				std::vector<int> o = m["-o"];
59 				test
60 					(REQUIRE(o.size() == 0));
61 				return 0;
62 			});
63 	}
64 	{
65 		lyra::main()("-o", std::vector<int>())(
66 			args { "main", "-o0" },
67 			[&](lyra::main & m)
68 			{
69 				std::vector<int> o = m["-o"];
70 				test
71 					(REQUIRE(o.size() == 1))
72 					(REQUIRE(o[0] == 0));
73 				return 0;
74 			});
75 	}
76 	{
77 		lyra::main()("-o", std::vector<int>())(
78 			args { "main", "-o0", "-o1", "-o2" },
79 			[&](lyra::main & m)
80 			{
81 				std::vector<int> o = m["-o"];
82 				test
83 					(REQUIRE(o.size() == 3))
84 					(REQUIRE(o[0] == 0))
85 					(REQUIRE(o[1] == 1))
86 					(REQUIRE(o[2] == 2));
87 				return 0;
88 			});
89 	}
90 	{
91 		lyra::main()("-o", "vvv")(
92 			args { "main", "-o", "thing" },
93 			[&](lyra::main & m)
94 			{
95 				test(REQUIRE(std::string(m["-o"]) == "thing"));
96 				return 0;
97 			});
98 	}
99 
100 	return test;
101 }
102