diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/gtest/type-builder.cpp | 68 |
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) { |