diff options
-rw-r--r-- | test/core/common/ArgumentTest.cpp | 119 |
1 files changed, 116 insertions, 3 deletions
diff --git a/test/core/common/ArgumentTest.cpp b/test/core/common/ArgumentTest.cpp index d555cd8..f3f8f2b 100644 --- a/test/core/common/ArgumentTest.cpp +++ b/test/core/common/ArgumentTest.cpp @@ -29,7 +29,7 @@ namespace ousia { -//static Logger logger; +// static Logger logger; static TerminalLogger logger(std::cerr, true); namespace { @@ -536,12 +536,12 @@ TEST(Argument, validateArrayInner) } { - Variant::arrayType arr{1, "a", Variant::fromObject(nullptr)}; + Variant::arrayType arr{1, Variant::fromObject(nullptr), "a"}; Variant v{arr}; ASSERT_FALSE(a.validate(v, logger)); ASSERT_TRUE(v.isArray()); - ASSERT_EQ(Variant::arrayType({"1", "a", ""}), v.asArray()); + ASSERT_EQ(Variant::arrayType({"1", "", "a"}), v.asArray()); } { @@ -572,6 +572,15 @@ TEST(Argument, validateArrayInnerDefault) } { + Variant::arrayType arr{"test1", 42.5, Variant::fromObject(nullptr)}; + Variant v{arr}; + + ASSERT_FALSE(a.validate(v, logger)); + ASSERT_TRUE(v.isArray()); + ASSERT_EQ(arrDefault, v.asArray()); + } + + { Variant v{"foo"}; ASSERT_FALSE(a.validate(v, logger)); @@ -603,5 +612,109 @@ TEST(Argument, validateMap) ASSERT_EQ(Variant::mapType{}, v.asMap()); } } + +TEST(Argument, validateMapDefault) +{ + Variant::mapType mapDefault{{"key1", 1}, {"key2", "a"}, {"key3", nullptr}}; + Argument a = Argument::Map("a", mapDefault); + + ASSERT_TRUE(a.hasDefault); + ASSERT_TRUE(a.defaultValue.isMap()); + ASSERT_EQ(mapDefault, a.defaultValue.asMap()); + + { + Variant::mapType map{{"a", true}, {"b", "a"}}; + Variant v{map}; + + ASSERT_TRUE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ(map, v.asMap()); + } + + { + Variant v{"foo"}; + + ASSERT_FALSE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ(mapDefault, v.asMap()); + } +} + +TEST(Argument, validateMapInnerType) +{ + Argument a = Argument::Map("a", RttiTypes::String); + + ASSERT_FALSE(a.hasDefault); + + { + Variant::mapType map{{"key1", 1}, {"key2", "a"}, {"key3", nullptr}}; + Variant v{map}; + + ASSERT_TRUE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ( + Variant::mapType({{"key1", "1"}, {"key2", "a"}, {"key3", "null"}}), + v.asMap()); + } + + { + Variant::mapType map{ + {"key1", 1}, {"key2", Variant::fromObject(nullptr)}, {"key3", "a"}}; + Variant v{map}; + + ASSERT_FALSE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ( + Variant::mapType({{"key1", "1"}, {"key2", ""}, {"key3", "a"}}), + v.asMap()); + } + + { + Variant v{"foo"}; + + ASSERT_FALSE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ(Variant::mapType{}, v.asMap()); + } +} + +TEST(Argument, validateMapInnerTypeDefault) +{ + Variant::mapType mapDefault{{"key1", "1"}}; + Argument a = Argument::Map("a", RttiTypes::String, mapDefault); + + ASSERT_TRUE(a.hasDefault); + ASSERT_TRUE(a.defaultValue.isMap()); + ASSERT_EQ(mapDefault, a.defaultValue.asMap()); + + { + Variant::mapType map{{"key1", 1}, {"key2", "a"}, {"key3", nullptr}}; + Variant v{map}; + + ASSERT_TRUE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ( + Variant::mapType({{"key1", "1"}, {"key2", "a"}, {"key3", "null"}}), + v.asMap()); + } + + { + Variant::mapType map{ + {"key1", 1}, {"key2", Variant::fromObject(nullptr)}, {"key3", "a"}}; + Variant v{map}; + + ASSERT_FALSE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ(mapDefault, v.asMap()); + } + + { + Variant v{"foo"}; + + ASSERT_FALSE(a.validate(v, logger)); + ASSERT_TRUE(v.isMap()); + ASSERT_EQ(mapDefault, v.asMap()); + } +} } |