#ifndef _ESEXTCGPUSHADER5TESTS_HPP
#define _ESEXTCGPUSHADER5TESTS_HPP
/*-------------------------------------------------------------------------
 * OpenGL Conformance Test Suite
 * -----------------------------
 *
 * Copyright (c) 2014-2016 The Khronos Group Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */ /*!
 * \file
 * \brief
 */ /*-------------------------------------------------------------------*/

#include "glcTestCase.hpp"
#include "gluShaderUtil.hpp"
#include "tcuDefs.hpp"

#include "../esextcTestCaseBase.hpp"

namespace glcts
{

class GPUShader5Tests : public glcts::TestCaseGroupBase
{
public:
	/* Public methods */
	GPUShader5Tests(glcts::Context& context, const ExtParameters& extParams);
	virtual ~GPUShader5Tests(void)
	{
	}

	void init(void);

private:
	/* Private methods */
	GPUShader5Tests(const GPUShader5Tests& other);
	GPUShader5Tests& operator=(const GPUShader5Tests& other);

	/* Private variables */
	glu::GLSLVersion m_glslVersion;
};

} // namespace glcts

#endif // _ESEXTCGPUSHADER5TESTS_HPP
