summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp')
-rw-r--r--Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp
new file mode 100644
index 000000000..2a514a9e4
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp
@@ -0,0 +1,83 @@
+//
+// Copyright (c) 2015 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.
+//
+// ShCompile_test.cpp
+// Test the ShCompile interface with different parameters.
+//
+
+#include "angle_gl.h"
+#include "gtest/gtest.h"
+#include "GLSLANG/ShaderLang.h"
+
+class ShCompileTest : public testing::Test
+{
+ public:
+ ShCompileTest() {}
+
+ protected:
+ void SetUp() override
+ {
+ ShInitBuiltInResources(&mResources);
+ mCompiler = ShConstructCompiler(GL_FRAGMENT_SHADER, SH_WEBGL_SPEC,
+ SH_GLSL_COMPATIBILITY_OUTPUT, &mResources);
+ ASSERT_TRUE(mCompiler != nullptr) << "Compiler could not be constructed.";
+ }
+
+ void TearDown() override
+ {
+ if (mCompiler)
+ {
+ ShDestruct(mCompiler);
+ mCompiler = nullptr;
+ }
+ }
+
+ void testCompile(const char **shaderStrings, int stringCount, bool expectation)
+ {
+ bool success = ShCompile(mCompiler, shaderStrings, stringCount, 0);
+ const std::string &compileLog = ShGetInfoLog(mCompiler);
+ EXPECT_EQ(expectation, success) << compileLog;
+ }
+
+ private:
+ ShBuiltInResources mResources;
+ ShHandle mCompiler;
+};
+
+// Test calling ShCompile with more than one shader source string.
+TEST_F(ShCompileTest, MultipleShaderStrings)
+{
+ const std::string &shaderString1 =
+ "precision mediump float;\n"
+ "void main() {\n";
+ const std::string &shaderString2 =
+ " gl_FragColor = vec4(0.0);\n"
+ "}";
+
+ const char *shaderStrings[] = {shaderString1.c_str(), shaderString2.c_str()};
+
+ testCompile(shaderStrings, 2, true);
+}
+
+// Test calling ShCompile with a tokens split into different shader source strings.
+TEST_F(ShCompileTest, TokensSplitInShaderStrings)
+{
+ const std::string &shaderString1 =
+ "precision mediump float;\n"
+ "void ma";
+ const std::string &shaderString2 =
+ "in() {\n"
+ "#i";
+ const std::string &shaderString3 =
+ "f 1\n"
+ " gl_FragColor = vec4(0.0);\n"
+ "#endif\n"
+ "}";
+
+ const char *shaderStrings[] = {shaderString1.c_str(), shaderString2.c_str(),
+ shaderString3.c_str()};
+
+ testCompile(shaderStrings, 3, true);
+}