From 66e382e4ea55932b1843efdfe2fd8c0fbcb1f405 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Mon, 22 Dec 2014 23:09:07 +0100 Subject: some more Typesystem documentation and unit tests --- test/core/model/TypesystemTest.cpp | 82 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'test') diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp index b388fe0..0e2dc8a 100644 --- a/test/core/model/TypesystemTest.cpp +++ b/test/core/model/TypesystemTest.cpp @@ -144,6 +144,54 @@ TEST(IntType, conversion) } } +/* Class IntType */ + +TEST(DoubleType, rtti) +{ + Manager mgr; + Rooted doubleType{new DoubleType(mgr, nullptr)}; + ASSERT_TRUE(doubleType->isa(RttiTypes::DoubleType)); + ASSERT_TRUE(doubleType->isa(typeOf())); + ASSERT_TRUE(doubleType->isa(typeOf())); +} + +TEST(DoubleType, creation) +{ + Manager mgr; + Rooted doubleType{new DoubleType(mgr, nullptr)}; + Variant val = doubleType->create(); + ASSERT_TRUE(val.isDouble()); + ASSERT_EQ(0.0, val.asDouble()); +} + +TEST(DoubleType, conversion) +{ + Logger logger; + Manager mgr; + Rooted doubleType{new DoubleType(mgr, nullptr)}; + + { + Variant val{3.14}; + ASSERT_TRUE(doubleType->build(val, logger)); + ASSERT_TRUE(val.isDouble()); + ASSERT_EQ(3.14, val.asDouble()); + } + + { + Variant val{314}; + ASSERT_TRUE(doubleType->build(val, logger)); + ASSERT_TRUE(val.isDouble()); + ASSERT_EQ(314.0, val.asDouble()); + } + + { + Variant val{"1"}; + ASSERT_FALSE(doubleType->build(val, logger)); + ASSERT_TRUE(val.isDouble()); + ASSERT_EQ(0.0, val.asDouble()); + } +} + /* Class ArrayType */ TEST(ArrayType, rtti) @@ -198,5 +246,39 @@ TEST(ArrayType, conversion) } } +/* Class UnknownType */ + +TEST(UnknownType, rtti) +{ + Manager mgr; + Rooted unknownType{new UnknownType(mgr, "unknown")}; + ASSERT_TRUE(unknownType->isa(RttiTypes::UnknownType)); + ASSERT_TRUE(unknownType->isa(typeOf())); + ASSERT_TRUE(unknownType->isa(typeOf())); +} + +TEST(UnknownType, creation) +{ + Manager mgr; + Rooted unknownType{new UnknownType(mgr, "unknown")}; + + Variant val = unknownType->create(); + ASSERT_TRUE(val.isNull()); +} + +TEST(UnknownType, conversion) +{ + Logger logger; + Manager mgr; + Rooted unknownType{new UnknownType(mgr, "unknown")}; + + { + Variant val1{{1, "test", false, 42.5}}; + Variant val2 = val1; + ASSERT_TRUE(unknownType->build(val1, logger)); + ASSERT_EQ(val1, val2); + } +} + } } -- cgit v1.2.3