// // Copyright 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. // // ShaderCompileTreeTest.h: // Test that shader validation results in the correct compile status. // #ifndef TESTS_TEST_UTILS_SHADER_COMPILE_TREE_TEST_H_ #define TESTS_TEST_UTILS_SHADER_COMPILE_TREE_TEST_H_ #include "GLSLANG/ShaderLang.h" #include "angle_gl.h" #include "compiler/translator/PoolAlloc.h" #include "gtest/gtest.h" namespace sh { class TIntermBlock; class TIntermNode; class TranslatorESSL; class ShaderCompileTreeTest : public testing::Test { public: ShaderCompileTreeTest() : mCompileOptions{} {} protected: void SetUp() override; void TearDown() override; // Return true when compilation succeeds bool compile(const std::string &shaderString); void compileAssumeSuccess(const std::string &shaderString); bool hasWarning() const; const std::vector &getUniforms() const; const std::vector &getAttributes() const; virtual void initResources(ShBuiltInResources *resources) {} virtual ::GLenum getShaderType() const = 0; virtual ShShaderSpec getShaderSpec() const = 0; std::string mInfoLog; ShCompileOptions mCompileOptions; TIntermBlock *mASTRoot; private: TranslatorESSL *mTranslator; angle::PoolAllocator mAllocator; }; // Returns true if the node is some kind of a zero node - either constructor or a constant union // node. bool IsZero(TIntermNode *node); } // namespace sh #endif // TESTS_TEST_UTILS_SHADER_COMPILE_TREE_TEST_H_