#include #include using namespace XCEngine::Memory; namespace { class MemoryTest : public ::testing::Test { protected: void SetUp() override { MemoryManager::Get().Initialize(); } void TearDown() override { MemoryManager::Get().Shutdown(); } }; TEST_F(MemoryTest, GetSystemAllocator_ReturnsValidPointer) { IAllocator* allocator = MemoryManager::Get().GetSystemAllocator(); ASSERT_NE(allocator, nullptr); } TEST_F(MemoryTest, CreateLinearAllocator) { auto allocator = MemoryManager::Get().CreateLinearAllocator(1024); ASSERT_NE(allocator, nullptr); EXPECT_EQ(allocator->GetCapacity(), 1024u); } TEST_F(MemoryTest, CreatePoolAllocator) { auto allocator = MemoryManager::Get().CreatePoolAllocator(64, 100); ASSERT_NE(allocator, nullptr); EXPECT_EQ(allocator->GetBlockSize(), 64u); EXPECT_EQ(allocator->GetTotalBlockCount(), 100u); EXPECT_EQ(allocator->GetFreeBlockCount(), 100u); } TEST_F(MemoryTest, CreateProxyAllocator) { auto allocator = MemoryManager::Get().CreateProxyAllocator("Test"); ASSERT_NE(allocator, nullptr); EXPECT_STREQ(allocator->GetName(), "Test"); } } // namespace