From 6a1529fc7e5d9022fa95434cc90809173d9708ed Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Tue, 3 Feb 2015 21:42:48 +0100 Subject: Added "checkIsa" function to Type that allows to check for an isa relationship. --- test/core/model/TypesystemTest.cpp | 69 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'test') 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 s1 = createStructType(mgr, logger); + Rooted 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{new StringType(mgr, nullptr)}; + Rooted intType{new IntType(mgr, nullptr)}; + + Rooted a1{new ArrayType(stringType)}; + Rooted a2{new ArrayType(stringType)}; + Rooted a3{new ArrayType(intType)}; + Rooted a4{new ArrayType(a1)}; + Rooted a5{new ArrayType(a2)}; + Rooted 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; -- cgit v1.2.3