diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-22 23:09:07 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2014-12-22 23:09:07 +0100 |
commit | 66e382e4ea55932b1843efdfe2fd8c0fbcb1f405 (patch) | |
tree | 56a4c0c71965340c7148498fffc150ec43bffff6 /test | |
parent | 9ebe4f0b90a7217e479c656209e87ab6292662d5 (diff) |
some more Typesystem documentation and unit tests
Diffstat (limited to 'test')
-rw-r--r-- | test/core/model/TypesystemTest.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
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> doubleType{new DoubleType(mgr, nullptr)}; + ASSERT_TRUE(doubleType->isa(RttiTypes::DoubleType)); + ASSERT_TRUE(doubleType->isa(typeOf<Type>())); + ASSERT_TRUE(doubleType->isa(typeOf<Node>())); +} + +TEST(DoubleType, creation) +{ + Manager mgr; + Rooted<DoubleType> 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> 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> unknownType{new UnknownType(mgr, "unknown")}; + ASSERT_TRUE(unknownType->isa(RttiTypes::UnknownType)); + ASSERT_TRUE(unknownType->isa(typeOf<Type>())); + ASSERT_TRUE(unknownType->isa(typeOf<Node>())); +} + +TEST(UnknownType, creation) +{ + Manager mgr; + Rooted<UnknownType> unknownType{new UnknownType(mgr, "unknown")}; + + Variant val = unknownType->create(); + ASSERT_TRUE(val.isNull()); +} + +TEST(UnknownType, conversion) +{ + Logger logger; + Manager mgr; + Rooted<UnknownType> 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); + } +} + } } |