blob: ed02b4a8cd1a5db737fafb7fe3a551d206404676 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#include "wandac/cli.hpp"
#include <catch2/catch_all.hpp>
#include <catch2/catch_test_macros.hpp>
#include <lyra/args.hpp>
#include <sstream>
#include <string>
using namespace std::string_literals;
namespace wanda::tests::app::wandac
{
template<typename ...Ts>
auto make_argument_list(Ts const & ... args) -> lyra::args
{
return {"wanda"s, static_cast<std::string>(args)...};
}
SCENARIO("Empty argument list parsing", "[app][client][cli]")
{
GIVEN("A fresh cli instance and error stream")
{
auto cli = ::wandac::cli{};
auto error_stream = std::ostringstream{};
WHEN("invoking parse without any program arguments")
{
auto result = cli.parse(make_argument_list(), error_stream);
THEN("the return value is false") { REQUIRE_FALSE(result); }
THEN("the error stream is not empty") { REQUIRE_FALSE(error_stream.view().empty()); }
THEN("the help flag is not set") { REQUIRE_FALSE(cli.help); }
THEN("the command is empty") { REQUIRE(cli.command.empty()); }
}
}
}
SCENARIO("Valid argument list parsing", "[app][client][cli]")
{
GIVEN("A fresh cli instance and error stream")
{
auto cli = ::wandac::cli{};
auto error_stream = std::ostringstream{};
AND_GIVEN("'-h' in the argument list")
{
auto argument_list = make_argument_list("-h");
WHEN("invoking parse without additional arguments")
{
auto result = cli.parse(argument_list, error_stream);
THEN("the return value is true") { REQUIRE(result); }
THEN("the error stream is empty") { REQUIRE(error_stream.view().empty()); }
THEN("the help flag is set") { REQUIRE(cli.help); }
THEN("the command is empty") { REQUIRE(cli.command.empty()); }
}
}
AND_GIVEN("'change' in the argument list")
{
auto argument_list = make_argument_list("change");
WHEN("invoking parse without additional arguments")
{
auto result = cli.parse(argument_list, error_stream);
THEN("the return valis is true") { REQUIRE(result); }
THEN("the error stream is empty") { REQUIRE(error_stream.view().empty()); }
THEN("the help flag is not set") { REQUIRE_FALSE(cli.help); }
THEN("the command is not empty") { REQUIRE_FALSE(cli.command.empty()); }
THEN("the command is 'change'") { REQUIRE(cli.command == "change"); }
}
}
}
}
} // namespace wanda::tests::app::wandac
|