diff --git a/tests/chapter2/xmake.lua b/tests/chapter2/xmake.lua new file mode 100644 index 0000000..8c0ddb4 --- /dev/null +++ b/tests/chapter2/xmake.lua @@ -0,0 +1,13 @@ +target("chapter2_tests") + add_files("../test_main.cpp") + add_files( + "../test_metaInfo.cpp", + "../test_array.cpp", + "../test_iterator.cpp" + ) + if is_mode("debug") then + add_files("../../src/chapter2/**.cppm") + else + add_files("../../mystl/chapter2/**.cppm") + end + add_deps("chapter2_modules") \ No newline at end of file diff --git a/tests/chapter3/xmake.lua b/tests/chapter3/xmake.lua new file mode 100644 index 0000000..1e1521f --- /dev/null +++ b/tests/chapter3/xmake.lua @@ -0,0 +1,14 @@ +target("chapter3_tests") + add_files("../test_main.cpp") + add_files( + "../test_metaInfo.cpp", + "../test_array.cpp", + "../test_iterator.cpp", + "../test_range.cpp" + ) + if is_mode("debug") then + add_files("../../src/chapter3/**.cppm") + else + add_files("../../mystl/chapter3/**.cppm") + end + add_deps("chapter3_modules") \ No newline at end of file diff --git a/tests/test_iterator.cpp b/tests/test_iterator.cpp new file mode 100644 index 0000000..d79a778 --- /dev/null +++ b/tests/test_iterator.cpp @@ -0,0 +1,49 @@ +#include + +import mySTL.iterator; + +namespace { + +using TestPointerBaseTypes = + ::testing::Types; + +template +class IteratorTest : public ::testing::Test {}; + +} // namespace + +TYPED_TEST_SUITE(IteratorTest, TestPointerBaseTypes); + +TYPED_TEST(IteratorTest, IteratorConcept) { + using PointerType = TypeParam*; + using ConstPointerType = const TypeParam*; + + EXPECT_TRUE(mySTL::iterator::Iterator); + EXPECT_TRUE(mySTL::iterator::Iterator); +} + +TYPED_TEST(IteratorTest, FowardIteratorConcept) { + using PointerType = TypeParam*; + using ConstPointerType = const TypeParam*; + + EXPECT_TRUE(mySTL::iterator::ForwardIterator); + EXPECT_TRUE(mySTL::iterator::ForwardIterator); +} + +TYPED_TEST(IteratorTest, BidirectionalIteratorConcept) { + using PointerType = TypeParam*; + using ConstPointerType = const TypeParam*; + + EXPECT_TRUE(mySTL::iterator::BidirectionalIterator); + EXPECT_TRUE(mySTL::iterator::BidirectionalIterator); +} + +TYPED_TEST(IteratorTest, RandomAccessIteratorConcept) { + using PointerType = TypeParam*; + using ConstPointerType = const TypeParam*; + + EXPECT_TRUE(mySTL::iterator::RandomAccessIterator); + EXPECT_TRUE(mySTL::iterator::RandomAccessIterator); +} diff --git a/tests/test_range.cpp b/tests/test_range.cpp new file mode 100644 index 0000000..beeb506 --- /dev/null +++ b/tests/test_range.cpp @@ -0,0 +1,68 @@ +#include + +import mySTL.range; +import mySTL.array; + +namespace { + +using TestPointerBaseTypes = + ::testing::Types; + +template +class RangeTest : public ::testing::Test {}; + +} // namespace + +TYPED_TEST_SUITE(RangeTest, TestPointerBaseTypes); + +TYPED_TEST(RangeTest, CArrayRange) { + EXPECT_FALSE(mySTL::range::Range); + EXPECT_TRUE(mySTL::range::Range); +} + +TYPED_TEST(RangeTest, CArrayIterRange) { + EXPECT_FALSE(mySTL::range::IterRange); + EXPECT_TRUE(mySTL::range::IterRange); +} + +TYPED_TEST(RangeTest, MySTLArrayRange) { + EXPECT_TRUE((mySTL::range::Range>)); + EXPECT_TRUE((mySTL::range::Range>)); +} + +TYPED_TEST(RangeTest, MySTLArrayIterRange) { + EXPECT_TRUE((mySTL::range::IterRange>)); + EXPECT_TRUE((mySTL::range::IterRange>)); +} + +TYPED_TEST(RangeTest, MySTLArrayRangeFor) { + mySTL::Array arr {}; + + for ([[maybe_unused]] auto& e : arr) { + } + + for ([[maybe_unused]] const auto& e : arr) { + } + + for ([[maybe_unused]] auto&& e : arr) { + } + + SUCCEED(); +} + +TYPED_TEST(RangeTest, MySTLArraySize0RangeFor) { + mySTL::Array arr {}; + + for ([[maybe_unused]] auto& e : arr) { + } + + for ([[maybe_unused]] const auto& e : arr) { + } + + for ([[maybe_unused]] auto&& e : arr) { + } + + SUCCEED(); +} diff --git a/tests/xmake.lua b/tests/xmake.lua index 4eac509..b8e9ba3 100644 --- a/tests/xmake.lua +++ b/tests/xmake.lua @@ -3,5 +3,5 @@ add_packages("gtest") includes("chapter0/xmake.lua") includes("chapter1/xmake.lua") ---includes("chapter2/xmake.lua") +includes("chapter2/xmake.lua") includes("chapter3/xmake.lua") \ No newline at end of file