Add OpenGL test infrastructure - Phase 1: Device, Buffer, Fence tests (17 tests)
- Create test directory structure at tests/RHI/OpenGL/ - Implement OpenGLTestFixture with GLFW/GLAD initialization - Add Device tests: CreateRenderWindow, InitializeWithExistingWindow, GetDeviceInfo, SwapBuffers, PollEvents - Add Buffer tests: VertexBuffer, IndexBuffer, UniformBuffer, Dynamic, Bind/Unbind, Map/Unmap - Add Fence tests: Initialize (signaled/unsignaled), Signal, Wait, IsSignaled, GetStatus - Add CMakeLists.txt with proper GLFW/GLAD/GTest linking - Create implementation plan document at docs/OpenGL测试实施计划.md
This commit is contained in:
63
tests/RHI/OpenGL/test_device.cpp
Normal file
63
tests/RHI/OpenGL/test_device.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
#include "fixtures/OpenGLTestFixture.h"
|
||||
#include "XCEngine/RHI/OpenGL/OpenGLDevice.h"
|
||||
|
||||
using namespace XCEngine::RHI;
|
||||
|
||||
TEST_F(OpenGLTestFixture, Device_CreateRenderWindow_ValidParams) {
|
||||
OpenGLDevice device;
|
||||
|
||||
bool result = device.CreateRenderWindow(800, 600, "Test Window", false);
|
||||
|
||||
ASSERT_TRUE(result);
|
||||
ASSERT_NE(device.GetWindow(), nullptr);
|
||||
}
|
||||
|
||||
TEST_F(OpenGLTestFixture, Device_CreateRenderWindow_DebugMode) {
|
||||
OpenGLDevice device;
|
||||
|
||||
bool result = device.CreateRenderWindow(640, 480, "Debug Window", true);
|
||||
|
||||
ASSERT_TRUE(result);
|
||||
ASSERT_NE(device.GetWindow(), nullptr);
|
||||
}
|
||||
|
||||
TEST_F(OpenGLTestFixture, Device_InitializeWithExistingWindow) {
|
||||
OpenGLDevice device;
|
||||
GLFWwindow* existingWindow = GetWindow();
|
||||
|
||||
bool result = device.InitializeWithExistingWindow(existingWindow);
|
||||
|
||||
ASSERT_TRUE(result);
|
||||
ASSERT_EQ(device.GetWindow(), existingWindow);
|
||||
}
|
||||
|
||||
TEST_F(OpenGLTestFixture, Device_GetDeviceInfo_ReturnsValid) {
|
||||
OpenGLDevice device;
|
||||
device.CreateRenderWindow(800, 600, "Test", false);
|
||||
|
||||
const auto& info = device.GetDeviceInfo();
|
||||
|
||||
EXPECT_FALSE(info.vendor.empty());
|
||||
EXPECT_FALSE(info.renderer.empty());
|
||||
EXPECT_GE(info.majorVersion, 3);
|
||||
EXPECT_GE(info.minorVersion, 0);
|
||||
}
|
||||
|
||||
TEST_F(OpenGLTestFixture, Device_SwapBuffers_NoErrors) {
|
||||
OpenGLDevice device;
|
||||
device.CreateRenderWindow(800, 600, "Test", false);
|
||||
|
||||
device.SwapBuffers();
|
||||
|
||||
GLenum error = glGetError();
|
||||
EXPECT_EQ(error, GL_NO_ERROR);
|
||||
}
|
||||
|
||||
TEST_F(OpenGLTestFixture, Device_PollEvents_ReturnsTrue) {
|
||||
OpenGLDevice device;
|
||||
device.CreateRenderWindow(800, 600, "Test", false);
|
||||
|
||||
bool result = device.PollEvents();
|
||||
|
||||
EXPECT_TRUE(result);
|
||||
}
|
||||
Reference in New Issue
Block a user