#include "fixtures/RHITestFixture.h" #include "XCEngine/RHI/RHIBuffer.h" using namespace XCEngine::RHI; TEST_P(RHITestFixture, Buffer_Map_Unmap) { BufferDesc desc = {}; desc.size = 256; desc.stride = sizeof(float); desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); void* data = buffer->Map(); ASSERT_NE(data, nullptr); memset(data, 0xAB, 256); buffer->Unmap(); buffer->Shutdown(); delete buffer; } TEST_P(RHITestFixture, Buffer_SetData) { BufferDesc desc = {}; desc.size = 128; desc.stride = sizeof(float); desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); float testData[16] = {}; buffer->SetData(testData, sizeof(testData)); buffer->Shutdown(); delete buffer; } TEST_P(RHITestFixture, Buffer_GetSize) { BufferDesc desc = {}; desc.size = 1024; desc.stride = sizeof(float); desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); EXPECT_EQ(buffer->GetSize(), 1024u); buffer->Shutdown(); delete buffer; } TEST_P(RHITestFixture, Buffer_GetStride) { BufferDesc desc = {}; desc.size = 256; desc.stride = 16; desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); EXPECT_EQ(buffer->GetStride(), 16u); buffer->Shutdown(); delete buffer; } TEST_P(RHITestFixture, Buffer_SetBufferType) { BufferDesc desc = {}; desc.size = 256; desc.stride = sizeof(float); desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); EXPECT_EQ(buffer->GetBufferType(), BufferType::Vertex); buffer->SetBufferType(BufferType::Index); EXPECT_EQ(buffer->GetBufferType(), BufferType::Index); buffer->Shutdown(); delete buffer; } TEST_P(RHITestFixture, Buffer_StateManagement) { BufferDesc desc = {}; desc.size = 256; desc.stride = sizeof(float); desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); EXPECT_EQ(buffer->GetState(), ResourceStates::Common); buffer->SetState(ResourceStates::VertexAndConstantBuffer); EXPECT_EQ(buffer->GetState(), ResourceStates::VertexAndConstantBuffer); buffer->Shutdown(); delete buffer; } TEST_P(RHITestFixture, Buffer_Naming) { BufferDesc desc = {}; desc.size = 256; desc.stride = sizeof(float); desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); buffer->SetName("TestBuffer"); EXPECT_EQ(buffer->GetName(), "TestBuffer"); buffer->Shutdown(); delete buffer; } TEST_P(RHITestFixture, Buffer_GetNativeHandle) { BufferDesc desc = {}; desc.size = 256; desc.stride = sizeof(float); desc.bufferType = static_cast(BufferType::Vertex); RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); EXPECT_NE(buffer->GetNativeHandle(), nullptr); buffer->Shutdown(); delete buffer; }