90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
|
|
#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<GLint>(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();
|
||
|
|
}
|