diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1ebdca1..6af3497 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,10 +8,10 @@ FetchContent_Declare( set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) FetchContent_MakeAvailable(googletest) -# ----====---- End: GoogleTest ----====--- - enable_testing() +# ----====---- End: GoogleTest ----====--- + add_executable( mimir_test "region_test.cpp" diff --git a/tests/region_test.cpp b/tests/region_test.cpp index 41d5328..849c417 100644 --- a/tests/region_test.cpp +++ b/tests/region_test.cpp @@ -1,6 +1,8 @@ #include #include "mimir.h" +namespace mimir_tests { + void writeData(std::byte* dest, size_t count, int seed) { for (int i = 0; i < count; i++) { @@ -18,7 +20,8 @@ bool checkData(std::byte* src, size_t count, int seed) return true; } -TEST(Mimir_Region, Uninitialized) { +TEST(Region, InitialState) +{ mimir::init(); mimir::Region region; EXPECT_TRUE(region.getAddress() == nullptr); @@ -26,7 +29,21 @@ TEST(Mimir_Region, Uninitialized) { EXPECT_TRUE(region.getSize() == 0); } -TEST(Mimir_Region, Resizing) +TEST(Region, TooBig) +{ + mimir::init(); + mimir::Region region; + EXPECT_FALSE(region.init(1 << 44ULL)); // Attempt to allocate 16TB of pages +} + +TEST(Region, Min1GB) +{ + mimir::init(); + mimir::Region region; + EXPECT_TRUE(region.init(1 << 30ULL)); // Allocate 1GB of pages +} + +TEST(Region, Resizing) { mimir::init(); mimir::Region region; @@ -37,8 +54,32 @@ TEST(Mimir_Region, Resizing) EXPECT_EQ(region.getSize(), 0); EXPECT_TRUE(region.resize(0)); EXPECT_EQ(region.getSize(), 0); + + EXPECT_TRUE(region.resize(1 << 4ULL)); + EXPECT_TRUE(region.resize(1 << 10ULL)); + EXPECT_TRUE(region.resize(1 << 5ULL)); + EXPECT_TRUE(region.resize(1 << 0ULL)); + EXPECT_TRUE(region.resize(1 << 9ULL)); +} + +TEST(Region, OverSized) +{ + mimir::init(); + mimir::Region region; + + EXPECT_TRUE(region.resize(1 << 4ULL)); + size_t prevSize = region.getSize(); + EXPECT_FALSE(region.resize(1 << 20ULL)); - EXPECT_EQ(region.getSize(), 0); + EXPECT_EQ(region.getSize(), prevSize); +} + +TEST(Region, WriteData) +{ + mimir::init(); + mimir::Region region; + + EXPECT_TRUE(region.init()); EXPECT_TRUE(region.resize(100)); EXPECT_GE(region.getSize(), 100); writeData(region.getAddress(), 100, 1); @@ -47,9 +88,6 @@ TEST(Mimir_Region, Resizing) writeData(region.getAddress() + 100, 900, 2); EXPECT_TRUE(checkData(region.getAddress(), 100, 1)); EXPECT_TRUE(checkData(region.getAddress() + 100, 900, 2)); - - EXPECT_TRUE(region.resize(1 << 10ULL)); - EXPECT_TRUE(region.resize(1 << 5ULL)); - EXPECT_TRUE(region.resize(1 << 0ULL)); - EXPECT_TRUE(region.resize(1 << 9ULL)); } + +}; // namespace mimir_tests