| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- //
- // flag_test.cpp
- // program_args-test
- //
- // Created by Sam Jaffe on 2/7/21.
- //
- #include "program_args/arguments.h"
- #include "xcode_gtest_helper.h"
- using testing::Eq;
- template <typename T, size_t N> static T parse(char const * const (&argv)[N]) {
- return T(N, argv);
- }
- struct FlagTest : program::Arguments<FlagTest> {
- using program::Arguments<FlagTest>::Arguments;
- bool dry_run = flag("dry-run");
- int verbosity = flag("verbose");
- };
- TEST(FlagTest, ArgumentsAreDefaultedNaturally) {
- auto const options = parse<FlagTest>({""});
- EXPECT_THAT(options.dry_run, Eq(false));
- EXPECT_THAT(options.verbosity, Eq(0));
- }
- TEST(FlagTest, FlagsDoNotRequireAdditionalArguments) {
- EXPECT_NO_THROW(parse<FlagTest>({"", "--dry-run"}));
- }
- TEST(FlagTest, BooleanFlagSetsState) {
- auto const options = parse<FlagTest>({"", "--dry-run"});
- EXPECT_THAT(options.dry_run, Eq(true));
- }
- TEST(FlagTest, BooleanFlagIsIdempotent) {
- EXPECT_NO_THROW(parse<FlagTest>({"", "--dry-run", "--dry-run"}));
- }
- TEST(FlagTest, BooleanFlagCanBeInverted) {
- auto const options = parse<FlagTest>({"", "--dry-run", "--no-dry-run"});
- EXPECT_THAT(options.dry_run, Eq(false));
- }
- TEST(FlagTest, IntegerFlagIncrementsState) {
- auto const options = parse<FlagTest>({"", "--verbose"});
- EXPECT_THAT(options.verbosity, Eq(1));
- }
- TEST(FlagTest, IntegerFlagCanBeRepeated) {
- auto const options = parse<FlagTest>({"", "--verbose", "--verbose"});
- EXPECT_THAT(options.verbosity, Eq(2));
- }
|