#include "fixtures/OpenGLTestFixture.h" #include "XCEngine/RHI/OpenGL/OpenGLBuffer.h" using namespace XCEngine::RHI; TEST_F(OpenGLTestFixture, Buffer_Initialize_VertexBuffer) { OpenGLBuffer buffer; float vertices[] = { 0.0f, 0.0f, 0.5f, 0.5f }; bool result = buffer.InitializeVertexBuffer(vertices, sizeof(vertices)); ASSERT_TRUE(result); EXPECT_NE(buffer.GetID(), 0u); EXPECT_EQ(buffer.GetSize(), sizeof(vertices)); EXPECT_EQ(buffer.GetType(), OpenGLBufferType::Vertex); buffer.Shutdown(); } TEST_F(OpenGLTestFixture, Buffer_Initialize_IndexBuffer) { OpenGLBuffer buffer; unsigned int indices[] = { 0, 1, 2 }; bool result = buffer.InitializeIndexBuffer(indices, sizeof(indices)); ASSERT_TRUE(result); EXPECT_NE(buffer.GetID(), 0u); EXPECT_EQ(buffer.GetSize(), sizeof(indices)); buffer.Shutdown(); } TEST_F(OpenGLTestFixture, Buffer_Initialize_UniformBuffer) { OpenGLBuffer buffer; float data[16] = {}; bool result = buffer.Initialize(OpenGLBufferType::Uniform, sizeof(data), data, true); ASSERT_TRUE(result); EXPECT_TRUE(buffer.IsDynamic()); EXPECT_EQ(buffer.GetType(), OpenGLBufferType::Uniform); buffer.Shutdown(); } TEST_F(OpenGLTestFixture, Buffer_Initialize_Dynamic) { OpenGLBuffer buffer; bool result = buffer.Initialize(OpenGLBufferType::CopyRead, 256, nullptr, true); ASSERT_TRUE(result); EXPECT_TRUE(buffer.IsDynamic()); EXPECT_EQ(buffer.GetSize(), 256u); buffer.Shutdown(); } TEST_F(OpenGLTestFixture, Buffer_Bind_Unbind) { OpenGLBuffer buffer; buffer.InitializeVertexBuffer(nullptr, 16); buffer.Bind(); GLint boundBuffer = 0; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &boundBuffer); EXPECT_EQ(boundBuffer, static_cast(buffer.GetID())); buffer.Unbind(); glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &boundBuffer); EXPECT_EQ(boundBuffer, 0); buffer.Shutdown(); } TEST_F(OpenGLTestFixture, Buffer_Map_Unmap) { OpenGLBuffer buffer; buffer.Initialize(OpenGLBufferType::CopyRead, 256, nullptr, true); void* mappedData = buffer.Map(); ASSERT_NE(mappedData, nullptr); memset(mappedData, 0xAB, 256); buffer.Unmap(); GLenum error = glGetError(); EXPECT_EQ(error, GL_NO_ERROR); buffer.Shutdown(); }