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 "mini_test.hpp"
9 #include <lyra/lyra.hpp>
10 #include <iostream>
11
12 template <typename Value>
test_val(bfg::mini_test::scope & test,Value test_value,Value default_value=Value ())13 void test_val(bfg::mini_test::scope& test, Value test_value, Value default_value = Value())
14 {
15 using namespace lyra;
16 std::string test_value_s;
17 lyra::detail::to_string(test_value, test_value_s);
18 {
19 Value arg_value { default_value };
20 auto cli = lyra::cli() | arg(arg_value, "value");
21 char* args[] = { (char*)"TestApp", (char*)test_value_s.c_str() };
22 auto result = cli.parse({ 2, args });
23 if (!result) std::cerr << result.message() << '\n';
24 test(REQUIRE(result));
25 test(arg_value == test_value, "arg_value == " + test_value_s, CONTEXT);
26 }
27 {
28 Value arg_value { default_value };
29 auto cli = lyra::cli() | opt(arg_value, "value").name("--value");
30 char* args[]
31 = { (char*)"TestApp", (char*)"--value", (char*)test_value_s.c_str() };
32 auto result = cli.parse({ 3, args });
33 if (!result) std::cerr << result.message() << '\n';
34 test(REQUIRE(result));
35 test(arg_value == test_value, "arg_value == " + test_value_s, CONTEXT);
36 }
37 {
38 Value arg_value { default_value };
39 auto cli = lyra::cli() | opt(arg_value, "value").name("--value");
40 std::string value_arg = "--value=" + test_value_s;
41 char* args[]
42 = { (char*)"TestApp", (char*)value_arg.c_str() };
43 auto result = cli.parse({ 2, args });
44 if (!result) std::cerr << result.message() << '\n';
45 test(REQUIRE(result));
46 test(arg_value == test_value, "arg_value == " + test_value_s, CONTEXT);
47 }
48 }
49
main()50 int main()
51 {
52 using namespace lyra;
53 bfg::mini_test::scope test;
54
55 test_val(test, unsigned(1));
56 test_val(test, int(1));
57 test_val(test, int(-1));
58
59 return test;
60 }
61