Compare commits
2 Commits
1c8e5ba5e5
...
823c28d38d
| Author | SHA1 | Date | |
|---|---|---|---|
| 823c28d38d | |||
| 90513a431d |
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user