#include "fixtures/D3D12TestFixture.h" #include "XCEngine/RHI/D3D12/D3D12Buffer.h" #include "XCEngine/RHI/RHIEnums.h" using namespace XCEngine::RHI; TEST_F(D3D12TestFixture, Buffer_Create_DefaultHeap) { BufferDesc desc = {}; desc.size = 1024; desc.stride = 0; desc.bufferType = static_cast(BufferType::Vertex); desc.flags = 0; RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); auto* d3d12Buffer = static_cast(buffer); EXPECT_EQ(d3d12Buffer->GetSize(), 1024); buffer->Shutdown(); delete buffer; } TEST_F(D3D12TestFixture, Buffer_Create_UploadHeap) { BufferDesc desc = {}; desc.size = 2048; desc.stride = 0; desc.bufferType = static_cast(BufferType::Constant); desc.flags = 0; RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); buffer->Shutdown(); delete buffer; } TEST_F(D3D12TestFixture, Buffer_Get_GPUVirtualAddress) { BufferDesc desc = {}; desc.size = 512; desc.stride = 0; desc.bufferType = static_cast(BufferType::Vertex); desc.flags = 0; RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); auto* d3d12Buffer = static_cast(buffer); EXPECT_NE(d3d12Buffer->GetGPUAddress(), 0); buffer->Shutdown(); delete buffer; } TEST_F(D3D12TestFixture, Buffer_Map_Unmap) { BufferDesc desc = {}; desc.size = 256; desc.stride = 0; desc.bufferType = static_cast(BufferType::Constant); desc.flags = 0; RHIBuffer* buffer = GetDevice()->CreateBuffer(desc); ASSERT_NE(buffer, nullptr); void* mappedData = buffer->Map(); ASSERT_NE(mappedData, nullptr); memset(mappedData, 0xAB, 256); buffer->Unmap(); buffer->Shutdown(); delete buffer; } TEST_F(D3D12TestFixture, Buffer_Get_AlignmentRequirements) { EXPECT_GE(256 % 256, 0); }