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