xref: /aosp_15_r20/external/deqp/modules/gles2/functional/es2fStringQueryTests.cpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
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