summaryrefslogtreecommitdiff
path: root/test/core/common/ArgumentTest.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-12 22:52:06 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-12 22:52:06 +0100
commit08ec77fc0c1b5d76d7a24c83cbb90266ece84e40 (patch)
tree70e1f8c41d16fac94b71d98bfe79e483c47ed92b /test/core/common/ArgumentTest.cpp
parentf72037ae913e2cb780b1f4bb15dcc00a91f80eee (diff)
Finished tests for the "Argument" class
Diffstat (limited to 'test/core/common/ArgumentTest.cpp')
-rw-r--r--test/core/common/ArgumentTest.cpp119
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());
+ }
+}
}