diff --git a/tests/RHI/OpenGL/test_command_list.cpp b/tests/RHI/OpenGL/test_command_list.cpp index 096da136..a310ff7f 100644 --- a/tests/RHI/OpenGL/test_command_list.cpp +++ b/tests/RHI/OpenGL/test_command_list.cpp @@ -130,3 +130,63 @@ TEST_F(OpenGLTestFixture, CommandList_EnableDisable_Blending) { glGetIntegerv(GL_BLEND, &blend); EXPECT_EQ(blend, 0); } + +TEST_F(OpenGLTestFixture, CommandList_SetPrimitiveTopology) { + OpenGLCommandList cmdList; + + cmdList.SetPrimitiveTopology(PrimitiveTopology::TriangleList); + GLenum error = glGetError(); + EXPECT_EQ(error, GL_NO_ERROR); + + cmdList.SetPrimitiveTopology(PrimitiveTopology::LineList); + error = glGetError(); + EXPECT_EQ(error, GL_NO_ERROR); + + cmdList.SetPrimitiveTopology(PrimitiveTopology::PointList); + error = glGetError(); + EXPECT_EQ(error, GL_NO_ERROR); +} + +TEST_F(OpenGLTestFixture, CommandList_SetDepthStencilState) { + OpenGLCommandList cmdList; + + DepthStencilState state; + state.depthEnable = true; + state.depthWriteMask = true; + state.depthFunc = ComparisonFunc::Less; + + cmdList.SetDepthStencilState(state); + + GLint depthTest = 0; + glGetIntegerv(GL_DEPTH_TEST, &depthTest); + EXPECT_EQ(depthTest, 1); +} + +TEST_F(OpenGLTestFixture, CommandList_SetBlendState) { + OpenGLCommandList cmdList; + + BlendState state; + state.renderTargets[0].blendEnable = true; + state.renderTargets[0].srcBlend = BlendFactor::SrcAlpha; + state.renderTargets[0].dstBlend = BlendFactor::InvSrcAlpha; + + cmdList.SetBlendState(state); + + GLint blend = 0; + glGetIntegerv(GL_BLEND, &blend); + EXPECT_EQ(blend, 1); +} + +TEST_F(OpenGLTestFixture, CommandList_SetBlendFactor) { + OpenGLCommandList cmdList; + + float factor[4] = { 0.5f, 0.5f, 0.5f, 1.0f }; + cmdList.SetBlendFactor(factor); + + GLfloat color[4] = {}; + glGetFloatv(GL_BLEND_COLOR, color); + EXPECT_FLOAT_EQ(color[0], 0.5f); + EXPECT_FLOAT_EQ(color[1], 0.5f); + EXPECT_FLOAT_EQ(color[2], 0.5f); + EXPECT_FLOAT_EQ(color[3], 1.0f); +}