Files
mimir/tests/region_test.cpp
Kearwood Gilbert 1cb44e96b1
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
Add Arena::getMaxSize() and Arena::getUsed(). Make Arena tests discoverable.
2026-09-11 00:08:24 -07:00

87 lines
2.0 KiB
C++

#include <gtest/gtest.h>
#include "mimir.h"
#include "test_util.h"
namespace mimir_tests {
TEST(Region, InitialState)
{
mimir::init();
mimir::Region region;
EXPECT_TRUE(region.getAddress() == nullptr);
EXPECT_TRUE(region.getMaxSize() == 0);
EXPECT_TRUE(region.getSize() == 0);
}
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 << 60)); // Attempt to commit an extremely large number of pages
}
TEST(Region, Min1GB)
{
mimir::init();
mimir::Region region;
EXPECT_TRUE(region.init(1ULL << 30)); // Allocate 1GB of pages
}
TEST(Region, Resizing)
{
mimir::init();
mimir::Region region;
EXPECT_TRUE(region.init(1 << 10ULL));
EXPECT_NE(region.getAddress(), nullptr);
EXPECT_GT(region.getMaxSize(), 0);
EXPECT_EQ(region.getSize(), 0);
EXPECT_TRUE(region.resize(0));
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.init(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_GE(region.getSize(), 100);
writeData(region.getAddress(), 100, 1);
EXPECT_TRUE(checkData(region.getAddress(), 100, 1));
EXPECT_TRUE(region.resize(1 << 9ULL));
writeData(region.getAddress() + 100, 900, 2);
EXPECT_TRUE(checkData(region.getAddress(), 100, 1));
EXPECT_TRUE(checkData(region.getAddress() + 100, 900, 2));
}
}; // namespace mimir_tests