diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-12 22:52:06 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-12 22:52:06 +0100 |
commit | 08ec77fc0c1b5d76d7a24c83cbb90266ece84e40 (patch) | |
tree | 70e1f8c41d16fac94b71d98bfe79e483c47ed92b /test/core/common/ArgumentTest.cpp | |
parent | f72037ae913e2cb780b1f4bb15dcc00a91f80eee (diff) |
Finished tests for the "Argument" class
Diffstat (limited to 'test/core/common/ArgumentTest.cpp')
-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()); + } +} } |