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
main(int,const char **)11 int main(int, const char **)
12 {
13 using namespace lyra;
14 bfg::mini_test::scope test;
15
16 {
17 auto cli = lyra::cli()
18 | command("one")
19 | command("two");
20 test(REQUIRE(cli.parse({ "TestApp", "one" })));
21 test(REQUIRE(cli.parse({ "TestApp", "two" })));
22 test(REQUIRE(cli.parse({ "TestApp" })));
23 }
24 {
25 std::string one = "one";
26 int two = 2;
27 auto cli = lyra::cli()
28 | command("one").add_argument(arg(one, "one"))
29 | command("two").add_argument(arg(two, "two"));
30 test(REQUIRE(cli.parse({ "TestApp", "one" })));
31 test(REQUIRE(cli.parse({ "TestApp", "two" })));
32 test(REQUIRE(cli.parse({ "TestApp", "one", "ONE" })));
33 test(REQUIRE(cli.parse({ "TestApp", "two", "3" })));
34 test(REQUIRE(!cli.parse({ "TestApp", "one", "OnE", "TwO" })));
35 test(REQUIRE(!cli.parse({ "TestApp", "two", "3", "4" })));
36 test(REQUIRE(cli.parse({ "TestApp" })));
37 }
38 {
39 bool a = false;
40 bool b = false;
41 bool c = false;
42 bool d = false;
43 auto cli = lyra::cli()
44 | command("one")
45 .add_argument(opt(a, "a").name("--a").optional())
46 .add_argument(opt(b, "b").name("--b").optional())
47 | command("two")
48 .add_argument(opt(c, "c").name("--c").optional())
49 .add_argument(opt(d, "d").name("--d").optional())
50 ;
51 test(REQUIRE(cli.parse({ "TestApp", "one", "--a=1" })));
52 test(REQUIRE(cli.parse({ "TestApp", "two", "--c=1" })));
53 test(REQUIRE(cli.parse({ "TestApp" })));
54 }
55
56 return test;
57 }
58