summaryrefslogtreecommitdiff
path: root/test/core/common/VariantReaderTest.cpp
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-13 13:58:21 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-13 13:58:21 +0100
commitaddf63c2337bc1c5e31cad5790c46ac8ae13a724 (patch)
tree8ef0e1d6dcf11b2f49c43341b9126ccdc67ac9b2 /test/core/common/VariantReaderTest.cpp
parent8ea8f004834b30ed77698e3dd31788a54d68b32f (diff)
added VariantReader::parseTyped
Diffstat (limited to 'test/core/common/VariantReaderTest.cpp')
-rw-r--r--test/core/common/VariantReaderTest.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/test/core/common/VariantReaderTest.cpp b/test/core/common/VariantReaderTest.cpp
index 7a688c5..feaf06d 100644
--- a/test/core/common/VariantReaderTest.cpp
+++ b/test/core/common/VariantReaderTest.cpp
@@ -1182,5 +1182,70 @@ TEST(VariantReader, parseGenericComplex)
ASSERT_TRUE(reader.peek(c));
ASSERT_EQ(';', c);
}
+
+TEST(VariantReader, parseTyped)
+{
+ {
+ auto res = VariantReader::parseTyped(VariantType::BOOL, "true", logger);
+ ASSERT_TRUE(res.first);
+ ASSERT_EQ(VariantType::BOOL, res.second.getType());
+ ASSERT_TRUE(res.second.asBool());
+ }
+ {
+ auto res =
+ VariantReader::parseTyped(VariantType::INT, " 1254", logger);
+ ASSERT_TRUE(res.first);
+ ASSERT_EQ(VariantType::INT, res.second.getType());
+ ASSERT_EQ(1254, res.second.asInt());
+ }
+ {
+ auto res =
+ VariantReader::parseTyped(VariantType::DOUBLE, " 3.14", logger);
+ ASSERT_TRUE(res.first);
+ ASSERT_EQ(VariantType::DOUBLE, res.second.getType());
+ ASSERT_EQ(3.14, res.second.asDouble());
+ }
+ {
+ auto res = VariantReader::parseTyped(VariantType::STRING,
+ "\'my string\'", logger);
+ ASSERT_TRUE(res.first);
+ ASSERT_EQ(VariantType::STRING, res.second.getType());
+ ASSERT_EQ("my string", res.second.asString());
+ }
+ {
+ auto res =
+ VariantReader::parseTyped(VariantType::STRING, "my string", logger);
+ ASSERT_FALSE(res.first);
+ }
+ {
+ auto res =
+ VariantReader::parseTyped(VariantType::ARRAY, "[1, 4, 5]", logger);
+ ASSERT_TRUE(res.first);
+ ASSERT_EQ(VariantType::ARRAY, res.second.getType());
+ Variant::arrayType actual = res.second.asArray();
+ Variant::arrayType expected{{1}, {4}, {5}};
+ ASSERT_EQ(expected, actual);
+ }
+ {
+ auto res = VariantReader::parseTyped(
+ VariantType::MAP, "[a=\"str\", b=true, i=4]", logger);
+ ASSERT_TRUE(res.first);
+ ASSERT_EQ(VariantType::MAP, res.second.getType());
+ Variant::mapType actual = res.second.asMap();
+ Variant::mapType expected{{"a", {"str"}}, {"b", {true}}, {"i", {4}}};
+ ASSERT_EQ(expected, actual);
+ }
+ {
+ auto res = VariantReader::parseTyped(VariantType::CARDINALITY,
+ "{1-2, >18}", logger);
+ ASSERT_TRUE(res.first);
+ ASSERT_EQ(VariantType::CARDINALITY, res.second.getType());
+ Variant::cardinalityType actual = res.second.asCardinality();
+ Variant::cardinalityType expected;
+ expected.merge({1, 2});
+ expected.merge(Variant::rangeType::typeRangeFrom(19));
+ ASSERT_EQ(expected, actual);
+ }
+}
}