#include "fixtures/OpenGLTestFixture.h" #include "XCEngine/RHI/OpenGL/OpenGLFence.h" using namespace XCEngine::RHI; TEST_F(OpenGLTestFixture, Fence_Initialize_Unsignaled) { OpenGLFence fence; bool result = fence.Initialize(0); ASSERT_TRUE(result); fence.Shutdown(); } TEST_F(OpenGLTestFixture, Fence_Initialize_Signaled) { OpenGLFence fence; bool result = fence.Initialize(1); ASSERT_TRUE(result); fence.Shutdown(); } TEST_F(OpenGLTestFixture, Fence_Signal_Wait) { OpenGLFence fence; fence.Initialize(0); fence.Signal(1); fence.Wait(1); EXPECT_EQ(fence.GetCompletedValue(), 1u); fence.Shutdown(); } TEST_F(OpenGLTestFixture, Fence_Timeline_SignalIncrement) { OpenGLFence fence; fence.Initialize(0); fence.Signal(1); fence.Wait(1); EXPECT_EQ(fence.GetCompletedValue(), 1u); fence.Signal(5); fence.Wait(5); EXPECT_EQ(fence.GetCompletedValue(), 5u); fence.Signal(10); fence.Wait(10); EXPECT_EQ(fence.GetCompletedValue(), 10u); fence.Shutdown(); } TEST_F(OpenGLTestFixture, Fence_Timeline_SignalDecrement) { OpenGLFence fence; fence.Initialize(0); fence.Signal(5); fence.Wait(5); EXPECT_EQ(fence.GetCompletedValue(), 5u); fence.Signal(3); fence.Wait(3); EXPECT_EQ(fence.GetCompletedValue(), 3u); fence.Shutdown(); } TEST_F(OpenGLTestFixture, Fence_Timeline_MultipleSignals) { OpenGLFence fence; fence.Initialize(0); fence.Signal(10); fence.Wait(10); fence.Signal(20); fence.Wait(20); fence.Signal(30); fence.Wait(30); EXPECT_EQ(fence.GetCompletedValue(), 30u); fence.Shutdown(); } TEST_F(OpenGLTestFixture, Fence_Timeline_WaitSmallerThanCompleted) { OpenGLFence fence; fence.Initialize(0); fence.Signal(5); fence.Wait(5); fence.Wait(3); EXPECT_GE(fence.GetCompletedValue(), 5u); fence.Shutdown(); } TEST_F(OpenGLTestFixture, Fence_Timeline_GetCompletedValue_Stages) { OpenGLFence fence; fence.Initialize(0); EXPECT_EQ(fence.GetCompletedValue(), 0u); fence.Signal(1); fence.Wait(1); EXPECT_EQ(fence.GetCompletedValue(), 1u); fence.Signal(10); fence.Wait(10); EXPECT_EQ(fence.GetCompletedValue(), 10u); fence.Signal(5); fence.Wait(5); EXPECT_EQ(fence.GetCompletedValue(), 5u); fence.Shutdown(); }