diff options
Diffstat (limited to 'gfx/angle/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp')
-rwxr-xr-x | gfx/angle/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gfx/angle/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp b/gfx/angle/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp new file mode 100755 index 000000000..6b59e0cd5 --- /dev/null +++ b/gfx/angle/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp @@ -0,0 +1,60 @@ +// +// Copyright (c) 2016 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// PruneEmptyDeclarations_test.cpp: +// Tests for pruning empty declarations. +// + +#include "angle_gl.h" +#include "gtest/gtest.h" +#include "GLSLANG/ShaderLang.h" +#include "tests/test_utils/compiler_test.h" + +using namespace sh; + +namespace +{ + +class PruneEmptyDeclarationsTest : public MatchOutputCodeTest +{ + public: + PruneEmptyDeclarationsTest() + : MatchOutputCodeTest(GL_VERTEX_SHADER, 0, SH_GLSL_COMPATIBILITY_OUTPUT) + { + } +}; + +TEST_F(PruneEmptyDeclarationsTest, EmptyDeclarationStartsDeclaratorList) +{ + const std::string shaderString = + "precision mediump float;\n" + "uniform float u;\n" + "void main()\n" + "{\n" + " float, f;\n" + " gl_Position = vec4(u * f);\n" + "}\n"; + compile(shaderString); + ASSERT_TRUE(foundInCode("float f")); + ASSERT_TRUE(notFoundInCode("float, f")); +} + +TEST_F(PruneEmptyDeclarationsTest, EmptyStructDeclarationWithQualifiers) +{ + const std::string shaderString = + "precision mediump float;\n" + "const struct S { float f; };\n" + "uniform S s;" + "void main()\n" + "{\n" + " gl_Position = vec4(s.f);\n" + "}\n"; + compile(shaderString); + ASSERT_TRUE(foundInCode("struct S")); + ASSERT_TRUE(foundInCode("uniform S")); + ASSERT_TRUE(notFoundInCode("const struct S")); +} + +} // namespace |