diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-11 23:58:16 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-11 23:58:16 +0100 |
commit | af8ecab90ce6b01c845a00034b206888472f4c54 (patch) | |
tree | 5120f797a40b71ff184e70540c4da95b18309a53 /test | |
parent | 94828bc348c4aab0d91da6499c30b26c2ef8f8e2 (diff) |
Improved Variant unit test
Diffstat (limited to 'test')
-rw-r--r-- | test/core/common/VariantTest.cpp | 53 |
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); } - } |