| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- //
- // logging_test.cpp
- // program_args-test
- //
- // Created by Sam Jaffe on 2/16/21.
- //
- #define PROGRAM_ARGS_NOEXIT_ON_HELP
- #include "program_args/arguments.h"
- #include "scoped_buffer_capture.h"
- #include "xcode_gtest_helper.h"
- using testing::HasSubstr;
- using testing::Not;
- template <typename T, size_t N> static T parse(char const * const (&argv)[N]) {
- return T(N, argv);
- }
- template <typename T> auto usage() {
- scoped_buffer_capture_t cap_cout(std::cout);
- parse<T>({"", "--help"});
- return cap_cout.str();
- }
- struct ArgNamesTest : program::Arguments<ArgNamesTest> {
- using Arguments::Arguments;
- bool dry_run = flag("dry-run");
- int level = option("level");
- int port = option("port", 'p');
- };
- TEST(ArgNamesTest, PrintsOutBothArgsWhenRelevant) {
- auto result = usage<ArgNamesTest>();
- EXPECT_THAT(result, HasSubstr(" --port,-p:"));
- }
- TEST(ArgNamesTest, PrintsOutInversionFlag) {
- auto result = usage<ArgNamesTest>();
- EXPECT_THAT(result, HasSubstr(" --no-dry-run,--dry-run:"));
- }
- TEST(ArgNamesTest, PrintsOutBothSingleNameWithoutAbbrev) {
- auto result = usage<ArgNamesTest>();
- EXPECT_THAT(result, HasSubstr(" --level:"));
- }
- struct ArgDescTest : program::Arguments<ArgDescTest> {
- using Arguments::Arguments;
- int port = option("port", "The host port to listen on for web traffic");
- };
- TEST(ArgDescTest, PrintsOutBothArgsWhenRelevant) {
- auto result = usage<ArgDescTest>();
- EXPECT_THAT(result, HasSubstr(" --port: The host port"));
- }
- struct ArgDefValTest : program::Arguments<ArgDefValTest> {
- using Arguments::Arguments;
- int level = option("level") = 5;
- int port = option("port", "The host port to listen on for web traffic") =
- 8080;
- };
- TEST(ArgDefValTest, PrintsOutDefaultValueWithDescription) {
- auto result = usage<ArgDefValTest>();
- EXPECT_THAT(result, HasSubstr("Default Value: 8080"));
- }
- TEST(ArgDefValTest, DoesntAddDefValWithoutDescription) {
- auto result = usage<ArgDefValTest>();
- EXPECT_THAT(result, Not(HasSubstr("5")));
- }
|