diff options
-rw-r--r-- | src/core/common/Argument.cpp | 3 | ||||
-rw-r--r-- | test/core/common/ArgumentTest.cpp | 18 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/core/common/Argument.cpp b/src/core/common/Argument.cpp index 6bf2917..a4c153d 100644 --- a/src/core/common/Argument.cpp +++ b/src/core/common/Argument.cpp @@ -247,6 +247,7 @@ bool Arguments::validateArray(Variant::arrayType &arr, Logger &logger) const arr[a] = arguments[a].defaultValue; } else { // Call "validate" to inject a standard value + arr[a] = Variant::fromObject(nullptr); arguments[a].validate(arr[a], nullLogger); logger.error(std::string("Missing argument ") + std::to_string(a + 1) + std::string(" \"") + @@ -302,7 +303,7 @@ bool Arguments::validateMap(Variant::mapType &map, Logger &logger, map[arguments[a].name] = arguments[a].defaultValue; } else { // Call "validate" to inject a standard value - map[arguments[a].name] = Variant{}; + map[arguments[a].name] = Variant::fromObject(nullptr); arguments[a].validate(map[arguments[a].name], nullLogger); logger.error(std::string("Missing argument \"") + arguments[a].name + std::string("\"")); diff --git a/test/core/common/ArgumentTest.cpp b/test/core/common/ArgumentTest.cpp index c8ecd2f..85f99a1 100644 --- a/test/core/common/ArgumentTest.cpp +++ b/test/core/common/ArgumentTest.cpp @@ -881,5 +881,23 @@ TEST(Arguments, validateMap) map); } } + +TEST(Arguments, validateMissing) +{ + Arguments args{Argument::String("a")}; + + { + Variant::mapType map{}; + ASSERT_FALSE(args.validateMap(map, logger, false)); + ASSERT_EQ(Variant::mapType({{"a", ""}}), map); + } + + { + Variant::arrayType arr{}; + ASSERT_FALSE(args.validateArray(arr, logger)); + ASSERT_EQ(Variant::arrayType({""}), arr); + } +} + } |