Hash :
10fcd9be
Author :
Date :
2016-06-30T12:24:09
Add a helper class for compiler string matching tests The MatchOutputCodeTest class makes it easier to implement tests that do string matching on compiler output. Inheriting test classes set the compiler settings, tests then call compile() with the shader string and can call foundInCode() to check if the output code contains a given string. Various compiler unit tests that already did string matching are refactored to make use of this new helper class. Some tests now use SH_GLES3_SPEC instead of SH_GLES2_SPEC - this should not have a significant impact on test coverage. Some compileTestShader function variants that are now unused can be removed from the code. BUG=angleproject:1430 TEST=angle_unittests Change-Id: I1fd3529d5a1c6ab192f95ace800cf162604e68e7 Reviewed-on: https://chromium-review.googlesource.com/357800 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
//
// 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.
//
// compiler_test.h:
// utilities for compiler unit tests.
#ifndef TESTS_TEST_UTILS_COMPILER_TEST_H_
#define TESTS_TEST_UTILS_COMPILER_TEST_H_
#include <map>
#include "angle_gl.h"
#include "gtest/gtest.h"
#include "GLSLANG/ShaderLang.h"
bool compileTestShader(GLenum type,
ShShaderSpec spec,
ShShaderOutput output,
const std::string &shaderString,
ShBuiltInResources *resources,
int compileOptions,
std::string *translatedCode,
std::string *infoLog);
bool compileTestShader(GLenum type,
ShShaderSpec spec,
ShShaderOutput output,
const std::string &shaderString,
int compileOptions,
std::string *translatedCode,
std::string *infoLog);
class MatchOutputCodeTest : public testing::Test
{
protected:
MatchOutputCodeTest(GLenum shaderType, int defaultCompileOptions, ShShaderOutput outputType);
void addOutputType(const ShShaderOutput outputType);
ShBuiltInResources *getResources();
// Compile functions clear any results from earlier calls to them.
void compile(const std::string &shaderString);
void compile(const std::string &shaderString, const int compileOptions);
bool foundInESSLCode(const char *stringToFind) const
{
return foundInCode(SH_ESSL_OUTPUT, stringToFind);
}
bool foundInGLSLCode(const char *stringToFind) const
{
return foundInCode(SH_GLSL_COMPATIBILITY_OUTPUT, stringToFind);
}
bool foundInCode(ShShaderOutput output, const char *stringToFind) const;
// Test that the string occurs for exactly expectedOccurrences times
bool foundInCode(ShShaderOutput output,
const char *stringToFind,
const int expectedOccurrences) const;
// Test that the string is found in all outputs
bool foundInCode(const char *stringToFind) const;
// Test that the string occurs for exactly expectedOccurrences times in all outputs
bool foundInCode(const char *stringToFind, const int expectedOccurrences) const;
// Test that the string is found in none of the outputs
bool notFoundInCode(const char *stringToFind) const;
private:
bool compileWithSettings(ShShaderOutput output,
const std::string &shaderString,
int compileOptions,
std::string *translatedCode,
std::string *infoLog);
GLenum mShaderType;
int mDefaultCompileOptions;
ShBuiltInResources mResources;
std::map<ShShaderOutput, std::string> mOutputCode;
};
#endif // TESTS_TEST_UTILS_COMPILER_TEST_H_