summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/gtest/type-builder.cpp68
1 files changed, 65 insertions, 3 deletions
diff --git a/test/gtest/type-builder.cpp b/test/gtest/type-builder.cpp
index 49221f667..1030dc9d4 100644
--- a/test/gtest/type-builder.cpp
+++ b/test/gtest/type-builder.cpp
@@ -17,15 +17,77 @@ protected:
setTypeSystem(originalSystem);
}
};
+
+using TypeTest = TypeSystemTest<TypeSystem::Equirecursive>;
using EquirecursiveTest = TypeSystemTest<TypeSystem::Equirecursive>;
using NominalTest = TypeSystemTest<TypeSystem::Nominal>;
using IsorecursiveTest = TypeSystemTest<TypeSystem::Isorecursive>;
-TEST(TypeBuilder, Growth) {
+TEST_F(TypeTest, TypeBuilderGrowth) {
TypeBuilder builder;
- EXPECT_EQ(builder.size(), size_t{0});
+ EXPECT_EQ(builder.size(), 0u);
builder.grow(3);
- EXPECT_EQ(builder.size(), size_t{3});
+ EXPECT_EQ(builder.size(), 3u);
+}
+
+TEST_F(TypeTest, TypeIterator) {
+ Type none = Type::none;
+ Type i32 = Type::i32;
+ Type i64 = Type::i64;
+ Type f32 = Type::f32;
+ Type f64 = Type::f64;
+ Type tuple = Tuple{i32, i64, f32, f64};
+
+ EXPECT_EQ(none.size(), 0u);
+ EXPECT_EQ(none.begin(), none.end());
+ EXPECT_EQ(none.end() - none.begin(), 0u);
+ EXPECT_EQ(none.begin() + 0, none.end());
+
+ EXPECT_EQ(i32.size(), 1u);
+ EXPECT_NE(i32.begin(), i32.end());
+ EXPECT_EQ(i32.end() - i32.begin(), 1u);
+
+ EXPECT_EQ(*i32.begin(), i32);
+ EXPECT_EQ(i32[0], i32);
+
+ EXPECT_EQ(i32.begin() + 1, i32.end());
+ EXPECT_EQ(i32.end() - 1, i32.begin());
+
+ auto preInc = i32.begin();
+ EXPECT_EQ(++preInc, i32.end());
+ EXPECT_EQ(preInc, i32.end());
+
+ auto postInc = i32.begin();
+ EXPECT_EQ(postInc++, i32.begin());
+ EXPECT_EQ(postInc, i32.end());
+
+ auto preDec = i32.end();
+ EXPECT_EQ(--preDec, i32.begin());
+ EXPECT_EQ(preDec, i32.begin());
+
+ auto postDec = i32.end();
+ EXPECT_EQ(postDec--, i32.end());
+ EXPECT_EQ(postDec, i32.begin());
+
+ EXPECT_EQ(tuple.size(), 4u);
+ EXPECT_NE(tuple.begin(), tuple.end());
+ EXPECT_EQ(tuple.end() - tuple.begin(), 4u);
+
+ EXPECT_EQ(*tuple.begin(), i32);
+ EXPECT_EQ(*(tuple.begin() + 1), i64);
+ EXPECT_EQ(*(tuple.begin() + 2), f32);
+ EXPECT_EQ(*(tuple.begin() + 3), f64);
+ EXPECT_EQ(tuple[0], i32);
+ EXPECT_EQ(tuple[1], i64);
+ EXPECT_EQ(tuple[2], f32);
+ EXPECT_EQ(tuple[3], f64);
+
+ auto reverse = tuple.rbegin();
+ EXPECT_EQ(*reverse++, f64);
+ EXPECT_EQ(*reverse++, f32);
+ EXPECT_EQ(*reverse++, i64);
+ EXPECT_EQ(*reverse++, i32);
+ EXPECT_EQ(reverse, tuple.rend());
}
TEST_F(EquirecursiveTest, Basics) {