feat: add RHI abstraction layer unit tests
- Add RHITestFixture with RHI_BACKEND env var support for backend selection - Add unit tests for: Device, Buffer, Texture, SwapChain, CommandList, CommandQueue, Shader, Fence, Sampler - Tests can run against D3D12 or OpenGL backends via RHI_BACKEND env var - Add integration folder placeholder for future integration tests
This commit is contained in:
99
tests/RHI/unit/test_fence.cpp
Normal file
99
tests/RHI/unit/test_fence.cpp
Normal file
@@ -0,0 +1,99 @@
|
||||
#include "fixtures/RHITestFixture.h"
|
||||
#include "XCEngine/RHI/RHIFence.h"
|
||||
|
||||
using namespace XCEngine::RHI;
|
||||
|
||||
TEST_F(RHITestFixture, Fence_Create) {
|
||||
FenceDesc desc = {};
|
||||
desc.initialValue = 0;
|
||||
desc.flags = 0;
|
||||
|
||||
RHIFence* fence = GetDevice()->CreateFence(desc);
|
||||
ASSERT_NE(fence, nullptr);
|
||||
|
||||
fence->Shutdown();
|
||||
delete fence;
|
||||
}
|
||||
|
||||
TEST_F(RHITestFixture, Fence_Signal) {
|
||||
FenceDesc desc = {};
|
||||
desc.initialValue = 0;
|
||||
|
||||
RHIFence* fence = GetDevice()->CreateFence(desc);
|
||||
ASSERT_NE(fence, nullptr);
|
||||
|
||||
fence->Signal();
|
||||
|
||||
fence->Shutdown();
|
||||
delete fence;
|
||||
}
|
||||
|
||||
TEST_F(RHITestFixture, Fence_SignalWithValue) {
|
||||
FenceDesc desc = {};
|
||||
desc.initialValue = 0;
|
||||
|
||||
RHIFence* fence = GetDevice()->CreateFence(desc);
|
||||
ASSERT_NE(fence, nullptr);
|
||||
|
||||
fence->Signal(5);
|
||||
|
||||
fence->Shutdown();
|
||||
delete fence;
|
||||
}
|
||||
|
||||
TEST_F(RHITestFixture, Fence_Wait) {
|
||||
FenceDesc desc = {};
|
||||
desc.initialValue = 0;
|
||||
|
||||
RHIFence* fence = GetDevice()->CreateFence(desc);
|
||||
ASSERT_NE(fence, nullptr);
|
||||
|
||||
fence->Signal(1);
|
||||
fence->Wait(1);
|
||||
|
||||
fence->Shutdown();
|
||||
delete fence;
|
||||
}
|
||||
|
||||
TEST_F(RHITestFixture, Fence_GetCompletedValue) {
|
||||
FenceDesc desc = {};
|
||||
desc.initialValue = 0;
|
||||
|
||||
RHIFence* fence = GetDevice()->CreateFence(desc);
|
||||
ASSERT_NE(fence, nullptr);
|
||||
|
||||
EXPECT_EQ(fence->GetCompletedValue(), 0u);
|
||||
fence->Signal(1);
|
||||
EXPECT_EQ(fence->GetCompletedValue(), 1u);
|
||||
|
||||
fence->Shutdown();
|
||||
delete fence;
|
||||
}
|
||||
|
||||
TEST_F(RHITestFixture, Fence_IsSignaled) {
|
||||
FenceDesc desc = {};
|
||||
desc.initialValue = 0;
|
||||
|
||||
RHIFence* fence = GetDevice()->CreateFence(desc);
|
||||
ASSERT_NE(fence, nullptr);
|
||||
|
||||
EXPECT_FALSE(fence->IsSignaled());
|
||||
fence->Signal(1);
|
||||
EXPECT_TRUE(fence->IsSignaled());
|
||||
|
||||
fence->Shutdown();
|
||||
delete fence;
|
||||
}
|
||||
|
||||
TEST_F(RHITestFixture, Fence_GetNativeHandle) {
|
||||
FenceDesc desc = {};
|
||||
desc.initialValue = 0;
|
||||
|
||||
RHIFence* fence = GetDevice()->CreateFence(desc);
|
||||
ASSERT_NE(fence, nullptr);
|
||||
|
||||
EXPECT_NE(fence->GetNativeHandle(), nullptr);
|
||||
|
||||
fence->Shutdown();
|
||||
delete fence;
|
||||
}
|
||||
Reference in New Issue
Block a user