Compare commits

...

2 Commits

Author SHA1 Message Date
823c28d38d Fix large allocation tests for mimir::Region
Some checks failed
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, macos-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Has been cancelled
2026-09-09 23:32:05 -07:00
90513a431d Add more unit tests for mimir::Region
Some checks failed
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, macos-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Has been cancelled
2026-09-09 23:16:01 -07:00
2 changed files with 57 additions and 11 deletions

View File

@@ -8,10 +8,10 @@ FetchContent_Declare(
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest) FetchContent_MakeAvailable(googletest)
# ----====---- End: GoogleTest ----====---
enable_testing() enable_testing()
# ----====---- End: GoogleTest ----====---
add_executable( add_executable(
mimir_test mimir_test
"region_test.cpp" "region_test.cpp"

View File

@@ -1,6 +1,8 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include "mimir.h" #include "mimir.h"
namespace mimir_tests {
void writeData(std::byte* dest, size_t count, int seed) void writeData(std::byte* dest, size_t count, int seed)
{ {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
@@ -18,7 +20,8 @@ bool checkData(std::byte* src, size_t count, int seed)
return true; return true;
} }
TEST(Mimir_Region, Uninitialized) { TEST(Region, InitialState)
{
mimir::init(); mimir::init();
mimir::Region region; mimir::Region region;
EXPECT_TRUE(region.getAddress() == nullptr); EXPECT_TRUE(region.getAddress() == nullptr);
@@ -26,7 +29,29 @@ TEST(Mimir_Region, Uninitialized) {
EXPECT_TRUE(region.getSize() == 0); EXPECT_TRUE(region.getSize() == 0);
} }
TEST(Mimir_Region, Resizing) TEST(Region, TooBig)
{
mimir::init();
mimir::Region region;
EXPECT_FALSE(region.init(1ULL << 50)); // Attempt to reserve too many pages
}
TEST(Region, OutOfMemory)
{
mimir::init();
mimir::Region region;
EXPECT_TRUE(region.init(1ULL << 46)); // Attempt to reserve 64TB of pages
EXPECT_FALSE(region.resize(1ULL << 45)); // Attempt to commit 32TB of pages (Assuming we don't have 32TB of ram!)
}
TEST(Region, Min1GB)
{
mimir::init();
mimir::Region region;
EXPECT_TRUE(region.init(1ULL << 30)); // Allocate 1GB of pages
}
TEST(Region, Resizing)
{ {
mimir::init(); mimir::init();
mimir::Region region; mimir::Region region;
@@ -37,8 +62,32 @@ TEST(Mimir_Region, Resizing)
EXPECT_EQ(region.getSize(), 0); EXPECT_EQ(region.getSize(), 0);
EXPECT_TRUE(region.resize(0)); EXPECT_TRUE(region.resize(0));
EXPECT_EQ(region.getSize(), 0); EXPECT_EQ(region.getSize(), 0);
EXPECT_FALSE(region.resize(1 << 20ULL));
EXPECT_EQ(region.getSize(), 0); EXPECT_TRUE(region.resize(1ULL << 4));
EXPECT_TRUE(region.resize(1ULL << 10));
EXPECT_TRUE(region.resize(1ULL << 5));
EXPECT_TRUE(region.resize(1ULL << 0));
EXPECT_TRUE(region.resize(1ULL << 9));
}
TEST(Region, OverSized)
{
mimir::init();
mimir::Region region;
EXPECT_TRUE(region.resize(1ULL << 4));
size_t prevSize = region.getSize();
EXPECT_FALSE(region.resize(1ULL << 20));
EXPECT_EQ(region.getSize(), prevSize);
}
TEST(Region, WriteData)
{
mimir::init();
mimir::Region region;
EXPECT_TRUE(region.init());
EXPECT_TRUE(region.resize(100)); EXPECT_TRUE(region.resize(100));
EXPECT_GE(region.getSize(), 100); EXPECT_GE(region.getSize(), 100);
writeData(region.getAddress(), 100, 1); writeData(region.getAddress(), 100, 1);
@@ -47,9 +96,6 @@ TEST(Mimir_Region, Resizing)
writeData(region.getAddress() + 100, 900, 2); writeData(region.getAddress() + 100, 900, 2);
EXPECT_TRUE(checkData(region.getAddress(), 100, 1)); EXPECT_TRUE(checkData(region.getAddress(), 100, 1));
EXPECT_TRUE(checkData(region.getAddress() + 100, 900, 2)); 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