summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-11 23:58:16 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-11 23:58:16 +0100
commitaf8ecab90ce6b01c845a00034b206888472f4c54 (patch)
tree5120f797a40b71ff184e70540c4da95b18309a53 /test
parent94828bc348c4aab0d91da6499c30b26c2ef8f8e2 (diff)
Improved Variant unit test
Diffstat (limited to 'test')
-rw-r--r--test/core/common/VariantTest.cpp53
1 files changed, 43 insertions, 10 deletions
diff --git a/test/core/common/VariantTest.cpp b/test/core/common/VariantTest.cpp
index 673a89a..3903c1d 100644
--- a/test/core/common/VariantTest.cpp
+++ b/test/core/common/VariantTest.cpp
@@ -20,6 +20,7 @@
#include <gtest/gtest.h>
+#include <core/common/Rtti.hpp>
#include <core/common/Variant.hpp>
namespace ousia {
@@ -37,6 +38,9 @@ TEST(Variant, nullValue)
Variant v2{nullptr};
ASSERT_TRUE(v.isNull());
+
+ ASSERT_EQ(VariantType::NULLPTR, v.getType());
+ ASSERT_EQ(&RttiTypes::Nullptr, &v.getRttiType());
}
TEST(Variant, booleanValue)
@@ -52,6 +56,8 @@ TEST(Variant, booleanValue)
v.setBool(true);
ASSERT_TRUE(v.isBool());
ASSERT_TRUE(v.asBool());
+ ASSERT_EQ(VariantType::BOOL, v.getType());
+ ASSERT_EQ(&RttiTypes::Bool, &v.getRttiType());
v = nullptr;
ASSERT_FALSE(v.isBool());
@@ -66,6 +72,8 @@ TEST(Variant, intValue)
v = 43;
ASSERT_TRUE(v.isInt());
ASSERT_EQ(43, v.asInt());
+ ASSERT_EQ(VariantType::INT, v.getType());
+ ASSERT_EQ(&RttiTypes::Int, &v.getRttiType());
v = false;
ASSERT_FALSE(v.isInt());
@@ -83,6 +91,8 @@ TEST(Variant, doubleValue)
v = 43.5;
ASSERT_TRUE(v.isDouble());
ASSERT_EQ(43.5, v.asDouble());
+ ASSERT_EQ(VariantType::DOUBLE, v.getType());
+ ASSERT_EQ(&RttiTypes::Double, &v.getRttiType());
}
TEST(Variant, stringValue)
@@ -91,20 +101,39 @@ TEST(Variant, stringValue)
ASSERT_TRUE(v.isString());
ASSERT_EQ("Hello World", v.asString());
- v = "Goodbye World";
+ v = "Goodbye Cruel World";
ASSERT_TRUE(v.isString());
- ASSERT_EQ("Goodbye World", v.asString());
+ ASSERT_EQ("Goodbye Cruel World", v.asString());
+ ASSERT_EQ(VariantType::STRING, v.getType());
+ ASSERT_EQ(&RttiTypes::String, &v.getRttiType());
v = 42;
ASSERT_FALSE(v.isString());
}
+TEST(Variant, stringValueConversion)
+{
+ Variant v;
+
+ // Conversion from string to numbers
+ v = "42";
+ ASSERT_EQ(42, v.toInt());
+ v = "0xA3af";
+ ASSERT_EQ(0xA3AF, v.toInt());
+ v = "42.5";
+ ASSERT_EQ(42.5, v.toDouble());
+}
+
TEST(Variant, arrayValue)
{
const Variant v{{"test1", 42}};
ASSERT_EQ(2U, v.asArray().size());
ASSERT_EQ("test1", v.asArray()[0].asString());
ASSERT_EQ(42, v.asArray()[1].asInt());
+
+ ASSERT_TRUE(v.isArray());
+ ASSERT_EQ(VariantType::ARRAY, v.getType());
+ ASSERT_EQ(&RttiTypes::Array, &v.getRttiType());
}
TEST(Variant, mapValue)
@@ -119,23 +148,27 @@ TEST(Variant, mapValue)
const Variant v2{{{"key1", Variant::arrayType{1, 2}}, {"key2", "entry2"}}};
ASSERT_EQ(2, v2.asMap().find("key1")->second.asArray()[1].asInt());
+
+ ASSERT_TRUE(v.isMap());
+ ASSERT_EQ(VariantType::MAP, v.getType());
+ ASSERT_EQ(&RttiTypes::Map, &v.getRttiType());
}
-TEST(Variant, relationalOperators){
+TEST(Variant, relationalOperators)
+{
Variant a{4};
Variant b{4};
-
- ASSERT_EQ(a,b);
-
+
+ ASSERT_EQ(a, b);
+
b.setInt(5);
ASSERT_TRUE(a < b);
-
+
b.setDouble(4);
ASSERT_FALSE(a == b);
-
+
a.setDouble(4);
- ASSERT_EQ(a,b);
+ ASSERT_EQ(a, b);
}
-
}