blob: 3f72d88d8bcf2a5c697c7b3da9a3ff82598ca7b4 [file] [log] [blame]
//
// Copyright 2017 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.
//
// ProgramParameterTest: validate parameters of ProgramParameter
#include "test_utils/ANGLETest.h"
using namespace angle;
namespace
{
class ProgramParameterTest : public ANGLETest
{
protected:
ProgramParameterTest()
{
setWindowWidth(64);
setWindowHeight(64);
setConfigRedBits(8);
setConfigGreenBits(8);
setConfigBlueBits(8);
setConfigAlphaBits(8);
}
};
class ProgramParameterTestES31 : public ProgramParameterTest
{
protected:
ProgramParameterTestES31() : ProgramParameterTest() {}
};
// If es version < 3.1, PROGRAM_SEPARABLE is not supported.
TEST_P(ProgramParameterTest, ValidatePname)
{
GLuint program = glCreateProgram();
ASSERT_NE(program, 0u);
glProgramParameteri(program, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE);
ASSERT_GL_NO_ERROR();
glProgramParameteri(program, GL_PROGRAM_SEPARABLE, GL_TRUE);
if (getClientMajorVersion() < 3 || getClientMinorVersion() < 1)
{
ASSERT_GL_ERROR(GL_INVALID_ENUM);
}
else
{
ASSERT_GL_NO_ERROR();
}
glDeleteProgram(program);
}
// Validate parameters for ProgramParameter when pname is PROGRAM_SEPARABLE.
TEST_P(ProgramParameterTestES31, ValidateParameters)
{
GLuint program = glCreateProgram();
ASSERT_NE(program, 0u);
glProgramParameteri(0, GL_PROGRAM_SEPARABLE, GL_TRUE);
ASSERT_GL_ERROR(GL_INVALID_VALUE);
glProgramParameteri(program, GL_PROGRAM_SEPARABLE, 2);
ASSERT_GL_ERROR(GL_INVALID_VALUE);
glDeleteProgram(program);
}
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ProgramParameterTest);
ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(ProgramParameterTest);
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ProgramParameterTestES31);
ANGLE_INSTANTIATE_TEST_ES31(ProgramParameterTestES31);
} // namespace