#include "fixtures/OpenGLTestFixture.h" #include "XCEngine/RHI/OpenGL/OpenGLVertexArray.h" #include "XCEngine/RHI/OpenGL/OpenGLBuffer.h" using namespace XCEngine::RHI; TEST_F(OpenGLTestFixture, VertexArray_Initialize_CreatesVAO) { OpenGLVertexArray vao; bool result = vao.Initialize(); ASSERT_TRUE(result); EXPECT_NE(vao.GetID(), 0u); vao.Shutdown(); } TEST_F(OpenGLTestFixture, VertexArray_AddVertexBuffer) { OpenGLVertexArray vao; vao.Initialize(); OpenGLBuffer buffer; buffer.InitializeVertexBuffer(nullptr, 64); VertexAttribute attr; attr.index = 0; attr.count = 3; attr.type = GL_FLOAT; attr.normalized = false; attr.stride = sizeof(float) * 3; attr.offset = 0; vao.AddVertexBuffer(buffer.GetID(), attr); EXPECT_EQ(vao.GetID(), 1u); buffer.Shutdown(); vao.Shutdown(); } TEST_F(OpenGLTestFixture, VertexArray_SetIndexBuffer) { OpenGLVertexArray vao; vao.Initialize(); OpenGLBuffer buffer; buffer.InitializeIndexBuffer(nullptr, 12); vao.SetIndexBuffer(buffer.GetID(), GL_UNSIGNED_INT); EXPECT_NE(vao.GetIndexBuffer(), 0u); buffer.Shutdown(); vao.Shutdown(); } TEST_F(OpenGLTestFixture, VertexArray_Bind_Unbind) { OpenGLVertexArray vao; vao.Initialize(); vao.Bind(); GLint boundVAO = 0; glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &boundVAO); EXPECT_EQ(boundVAO, static_cast(vao.GetID())); vao.Unbind(); glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &boundVAO); EXPECT_EQ(boundVAO, 0); vao.Shutdown(); }