summaryrefslogtreecommitdiff
path: root/test/core
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-03 21:42:48 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-03 21:42:48 +0100
commit6a1529fc7e5d9022fa95434cc90809173d9708ed (patch)
tree1fa7cc5761ba300dcca66de593b98608776c45bb /test/core
parentb29af12c86ef34d61b0574f0016ae6046b0ec278 (diff)
Added "checkIsa" function to Type that allows to check for an isa relationship.
Diffstat (limited to 'test/core')
-rw-r--r--test/core/model/TypesystemTest.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp
index 9a40db7..2a2c81e 100644
--- a/test/core/model/TypesystemTest.cpp
+++ b/test/core/model/TypesystemTest.cpp
@@ -674,6 +674,19 @@ TEST(StructType, cast)
ASSERT_EQ(0, arr[3].asInt());
}
+TEST(StructType, isa)
+{
+ Manager mgr;
+ Rooted<StructType> s1 = createStructType(mgr, logger);
+ Rooted<StructType> s2 = createStructTypeWithParent(s1, mgr, logger);
+
+ ASSERT_TRUE(s1->checkIsa(s1));
+ ASSERT_FALSE(s1->checkIsa(s2));
+
+ ASSERT_TRUE(s2->checkIsa(s1));
+ ASSERT_TRUE(s2->checkIsa(s2));
+}
+
TEST(StructType, indexOf)
{
Manager mgr;
@@ -804,6 +817,62 @@ TEST(ArrayType, creation)
ASSERT_TRUE(val.asArray().empty());
}
+TEST(ArrayType, isa)
+{
+ Manager mgr;
+ Rooted<StringType> stringType{new StringType(mgr, nullptr)};
+ Rooted<IntType> intType{new IntType(mgr, nullptr)};
+
+ Rooted<ArrayType> a1{new ArrayType(stringType)};
+ Rooted<ArrayType> a2{new ArrayType(stringType)};
+ Rooted<ArrayType> a3{new ArrayType(intType)};
+ Rooted<ArrayType> a4{new ArrayType(a1)};
+ Rooted<ArrayType> a5{new ArrayType(a2)};
+ Rooted<ArrayType> a6{new ArrayType(a3)};
+
+ ASSERT_TRUE(a1->checkIsa(a1));
+ ASSERT_TRUE(a1->checkIsa(a2));
+ ASSERT_FALSE(a1->checkIsa(a3));
+ ASSERT_FALSE(a1->checkIsa(a4));
+ ASSERT_FALSE(a1->checkIsa(a5));
+ ASSERT_FALSE(a1->checkIsa(a6));
+
+ ASSERT_TRUE(a2->checkIsa(a1));
+ ASSERT_TRUE(a2->checkIsa(a2));
+ ASSERT_FALSE(a2->checkIsa(a3));
+ ASSERT_FALSE(a2->checkIsa(a4));
+ ASSERT_FALSE(a2->checkIsa(a5));
+ ASSERT_FALSE(a2->checkIsa(a6));
+
+ ASSERT_FALSE(a3->checkIsa(a1));
+ ASSERT_FALSE(a3->checkIsa(a2));
+ ASSERT_TRUE(a3->checkIsa(a3));
+ ASSERT_FALSE(a3->checkIsa(a4));
+ ASSERT_FALSE(a3->checkIsa(a5));
+ ASSERT_FALSE(a3->checkIsa(a6));
+
+ ASSERT_FALSE(a4->checkIsa(a1));
+ ASSERT_FALSE(a4->checkIsa(a2));
+ ASSERT_FALSE(a4->checkIsa(a3));
+ ASSERT_TRUE(a4->checkIsa(a4));
+ ASSERT_TRUE(a4->checkIsa(a5));
+ ASSERT_FALSE(a4->checkIsa(a6));
+
+ ASSERT_FALSE(a5->checkIsa(a1));
+ ASSERT_FALSE(a5->checkIsa(a2));
+ ASSERT_FALSE(a5->checkIsa(a3));
+ ASSERT_TRUE(a5->checkIsa(a4));
+ ASSERT_TRUE(a5->checkIsa(a5));
+ ASSERT_FALSE(a5->checkIsa(a6));
+
+ ASSERT_FALSE(a6->checkIsa(a1));
+ ASSERT_FALSE(a6->checkIsa(a2));
+ ASSERT_FALSE(a6->checkIsa(a3));
+ ASSERT_FALSE(a6->checkIsa(a4));
+ ASSERT_FALSE(a6->checkIsa(a5));
+ ASSERT_TRUE(a6->checkIsa(a6));
+}
+
TEST(ArrayType, conversion)
{
Manager mgr;