diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-02-03 21:42:48 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-02-03 21:42:48 +0100 |
commit | 6a1529fc7e5d9022fa95434cc90809173d9708ed (patch) | |
tree | 1fa7cc5761ba300dcca66de593b98608776c45bb /test | |
parent | b29af12c86ef34d61b0574f0016ae6046b0ec278 (diff) |
Added "checkIsa" function to Type that allows to check for an isa relationship.
Diffstat (limited to 'test')
-rw-r--r-- | test/core/model/TypesystemTest.cpp | 69 |
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; |