Commit 232c792bae2b494493f346cdab0890368b300412

Authored by Henry Fredrick Schreiner
Committed by Henry Schreiner
1 parent 0959430e

Adding examples to tests

examples/CMakeLists.txt
... ... @@ -15,11 +15,71 @@ function(add_cli_exe T)
15 15 endfunction()
16 16  
17 17 add_cli_exe(simple simple.cpp)
  18 +add_test(NAME simple_basic COMMAND simple)
  19 +add_test(NAME simple_all COMMAND simple -f filename.txt -c 12 --flag --flag -d 1.2)
  20 +set_property(TEST simple_all PROPERTY PASS_REGULAR_EXPRESSION
  21 + "Working on file: filename.txt, direct count: 1, opt count: 1"
  22 + "Working on count: 12, direct count: 1, opt count: 1"
  23 + "Received flag: 2 (2) times"
  24 + "Some value: 1.2")
  25 +
  26 +
18 27 add_cli_exe(subcommands subcommands.cpp)
  28 +add_test(NAME subcommands_none COMMAND subcommands)
  29 +set_property(TEST subcommands_none PROPERTY
  30 + PASS_REGULAR_EXPRESSION "A subcommand is required")
  31 +add_test(NAME subcommands_all COMMAND subcommands --random start --file name stop --count)
  32 +set_property(TEST subcommands_all PROPERTY PASS_REGULAR_EXPRESSION
  33 + "Working on --file from start: name"
  34 + "Working on --count from stop: 1, direct count: 1"
  35 + "Count of --random flag: 1"
  36 + "Subcommand: start"
  37 + "Subcommand: stop")
  38 +
19 39 add_cli_exe(groups groups.cpp)
  40 +add_test(NAME groups_none COMMAND groups)
  41 +set_property(TEST groups_none PROPERTY PASS_REGULAR_EXPRESSION
  42 + "This is a timer:"
  43 + "--file is required"
  44 + "Run with --help for more information.")
  45 +add_test(NAME groups_all COMMAND groups --file this --count --count -d 1.2)
  46 +set_property(TEST groups_all PROPERTY PASS_REGULAR_EXPRESSION
  47 + "This is a timer:"
  48 + "Working on file: this, direct count: 1, opt count: 1"
  49 + "Working on count: 2, direct count: 2, opt count: 2"
  50 + "Some value: 1.2")
  51 +
20 52 add_cli_exe(inter_argument_order inter_argument_order.cpp)
  53 +add_test(NAME inter_argument_order COMMAND inter_argument_order --foo 1 2 3 --x --bar 4 5 6 --z --foo 7 8)
  54 +set_property(TEST inter_argument_order PROPERTY PASS_REGULAR_EXPRESSION
  55 + [=[foo : 1
  56 +foo : 2
  57 +foo : 3
  58 +bar : 4
  59 +bar : 5
  60 +bar : 6
  61 +foo : 7
  62 +foo : 8]=])
  63 +
21 64 add_cli_exe(prefix_command prefix_command.cpp)
  65 +add_test(NAME prefix_command COMMAND prefix_command -v 3 2 1 -- other one two 3)
  66 +set_property(TEST prefix_command PROPERTY PASS_REGULAR_EXPRESSION
  67 + "Prefix: 3 : 2 : 1"
  68 + "Remaining commands: -- other one two 3")
  69 +
22 70 add_cli_exe(enum enum.cpp)
  71 +add_test(NAME enum_pass COMMAND enum -l 1)
  72 +add_test(NAME enum_fail COMMAND enum -l 4)
  73 +set_property(TEST enum_fail PROPERTY PASS_REGULAR_EXPRESSION
  74 + "Could not convert: -l,--level = 4")
  75 +
23 76 add_cli_exe(modhelp modhelp.cpp)
  77 +add_test(NAME modhelp COMMAND modhelp -a test -h)
  78 +set_property(TEST modhelp PROPERTY PASS_REGULAR_EXPRESSION
  79 + "Option -a string in help: test")
24 80  
25 81 add_subdirectory(subcom_in_files)
  82 +add_test(NAME subcom_in_files COMMAND subcommand_main subcommand_a -f this.txt --with-foo)
  83 +set_property(TEST subcom_in_files PROPERTY PASS_REGULAR_EXPRESSION
  84 + "Working on file: this\.txt"
  85 + "Using foo!")
... ...
examples/inter_argument_order.cpp
... ... @@ -5,15 +5,15 @@
5 5 #include <algorithm>
6 6  
7 7 int main(int argc, char **argv) {
8   - CLI::App app;
  8 + CLI::App app{"An app to practice mixing unlimited arguments, but still recover the original order."};
9 9  
10 10 std::vector<int> foos;
11   - auto foo = app.add_option("--foo,-f", foos);
  11 + auto foo = app.add_option("--foo,-f", foos, "Some unlimited argument");
12 12  
13 13 std::vector<int> bars;
14   - auto bar = app.add_option("--bar", bars);
  14 + auto bar = app.add_option("--bar", bars, "Some unlimited arggument");
15 15  
16   - app.add_flag("--z,--x"); // Random other flags
  16 + app.add_flag("--z,--x", "Random other flags");
17 17  
18 18 // Standard parsing lines (copy and paste in, or use CLI11_PARSE)
19 19 try {
... ... @@ -22,7 +22,7 @@ int main(int argc, char **argv) {
22 22 return app.exit(e);
23 23 }
24 24  
25   - // I perfer using the back and popping
  25 + // I prefer using the back and popping
26 26 std::reverse(std::begin(foos), std::end(foos));
27 27 std::reverse(std::begin(bars), std::end(bars));
28 28  
... ...
examples/modhelp.cpp
1   -// Modify the help print so that argument values are accessible
2   -// Note that this will not shortcut `->required` and other similar options
3 1  
4 2 #include "CLI/CLI.hpp"
5 3  
6 4 #include <iostream>
7 5  
8 6 int main(int argc, char **argv) {
9   - CLI::App test;
  7 + CLI::App test{R"raw(Modify the help print so that argument values are accessible.
  8 +Note that this will not shortcut `->required` and other similar options.)raw"};
10 9  
11 10 // Remove help flag because it shortcuts all processing
12 11 test.set_help_flag();
... ... @@ -22,10 +21,10 @@ int main(int argc, char **argv) {
22 21 if(*help)
23 22 throw CLI::CallForHelp();
24 23 } catch(const CLI::Error &e) {
25   - std::cout << "Option string:" << some_option << std::endl;
  24 + std::cout << "Option -a string in help: " << some_option << std::endl;
26 25 return test.exit(e);
27 26 }
28 27  
29   - std::cout << "Option string:" << some_option << std::endl;
  28 + std::cout << "Option -a string: " << some_option << std::endl;
30 29 return 0;
31 30 }
... ...
examples/prefix_command.cpp
... ... @@ -6,20 +6,18 @@ int main(int argc, char **argv) {
6 6 app.prefix_command();
7 7  
8 8 std::vector<int> vals;
9   - app.add_option("--vals,-v", vals)->expected(1);
  9 + app.add_option("--vals,-v", vals)->expected(-1);
10 10  
11 11 CLI11_PARSE(app, argc, argv);
12 12  
13 13 std::vector<std::string> more_comms = app.remaining();
14 14  
15   - std::cout << "Prefix:";
  15 + std::cout << "Prefix";
16 16 for(int v : vals)
17   - std::cout << v << ":";
  17 + std::cout << ": " << v << " ";
18 18  
19 19 std::cout << std::endl << "Remaining commands: ";
20 20  
21   - // Perfer to loop over from beginning, not "pop" order
22   - std::reverse(std::begin(more_comms), std::end(more_comms));
23 21 for(auto com : more_comms)
24 22 std::cout << com << " ";
25 23 std::cout << std::endl;
... ...
examples/simple.cpp
... ... @@ -22,7 +22,7 @@ int main(int argc, char **argv) {
22 22 << ", opt count: " << opt->count() << std::endl;
23 23 std::cout << "Working on count: " << count << ", direct count: " << app.count("--count")
24 24 << ", opt count: " << copt->count() << std::endl;
25   - std::cout << "Recieved flag: " << v << " (" << flag->count() << ") times\n";
  25 + std::cout << "Received flag: " << v << " (" << flag->count() << ") times\n";
26 26 std::cout << "Some value: " << value << std::endl;
27 27  
28 28 return 0;
... ...
examples/subcom_in_files/CMakeLists.txt
1   -add_cli_exe(main main.cpp subcommand_a.cpp subcommand_a.hpp)
  1 +add_cli_exe(subcommand_main subcommand_main.cpp subcommand_a.cpp subcommand_a.hpp)
... ...
examples/subcom_in_files/main.cpp renamed to examples/subcom_in_files/subcommand_main.cpp
examples/subcommands.cpp
... ... @@ -6,6 +6,7 @@ int main(int argc, char **argv) {
6 6 app.add_flag("--random", "Some random flag");
7 7 CLI::App *start = app.add_subcommand("start", "A great subcommand");
8 8 CLI::App *stop = app.add_subcommand("stop", "Do you really want to stop?");
  9 + app.require_subcommand(); // 1 or more
9 10  
10 11 std::string file;
11 12 start->add_option("-f,--file", file, "File name");
... ... @@ -14,10 +15,12 @@ int main(int argc, char **argv) {
14 15  
15 16 CLI11_PARSE(app, argc, argv);
16 17  
17   - std::cout << "Working on file: " << file << ", direct count: " << start->count("--file") << std::endl;
18   - std::cout << "Working on count: " << s->count() << ", direct count: " << stop->count("--count") << std::endl;
  18 + std::cout << "Working on --file from start: " << file << std::endl;
  19 + std::cout << "Working on --count from stop: " << s->count() << ", direct count: " << stop->count("--count")
  20 + << std::endl;
  21 + std::cout << "Count of --random flag: " << app.count("--random") << std::endl;
19 22 for(auto subcom : app.get_subcommands())
20   - std::cout << "Subcommand:" << subcom->get_name() << std::endl;
  23 + std::cout << "Subcommand: " << subcom->get_name() << std::endl;
21 24  
22 25 return 0;
23 26 }
... ...