summaryrefslogtreecommitdiffstats
path: root/UnitTests
diff options
context:
space:
mode:
Diffstat (limited to 'UnitTests')
-rw-r--r--UnitTests/DiligentCoreAPITest/src/BlendStateTest.cpp152
-rw-r--r--UnitTests/DiligentCoreAPITest/src/DepthStencilStateTest.cpp110
-rw-r--r--UnitTests/DiligentCoreAPITest/src/PSOTestBase.cpp2
-rw-r--r--UnitTests/DiligentCoreAPITest/src/RasterizerStateTest.cpp5
-rw-r--r--UnitTests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp45
5 files changed, 235 insertions, 79 deletions
diff --git a/UnitTests/DiligentCoreAPITest/src/BlendStateTest.cpp b/UnitTests/DiligentCoreAPITest/src/BlendStateTest.cpp
index 2c7c0d4a..b033b136 100644
--- a/UnitTests/DiligentCoreAPITest/src/BlendStateTest.cpp
+++ b/UnitTests/DiligentCoreAPITest/src/BlendStateTest.cpp
@@ -109,7 +109,9 @@ protected:
RefCntAutoPtr<IPipelineState> pPSO;
pDevice->CreatePipelineState(PSODesc, &pPSO);
- pDeviceContext->SetPipelineState(pPSO);
+ EXPECT_TRUE(pPSO);
+ if (pPSO)
+ pDeviceContext->SetPipelineState(pPSO);
return pPSO;
}
@@ -182,7 +184,7 @@ TEST_F(BlendStateBasicTest, CreatePSO)
EXPECT_TRUE(CreateTestPSO(PSODesc, true));
}
-class BlendFactorTest : public BlendStateTestBase, public testing::TestWithParam<std::tuple<Uint32, int, bool>>
+class BlendFactorTest : public BlendStateTestBase, public testing::TestWithParam<std::tuple<int, bool>>
{
protected:
static void SetUpTestSuite()
@@ -204,26 +206,29 @@ TEST_P(BlendFactorTest, CreatePSO)
const auto& Param = GetParam();
- auto NumRenderTarges = std::get<0>(Param);
- auto BlendFactor = static_cast<BLEND_FACTOR>(std::get<1>(Param));
- bool TestingAlpha = std::get<2>(Param);
+ const auto BlendFactor = static_cast<BLEND_FACTOR>(std::get<0>(Param));
+ const bool TestingAlpha = std::get<1>(Param);
- const auto& DevCaps = pDevice->GetDeviceCaps();
- if (DevCaps.DevType == DeviceType::OpenGLES && NumRenderTarges > 4)
- {
- GTEST_SKIP();
- }
+ const auto& DevCaps = pDevice->GetDeviceCaps();
+ Uint32 MaxTestRenderTargets = (DevCaps.DevType == DeviceType::OpenGLES) ? 4 : 8;
- bool TestSRC1 = DevCaps.DevType != DeviceType::OpenGLES; // || DevCaps.Vendor == GPU_VENDOR::NVIDIA;
- if ((!TestSRC1 || NumRenderTarges > 1) &&
- (BlendFactor == BLEND_FACTOR_SRC1_COLOR ||
- BlendFactor == BLEND_FACTOR_INV_SRC1_COLOR ||
- BlendFactor == BLEND_FACTOR_SRC1_ALPHA ||
- BlendFactor == BLEND_FACTOR_INV_SRC1_ALPHA))
+ const bool TestSRC1 = DevCaps.DevType != DeviceType::OpenGLES; // || DevCaps.Vendor == GPU_VENDOR::NVIDIA;
+ if (BlendFactor == BLEND_FACTOR_SRC1_COLOR ||
+ BlendFactor == BLEND_FACTOR_INV_SRC1_COLOR ||
+ BlendFactor == BLEND_FACTOR_SRC1_ALPHA ||
+ BlendFactor == BLEND_FACTOR_INV_SRC1_ALPHA)
{
- GTEST_SKIP();
+ if (!TestSRC1)
+ {
+ GTEST_SKIP();
+ }
+ else
+ {
+ MaxTestRenderTargets = 1;
+ }
}
+ for (Uint32 NumRenderTarges = 1; NumRenderTarges < MaxTestRenderTargets; ++NumRenderTarges)
{
auto PSODesc = GetPSODesc(NumRenderTarges);
PSODesc.Name = "SrcBlendFactorTest";
@@ -243,23 +248,24 @@ TEST_P(BlendFactorTest, CreatePSO)
}
auto pPSO = CreateTestPSO(PSODesc, true);
- ASSERT_TRUE(pPSO);
+ ASSERT_TRUE(pPSO) << "Number of render targets: " << NumRenderTarges;
for (Uint32 i = 0; i < NumRenderTarges; ++i)
{
auto& RT = pPSO->GetDesc().GraphicsPipeline.BlendDesc.RenderTargets[i];
- EXPECT_EQ(RT.BlendEnable, True);
+ EXPECT_EQ(RT.BlendEnable, True) << "Render target: " << i;
if (TestingAlpha)
{
- EXPECT_EQ(RT.SrcBlendAlpha, BlendFactor);
+ EXPECT_EQ(RT.SrcBlendAlpha, BlendFactor) << "Render target: " << i;
}
else
{
- EXPECT_EQ(RT.SrcBlend, BlendFactor);
+ EXPECT_EQ(RT.SrcBlend, BlendFactor) << "Render target: " << i;
}
}
}
+ for (Uint32 NumRenderTarges = 1; NumRenderTarges < MaxTestRenderTargets; ++NumRenderTarges)
{
auto PSODesc = GetPSODesc(NumRenderTarges);
PSODesc.Name = "DstBlendFactorTest";
@@ -279,38 +285,36 @@ TEST_P(BlendFactorTest, CreatePSO)
}
auto pPSO = CreateTestPSO(PSODesc, true);
- ASSERT_TRUE(pPSO);
+ ASSERT_TRUE(pPSO) << "Number of render targets: " << NumRenderTarges;
for (Uint32 i = 0; i < NumRenderTarges; ++i)
{
auto& RT = pPSO->GetDesc().GraphicsPipeline.BlendDesc.RenderTargets[i];
- EXPECT_EQ(RT.BlendEnable, True);
+ EXPECT_EQ(RT.BlendEnable, True) << "Render target: " << i;
if (TestingAlpha)
{
- EXPECT_EQ(RT.DestBlendAlpha, BlendFactor);
+ EXPECT_EQ(RT.DestBlendAlpha, BlendFactor) << "Render target: " << i;
}
else
{
- EXPECT_EQ(RT.DestBlend, BlendFactor);
+ EXPECT_EQ(RT.DestBlend, BlendFactor) << "Render target: " << i;
}
}
}
}
-std::string PrintBlendFactorTestName(const testing::TestParamInfo<std::tuple<Uint32, int, bool>>& info) //
+std::string PrintBlendFactorTestName(const testing::TestParamInfo<std::tuple<int, bool>>& info) //
{
- auto NumRenderTarges = std::get<0>(info.param);
- auto BlendFactor = static_cast<BLEND_FACTOR>(std::get<1>(info.param));
+ auto BlendFactor = static_cast<BLEND_FACTOR>(std::get<0>(info.param));
std::stringstream name_ss;
- name_ss << GetBlendFactorLiteralName(BlendFactor) << "_x_" << NumRenderTarges;
+ name_ss << GetBlendFactorLiteralName(BlendFactor);
return name_ss.str();
}
INSTANTIATE_TEST_SUITE_P(ColorBlendFactors,
BlendFactorTest,
testing::Combine(
- testing::Range<Uint32>(Uint32{1}, Uint32{8}),
testing::Range<int>(BLEND_FACTOR_UNDEFINED + 1, BLEND_FACTOR_NUM_FACTORS),
testing::Values(false)),
PrintBlendFactorTestName);
@@ -319,7 +323,6 @@ INSTANTIATE_TEST_SUITE_P(ColorBlendFactors,
INSTANTIATE_TEST_SUITE_P(AlphaBlendFactors,
BlendFactorTest,
testing::Combine(
- testing::Range<Uint32>(Uint32{1}, Uint32{8}),
testing::Values<int>(BLEND_FACTOR_ZERO,
BLEND_FACTOR_ONE,
BLEND_FACTOR_SRC_ALPHA,
@@ -335,7 +338,7 @@ INSTANTIATE_TEST_SUITE_P(AlphaBlendFactors,
PrintBlendFactorTestName);
-class BlendOperationTest : public BlendStateTestBase, public testing::TestWithParam<std::tuple<Uint32, int, bool>>
+class BlendOperationTest : public BlendStateTestBase, public testing::TestWithParam<std::tuple<int, bool>>
{
protected:
static void SetUpTestSuite()
@@ -358,68 +361,65 @@ TEST_P(BlendOperationTest, CreatePSO)
const auto& Param = GetParam();
- auto NumRenderTarges = std::get<0>(Param);
- auto BlendOp = static_cast<BLEND_OPERATION>(std::get<1>(Param));
- auto TestingAlpha = std::get<2>(Param);
-
- const auto& DevCaps = pDevice->GetDeviceCaps();
- if (DevCaps.DevType == DeviceType::OpenGLES && NumRenderTarges > 4)
- {
- GTEST_SKIP();
- }
-
- auto PSODesc = GetPSODesc(NumRenderTarges);
- PSODesc.Name = "BlendOperationTest";
+ const auto BlendOp = static_cast<BLEND_OPERATION>(std::get<0>(Param));
+ const auto TestingAlpha = std::get<1>(Param);
- BlendStateDesc& BSDesc = PSODesc.GraphicsPipeline.BlendDesc;
+ const auto& DevCaps = pDevice->GetDeviceCaps();
+ const Uint32 MaxTestRenderTargets = (DevCaps.DevType == DeviceType::OpenGLES) ? 4 : 8;
- BSDesc.IndependentBlendEnable = True;
- for (Uint32 i = 0; i < NumRenderTarges; ++i)
+ for (Uint32 NumRenderTarges = 1; NumRenderTarges < MaxTestRenderTargets; ++NumRenderTarges)
{
- auto& RT = BSDesc.RenderTargets[i];
- RT.BlendEnable = True;
- RT.SrcBlend = BLEND_FACTOR_SRC_COLOR;
- RT.DestBlend = BLEND_FACTOR_INV_SRC_COLOR;
- RT.SrcBlendAlpha = BLEND_FACTOR_SRC_ALPHA;
- RT.DestBlendAlpha = BLEND_FACTOR_INV_SRC_ALPHA;
- if (TestingAlpha)
- RT.BlendOpAlpha = BlendOp;
- else
- RT.BlendOp = BlendOp;
- }
+ auto PSODesc = GetPSODesc(NumRenderTarges);
+ PSODesc.Name = "BlendOperationTest";
- auto pPSO = CreateTestPSO(PSODesc, true);
- ASSERT_TRUE(pPSO);
- for (Uint32 i = 0; i < NumRenderTarges; ++i)
- {
- auto& RT = pPSO->GetDesc().GraphicsPipeline.BlendDesc.RenderTargets[i];
+ BlendStateDesc& BSDesc = PSODesc.GraphicsPipeline.BlendDesc;
- EXPECT_EQ(RT.BlendEnable, True);
- if (TestingAlpha)
+ BSDesc.IndependentBlendEnable = True;
+ for (Uint32 i = 0; i < NumRenderTarges; ++i)
{
- EXPECT_EQ(RT.BlendOpAlpha, BlendOp);
+ auto& RT = BSDesc.RenderTargets[i];
+ RT.BlendEnable = True;
+ RT.SrcBlend = BLEND_FACTOR_SRC_COLOR;
+ RT.DestBlend = BLEND_FACTOR_INV_SRC_COLOR;
+ RT.SrcBlendAlpha = BLEND_FACTOR_SRC_ALPHA;
+ RT.DestBlendAlpha = BLEND_FACTOR_INV_SRC_ALPHA;
+ if (TestingAlpha)
+ RT.BlendOpAlpha = BlendOp;
+ else
+ RT.BlendOp = BlendOp;
}
- else
+
+ auto pPSO = CreateTestPSO(PSODesc, true);
+ ASSERT_TRUE(pPSO) << "Number of render targets: " << NumRenderTarges;
+ for (Uint32 i = 0; i < NumRenderTarges; ++i)
{
- EXPECT_EQ(RT.BlendOp, BlendOp);
+ auto& RT = pPSO->GetDesc().GraphicsPipeline.BlendDesc.RenderTargets[i];
+
+ EXPECT_EQ(RT.BlendEnable, True) << "Render target: " << i;
+ if (TestingAlpha)
+ {
+ EXPECT_EQ(RT.BlendOpAlpha, BlendOp) << "Render target: " << i;
+ }
+ else
+ {
+ EXPECT_EQ(RT.BlendOp, BlendOp) << "Render target: " << i;
+ }
}
}
}
-
-INSTANTIATE_TEST_SUITE_P(ColorBlendOperations,
+INSTANTIATE_TEST_SUITE_P(BlendOperations,
BlendOperationTest,
testing::Combine(
- testing::Range<Uint32>(Uint32{1}, Uint32{8}),
testing::Range<int>(BLEND_OPERATION_UNDEFINED + 1, BLEND_OPERATION_NUM_OPERATIONS),
testing::Values(true, false)),
- [](const testing::TestParamInfo<std::tuple<Uint32, int, bool>>& info) //
+ [](const testing::TestParamInfo<std::tuple<int, bool>>& info) //
{
- auto NumRenderTarges = std::get<0>(info.param);
- auto BlendOp = static_cast<BLEND_OPERATION>(std::get<1>(info.param));
- auto IsTestingAlpha = std::get<2>(info.param);
+ auto BlendOp = static_cast<BLEND_OPERATION>(std::get<0>(info.param));
+ auto IsTestingAlpha = std::get<1>(info.param);
+
std::stringstream name_ss;
- name_ss << (IsTestingAlpha ? "Alpha_" : "Color_") << GetBlendOperationLiteralName(BlendOp) << "_x_" << NumRenderTarges;
+ name_ss << (IsTestingAlpha ? "Alpha_" : "Color_") << GetBlendOperationLiteralName(BlendOp);
return name_ss.str();
} //
);
diff --git a/UnitTests/DiligentCoreAPITest/src/DepthStencilStateTest.cpp b/UnitTests/DiligentCoreAPITest/src/DepthStencilStateTest.cpp
new file mode 100644
index 00000000..ff8c20cf
--- /dev/null
+++ b/UnitTests/DiligentCoreAPITest/src/DepthStencilStateTest.cpp
@@ -0,0 +1,110 @@
+/* Copyright 2019 Diligent Graphics LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.
+ *
+ * In no event and under no legal theory, whether in tort (including negligence),
+ * contract, or otherwise, unless required by applicable law (such as deliberate
+ * and grossly negligent acts) or agreed to in writing, shall any Contributor be
+ * liable for any damages, including any direct, indirect, special, incidental,
+ * or consequential damages of any character arising as a result of this License or
+ * out of the use or inability to use the software (including but not limited to damages
+ * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
+ * all other commercial damages or losses), even if such Contributor has been advised
+ * of the possibility of such damages.
+ */
+
+#include "TestingEnvironment.h"
+#include "PSOTestBase.h"
+#include "GraphicsAccessories.h"
+
+#include "gtest/gtest.h"
+
+using namespace Diligent;
+
+namespace
+{
+
+class DepthStencilStateTest : public PSOTestBase, public ::testing::Test
+{
+protected:
+ static void SetUpTestSuite()
+ {
+ InitResources();
+ }
+
+ static void TearDownTestSuite()
+ {
+ ReleaseResources();
+ TestingEnvironment::GetInstance()->ReleaseResources();
+ }
+};
+
+TEST_F(DepthStencilStateTest, CreatePSO)
+{
+ auto PSODesc = GetPSODesc();
+
+ DepthStencilStateDesc& DSSDesc = PSODesc.GraphicsPipeline.DepthStencilDesc;
+
+ DSSDesc.DepthEnable = False;
+ DSSDesc.DepthWriteEnable = False;
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true));
+
+ DSSDesc.DepthEnable = True;
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true));
+
+ DSSDesc.DepthWriteEnable = True;
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true));
+
+ for (auto CmpFunc = COMPARISON_FUNC_UNKNOWN + 1; CmpFunc < COMPARISON_FUNC_NUM_FUNCTIONS; ++CmpFunc)
+ {
+ DSSDesc.DepthFunc = static_cast<COMPARISON_FUNCTION>(CmpFunc);
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true)) << "Comparison func: " << GetComparisonFunctionLiteralName(DSSDesc.DepthFunc, true);
+ }
+
+ DSSDesc.StencilEnable = True;
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true));
+
+ DSSDesc.StencilReadMask = 0xA9;
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true));
+
+ DSSDesc.StencilWriteMask = 0xB8;
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true));
+
+ for (int Face = 0; Face < 2; ++Face)
+ {
+ auto& FaceOp = Face == 0 ? DSSDesc.FrontFace : DSSDesc.BackFace;
+ for (auto StOp = STENCIL_OP_UNDEFINED + 1; StOp < STENCIL_OP_NUM_OPS; ++StOp)
+ {
+ FaceOp.StencilFailOp = static_cast<STENCIL_OP>(StOp);
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true)) << "Face: " << Face << "; Stencil fail op: " << GetStencilOpLiteralName(FaceOp.StencilFailOp);
+ }
+
+ for (auto StOp = STENCIL_OP_UNDEFINED + 1; StOp < STENCIL_OP_NUM_OPS; ++StOp)
+ {
+ FaceOp.StencilDepthFailOp = static_cast<STENCIL_OP>(StOp);
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true)) << "Face: " << Face << "; Stencil depth fail op: " << GetStencilOpLiteralName(FaceOp.StencilDepthFailOp);
+ }
+
+ for (auto StOp = STENCIL_OP_UNDEFINED + 1; StOp < STENCIL_OP_NUM_OPS; ++StOp)
+ {
+ FaceOp.StencilPassOp = static_cast<STENCIL_OP>(StOp);
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true)) << "Face: " << Face << "; Stencil pass op: " << GetStencilOpLiteralName(FaceOp.StencilPassOp);
+ }
+
+ for (auto CmpFunc = COMPARISON_FUNC_UNKNOWN + 1; CmpFunc < COMPARISON_FUNC_NUM_FUNCTIONS; ++CmpFunc)
+ {
+ FaceOp.StencilFunc = static_cast<COMPARISON_FUNCTION>(CmpFunc);
+ ASSERT_TRUE(CreateTestPSO(PSODesc, true)) << "Face: " << Face << "; Comparison func: " << GetComparisonFunctionLiteralName(FaceOp.StencilFunc, true);
+ }
+ }
+}
+
+} // namespace
diff --git a/UnitTests/DiligentCoreAPITest/src/PSOTestBase.cpp b/UnitTests/DiligentCoreAPITest/src/PSOTestBase.cpp
index 056fc0d5..91840c80 100644
--- a/UnitTests/DiligentCoreAPITest/src/PSOTestBase.cpp
+++ b/UnitTests/DiligentCoreAPITest/src/PSOTestBase.cpp
@@ -84,7 +84,7 @@ RefCntAutoPtr<IPipelineState> PSOTestBase::CreateTestPSO(const PipelineStateDesc
RefCntAutoPtr<IPipelineState> pPSO;
pDevice->CreatePipelineState(PSODesc, &pPSO);
- if (BindPSO)
+ if (BindPSO && pPSO)
{
pContext->SetPipelineState(pPSO);
}
diff --git a/UnitTests/DiligentCoreAPITest/src/RasterizerStateTest.cpp b/UnitTests/DiligentCoreAPITest/src/RasterizerStateTest.cpp
index 0e0249ee..dd064074 100644
--- a/UnitTests/DiligentCoreAPITest/src/RasterizerStateTest.cpp
+++ b/UnitTests/DiligentCoreAPITest/src/RasterizerStateTest.cpp
@@ -23,6 +23,7 @@
#include "TestingEnvironment.h"
#include "PSOTestBase.h"
+#include "GraphicsAccessories.h"
#include "gtest/gtest.h"
@@ -58,7 +59,7 @@ TEST_F(RasterizerStateTest, CreatePSO)
{
RSDesc.FillMode = static_cast<FILL_MODE>(FillMode);
auto pPSO = CreateTestPSO(PSODesc, true);
- ASSERT_TRUE(pPSO);
+ ASSERT_TRUE(pPSO) << "Fill mode: " << GetFillModeLiteralName(RSDesc.FillMode);
EXPECT_EQ(pPSO->GetDesc().GraphicsPipeline.RasterizerDesc.FillMode, RSDesc.FillMode);
}
@@ -66,7 +67,7 @@ TEST_F(RasterizerStateTest, CreatePSO)
{
RSDesc.CullMode = static_cast<CULL_MODE>(CullMode);
auto pPSO = CreateTestPSO(PSODesc, true);
- ASSERT_TRUE(pPSO);
+ ASSERT_TRUE(pPSO) << "Cull mode: " << GetCullModeLiteralName(RSDesc.CullMode);
EXPECT_EQ(pPSO->GetDesc().GraphicsPipeline.RasterizerDesc.CullMode, RSDesc.CullMode);
}
diff --git a/UnitTests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp b/UnitTests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp
index ca4a188a..89f23ac0 100644
--- a/UnitTests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp
+++ b/UnitTests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp
@@ -141,6 +141,51 @@ TEST(GraphicsAccessories_GraphicsAccessories, GetBlendOperationLiteralName)
#undef TEST_BLEND_OP_ENUM
}
+TEST(GraphicsAccessories_GraphicsAccessories, GetFillModeLiteralName)
+{
+#define TEST_FILL_MODE_ENUM(ENUM_VAL) \
+ { \
+ EXPECT_STREQ(GetFillModeLiteralName(ENUM_VAL), #ENUM_VAL); \
+ }
+ TEST_FILL_MODE_ENUM(FILL_MODE_UNDEFINED);
+ TEST_FILL_MODE_ENUM(FILL_MODE_WIREFRAME);
+ TEST_FILL_MODE_ENUM(FILL_MODE_SOLID);
+#undef TEST_FILL_MODE_ENUM
+}
+
+TEST(GraphicsAccessories_GraphicsAccessories, GetCullModeLiteralName)
+{
+#define TEST_CULL_MODE_ENUM(ENUM_VAL) \
+ { \
+ EXPECT_STREQ(GetCullModeLiteralName(ENUM_VAL), #ENUM_VAL); \
+ }
+ TEST_CULL_MODE_ENUM(CULL_MODE_UNDEFINED);
+ TEST_CULL_MODE_ENUM(CULL_MODE_NONE);
+ TEST_CULL_MODE_ENUM(CULL_MODE_FRONT);
+ TEST_CULL_MODE_ENUM(CULL_MODE_BACK);
+#undef TEST_CULL_MODE_ENUM
+}
+
+TEST(GraphicsAccessories_GraphicsAccessories, GetStencilOpLiteralName)
+{
+#define TEST_STENCIL_OP_ENUM(ENUM_VAL) \
+ { \
+ EXPECT_STREQ(GetStencilOpLiteralName(ENUM_VAL), #ENUM_VAL); \
+ }
+
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_UNDEFINED);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_KEEP);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_ZERO);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_REPLACE);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_INCR_SAT);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_DECR_SAT);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_INVERT);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_INCR_WRAP);
+ TEST_STENCIL_OP_ENUM(STENCIL_OP_DECR_WRAP);
+#undef TEST_STENCIL_OP_ENUM
+}
+
+
TEST(GraphicsAccessories_GraphicsAccessories, GetTextureFormatAttribs)
{