summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2022-09-30 16:57:55 -0700
committerGitHub <noreply@github.com>2022-09-30 23:57:55 +0000
commita697046975cb2f952d7cc1e67474f7cd000ed027 (patch)
tree854ef0dd8ac21123821503e37d0931d220e9187e /test
parent2055ea3fd0391c1abb92cdec54f32274dc7fd971 (diff)
downloadbinaryen-a697046975cb2f952d7cc1e67474f7cd000ed027.tar.gz
binaryen-a697046975cb2f952d7cc1e67474f7cd000ed027.tar.bz2
binaryen-a697046975cb2f952d7cc1e67474f7cd000ed027.zip
[Wasm GC] Fix .depth() and add testing (#5102)
Diffstat (limited to 'test')
-rw-r--r--test/gtest/type-builder.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/gtest/type-builder.cpp b/test/gtest/type-builder.cpp
index 525a45c31..bc7b72e5d 100644
--- a/test/gtest/type-builder.cpp
+++ b/test/gtest/type-builder.cpp
@@ -619,3 +619,41 @@ TEST_F(IsorecursiveTest, TestExistingSuperType) {
EXPECT_EQ(A1.getHeapType(), A2.getHeapType());
EXPECT_EQ(B1.getHeapType(), B2.getHeapType());
}
+
+// Test .depth() helper.
+TEST_F(NominalTest, TestDepth) {
+ HeapType A, B, C;
+ {
+ TypeBuilder builder(3);
+ builder[0] = Struct();
+ builder[1] = Struct();
+ builder[2] = Array(Field(Type::i32, Immutable));
+ builder.setSubType(1, builder.getTempHeapType(0));
+ auto result = builder.build();
+ ASSERT_TRUE(result);
+ auto built = *result;
+ A = built[0];
+ B = built[1];
+ C = built[2];
+ }
+
+ // any < eq < data < specific struct and array types
+ EXPECT_EQ(HeapType(HeapType::any).getDepth(), 0U);
+ EXPECT_EQ(HeapType(HeapType::eq).getDepth(), 1U);
+ EXPECT_EQ(HeapType(HeapType::data).getDepth(), 2U);
+ EXPECT_EQ(A.getDepth(), 3U);
+ EXPECT_EQ(B.getDepth(), 4U);
+ EXPECT_EQ(C.getDepth(), 3U);
+
+ // Signature types are subtypes of func.
+ EXPECT_EQ(HeapType(HeapType::func).getDepth(), 0U);
+ EXPECT_EQ(HeapType(Signature(Type::none, Type::none)).getDepth(), 1U);
+
+ EXPECT_EQ(HeapType(HeapType::ext).getDepth(), 0U);
+
+ EXPECT_EQ(HeapType(HeapType::i31).getDepth(), 2U);
+ EXPECT_EQ(HeapType(HeapType::string).getDepth(), 2U);
+ EXPECT_EQ(HeapType(HeapType::stringview_wtf8).getDepth(), 2U);
+ EXPECT_EQ(HeapType(HeapType::stringview_wtf16).getDepth(), 2U);
+ EXPECT_EQ(HeapType(HeapType::stringview_iter).getDepth(), 2U);
+}