summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2014-12-22 23:09:07 +0100
committerAndreas Stöckel <andreas@somweyr.de>2014-12-22 23:09:07 +0100
commit66e382e4ea55932b1843efdfe2fd8c0fbcb1f405 (patch)
tree56a4c0c71965340c7148498fffc150ec43bffff6 /test
parent9ebe4f0b90a7217e479c656209e87ab6292662d5 (diff)
some more Typesystem documentation and unit tests
Diffstat (limited to 'test')
-rw-r--r--test/core/model/TypesystemTest.cpp82
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);
+ }
+}
+
}
}