1 /*
2 Copyright 2019-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 <lyra/lyra.hpp>
9 #include <vector>
10 #include "mini_test.hpp"
11
main()12 int main()
13 {
14 using namespace lyra;
15 bfg::mini_test::scope test;
16
17 {
18 int number = 1;
19 auto cli = lyra::cli()
20 | opt(number, "number")["--number"];
21 auto result = cli.parse({ "TestApp", "--number", "42" });
22 test
23 (REQUIRE(result))
24 (REQUIRE(number == 42));
25 }
26 {
27 std::vector<int> numbers;
28 auto cli = lyra::cli() |
29 opt(numbers, "number")["--number"].cardinality(0);
30 auto result = cli.parse({ "TestApp", "--number", "42", "--number", "33" });
31 test
32 (REQUIRE(result))
33 (REQUIRE(numbers[0] == 42))
34 (REQUIRE(numbers[1] == 33));
35 }
36 {
37 std::vector<int> numbers;
38 auto cli = lyra::cli() |
39 opt(numbers, "number")["--number"].cardinality(0, 2);
40 {
41 auto result = cli.parse({ "TestApp" });
42 test
43 (REQUIRE(result))
44 (REQUIRE(numbers.size() == 0));
45 }
46 {
47 auto result = cli.parse({ "TestApp", "--number", "42", "--number", "33" });
48 test
49 (REQUIRE(result))
50 (REQUIRE(numbers[0] == 42))
51 (REQUIRE(numbers[1] == 33));
52 }
53 {
54 auto result = cli.parse({ "TestApp", "--number", "42", "--number", "33", "--number", "1" });
55 test
56 (REQUIRE(!result));
57 }
58 }
59 {
60 std::vector<int> numbers;
61 auto cli = lyra::cli() |
62 opt(numbers, "number")["--number"].cardinality(2, 3);
63 {
64 auto result = cli.parse({ "TestApp", "--number", "42", "--number", "33", "--number", "1" });
65 test
66 (REQUIRE(result));
67 }
68 {
69 auto result = cli.parse({ "TestApp", "--number", "42" });
70 test
71 (REQUIRE(!result));
72 }
73 }
74 {
75 std::vector<int> numbers;
76 auto cli = lyra::cli() |
77 arg(numbers, "number").required();
78 {
79 auto result = cli.parse({ "TestApp", "42", "33", "1" });
80 test
81 (REQUIRE(result));
82 }
83 {
84 auto result = cli.parse({ "TestApp" });
85 test
86 (REQUIRE(!result));
87 }
88 }
89
90 return test;
91 }
92