Home | History | Annotate | Download | only in functional
      1 /*-------------------------------------------------------------------------
      2  * drawElements Quality Program OpenGL ES 2.0 Module
      3  * -------------------------------------------------
      4  *
      5  * Copyright 2014 The Android Open Source Project
      6  *
      7  * Licensed under the Apache License, Version 2.0 (the "License");
      8  * you may not use this file except in compliance with the License.
      9  * You may obtain a copy of the License at
     10  *
     11  *      http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing, software
     14  * distributed under the License is distributed on an "AS IS" BASIS,
     15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16  * See the License for the specific language governing permissions and
     17  * limitations under the License.
     18  *
     19  *//*!
     20  * \file
     21  * \brief String Query tests.
     22  *//*--------------------------------------------------------------------*/
     23 
     24 #include "es2fStringQueryTests.hpp"
     25 #include "es2fApiCase.hpp"
     26 #include "gluRenderContext.hpp"
     27 #include "glwEnums.hpp"
     28 #include "glwFunctions.hpp"
     29 #include "deString.h"
     30 
     31 #include <algorithm>
     32 #include <sstream>
     33 #include <string>
     34 
     35 using namespace glw; // GLint and other GL types
     36 
     37 namespace deqp
     38 {
     39 namespace gles2
     40 {
     41 namespace Functional
     42 {
     43 
     44 StringQueryTests::StringQueryTests (Context& context)
     45 	: TestCaseGroup (context, "string", "String Query tests")
     46 {
     47 }
     48 
     49 StringQueryTests::~StringQueryTests (void)
     50 {
     51 }
     52 
     53 void StringQueryTests::init (void)
     54 {
     55 	using tcu::TestLog;
     56 
     57 	ES2F_ADD_API_CASE(renderer, "RENDERER",
     58 	{
     59 		const GLubyte* string = glGetString(GL_RENDERER);
     60 		if (string == NULL)
     61 			m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Got invalid string");
     62 	});
     63 	ES2F_ADD_API_CASE(vendor, "VENDOR",
     64 	{
     65 		const GLubyte* string = glGetString(GL_VENDOR);
     66 		if (string == NULL)
     67 			m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Got invalid string");
     68 	});
     69 	ES2F_ADD_API_CASE(version, "VERSION",
     70 	{
     71 		const char* string				= (const char*)glGetString(GL_VERSION);
     72 		const char	referenceString[]	= "OpenGL ES ";
     73 
     74 		if (string == NULL)
     75 			TCU_FAIL("Got invalid string");
     76 
     77 		if (!deStringBeginsWith(string, referenceString))
     78 			TCU_FAIL("Got invalid string prefix");
     79 
     80 		{
     81 			std::string tmpString;
     82 			char		versionDelimiter;
     83 			int			glMajor				= 0;
     84 			int			glMinor				= 0;
     85 
     86 			std::istringstream versionStream(string);
     87 			versionStream >> tmpString;			// OpenGL
     88 			versionStream >> tmpString;			// ES
     89 			versionStream >> glMajor;			// x
     90 			versionStream >> std::noskipws;
     91 			versionStream >> versionDelimiter;	// .
     92 			versionStream >> glMinor;			// x
     93 
     94 			if (!versionStream)
     95 				TCU_FAIL("Got invalid string format");
     96 		}
     97 	});
     98 	ES2F_ADD_API_CASE(shading_language_version, "SHADING_LANGUAGE_VERSION",
     99 	{
    100 		const char* string				= (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION);
    101 		const char	referenceString[]	= "OpenGL ES GLSL ES ";
    102 
    103 		if (string == NULL)
    104 			TCU_FAIL("Got invalid string");
    105 
    106 		if (!deStringBeginsWith(string, referenceString))
    107 			TCU_FAIL("Got invalid string prefix");
    108 
    109 		{
    110 			std::string tmpString;
    111 			char		versionDelimiter;
    112 			int			glslMajor			= 0;
    113 			int			glslMinor			= 0;
    114 
    115 			std::istringstream versionStream(string);
    116 			versionStream >> tmpString;			// OpenGL
    117 			versionStream >> tmpString;			// ES
    118 			versionStream >> tmpString;			// GLSL
    119 			versionStream >> tmpString;			// ES
    120 			versionStream >> glslMajor;			// x
    121 			versionStream >> std::noskipws;
    122 			versionStream >> versionDelimiter;	// .
    123 			versionStream >> glslMinor;			// x
    124 
    125 			if (!versionStream)
    126 				TCU_FAIL("Got invalid string format");
    127 		}
    128 	});
    129 	ES2F_ADD_API_CASE(extensions, "EXTENSIONS",
    130 	{
    131 		const char* extensions_cstring = (const char*)glGetString(GL_EXTENSIONS);
    132 		if (extensions_cstring == NULL)
    133 			m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Got invalid string");
    134 	});
    135 }
    136 
    137 } // Functional
    138 } // gles2
    139 } // deqp
    140