#include "fixtures/RHITestFixture.h" #include "XCEngine/RHI/RHIShader.h" using namespace XCEngine::RHI; TEST_F(RHITestFixture, Shader_Compile_FromSource) { const char* vertexShader = R"( cbuffer ConstantBuffer : register(b0) { float4x4 worldViewProj; } struct VS_INPUT { float3 pos : POSITION; }; struct VS_OUTPUT { float4 pos : SV_POSITION; }; VS_OUTPUT main(VS_INPUT input) { VS_OUTPUT output; output.pos = float4(input.pos, 1.0f); return output; } )"; RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_GetType) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); ShaderType type = shader->GetType(); EXPECT_GE(static_cast(type), static_cast(ShaderType::Vertex)); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_IsValid) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); EXPECT_TRUE(shader->IsValid()); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_Bind_Unbind) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); shader->Bind(); shader->Unbind(); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_SetInt) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); shader->SetInt("testInt", 42); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_SetFloat) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); shader->SetFloat("testFloat", 3.14f); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_SetVec3) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); shader->SetVec3("testVec3", 1.0f, 2.0f, 3.0f); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_SetVec4) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); shader->SetVec4("testVec4", 1.0f, 2.0f, 3.0f, 4.0f); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_SetMat4) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); float mat[16] = {}; shader->SetMat4("testMat4", mat); shader->Shutdown(); delete shader; } TEST_F(RHITestFixture, Shader_GetNativeHandle) { RHIShader* shader = GetDevice()->CompileShader({}); ASSERT_NE(shader, nullptr); EXPECT_NE(shader->GetNativeHandle(), nullptr); shader->Shutdown(); delete shader; }