1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This file is auto-generated from
6 // gpu/command_buffer/build_gles2_cmd_buffer.py
7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename
9 // DO NOT EDIT!
10
11 // It is included by gles2_cmd_decoder_unittest_2.cc
12 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
13 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
14
TEST_P(GLES2DecoderTest2,GetProgramivValidArgs)15 TEST_P(GLES2DecoderTest2, GetProgramivValidArgs) {
16 SpecializedSetup<cmds::GetProgramiv, 0>(true);
17 typedef cmds::GetProgramiv::Result Result;
18 Result* result = static_cast<Result*>(shared_memory_address_);
19 result->size = 0;
20 cmds::GetProgramiv cmd;
21 cmd.Init(client_program_id_, GL_DELETE_STATUS, shared_memory_id_,
22 shared_memory_offset_);
23 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
24 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DELETE_STATUS),
25 result->GetNumResults());
26 EXPECT_EQ(GL_NO_ERROR, GetGLError());
27 }
28
TEST_P(GLES2DecoderTest2,GetProgramivInvalidArgs1_0)29 TEST_P(GLES2DecoderTest2, GetProgramivInvalidArgs1_0) {
30 EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0);
31 SpecializedSetup<cmds::GetProgramiv, 0>(false);
32 cmds::GetProgramiv::Result* result =
33 static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_);
34 result->size = 0;
35 cmds::GetProgramiv cmd;
36 cmd.Init(client_program_id_, GL_PROGRAM_BINARY_RETRIEVABLE_HINT,
37 shared_memory_id_, shared_memory_offset_);
38 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
39 EXPECT_EQ(0u, result->size);
40 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
41 }
42
TEST_P(GLES2DecoderTest2,GetProgramivInvalidArgs2_0)43 TEST_P(GLES2DecoderTest2, GetProgramivInvalidArgs2_0) {
44 EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0);
45 SpecializedSetup<cmds::GetProgramiv, 0>(false);
46 cmds::GetProgramiv::Result* result =
47 static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_);
48 result->size = 0;
49 cmds::GetProgramiv cmd;
50 cmd.Init(client_program_id_, GL_DELETE_STATUS, kInvalidSharedMemoryId, 0);
51 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
52 EXPECT_EQ(0u, result->size);
53 }
54
TEST_P(GLES2DecoderTest2,GetProgramivInvalidArgs2_1)55 TEST_P(GLES2DecoderTest2, GetProgramivInvalidArgs2_1) {
56 EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0);
57 SpecializedSetup<cmds::GetProgramiv, 0>(false);
58 cmds::GetProgramiv::Result* result =
59 static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_);
60 result->size = 0;
61 cmds::GetProgramiv cmd;
62 cmd.Init(client_program_id_, GL_DELETE_STATUS, shared_memory_id_,
63 kInvalidSharedMemoryOffset);
64 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
65 EXPECT_EQ(0u, result->size);
66 }
67
TEST_P(GLES2DecoderTest2,GetProgramInfoLogValidArgs)68 TEST_P(GLES2DecoderTest2, GetProgramInfoLogValidArgs) {
69 const char* kInfo = "hello";
70 const uint32_t kBucketId = 123;
71 SpecializedSetup<cmds::GetProgramInfoLog, 0>(true);
72
73 cmds::GetProgramInfoLog cmd;
74 cmd.Init(client_program_id_, kBucketId);
75 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
76 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
77 ASSERT_TRUE(bucket != nullptr);
78 EXPECT_EQ(strlen(kInfo) + 1, bucket->size());
79 EXPECT_EQ(0,
80 memcmp(bucket->GetData(0, bucket->size()), kInfo, bucket->size()));
81 EXPECT_EQ(GL_NO_ERROR, GetGLError());
82 }
83
TEST_P(GLES2DecoderTest2,GetProgramInfoLogInvalidArgs)84 TEST_P(GLES2DecoderTest2, GetProgramInfoLogInvalidArgs) {
85 const uint32_t kBucketId = 123;
86 cmds::GetProgramInfoLog cmd;
87 cmd.Init(kInvalidClientId, kBucketId);
88 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
89 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
90 }
91
TEST_P(GLES2DecoderTest2,GetRenderbufferParameterivValidArgs)92 TEST_P(GLES2DecoderTest2, GetRenderbufferParameterivValidArgs) {
93 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
94 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(true);
95 typedef cmds::GetRenderbufferParameteriv::Result Result;
96 Result* result = static_cast<Result*>(shared_memory_address_);
97 EXPECT_CALL(
98 *gl_, GetRenderbufferParameterivEXT(
99 GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, result->GetData()));
100 result->size = 0;
101 cmds::GetRenderbufferParameteriv cmd;
102 cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_,
103 shared_memory_offset_);
104 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
105 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
106 GL_RENDERBUFFER_RED_SIZE),
107 result->GetNumResults());
108 EXPECT_EQ(GL_NO_ERROR, GetGLError());
109 }
110
TEST_P(GLES2DecoderTest2,GetRenderbufferParameterivInvalidArgs0_0)111 TEST_P(GLES2DecoderTest2, GetRenderbufferParameterivInvalidArgs0_0) {
112 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
113 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false);
114 cmds::GetRenderbufferParameteriv::Result* result =
115 static_cast<cmds::GetRenderbufferParameteriv::Result*>(
116 shared_memory_address_);
117 result->size = 0;
118 cmds::GetRenderbufferParameteriv cmd;
119 cmd.Init(GL_FRAMEBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_,
120 shared_memory_offset_);
121 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
122 EXPECT_EQ(0u, result->size);
123 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
124 }
125
TEST_P(GLES2DecoderTest2,GetRenderbufferParameterivInvalidArgs2_0)126 TEST_P(GLES2DecoderTest2, GetRenderbufferParameterivInvalidArgs2_0) {
127 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
128 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false);
129 cmds::GetRenderbufferParameteriv::Result* result =
130 static_cast<cmds::GetRenderbufferParameteriv::Result*>(
131 shared_memory_address_);
132 result->size = 0;
133 cmds::GetRenderbufferParameteriv cmd;
134 cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, kInvalidSharedMemoryId,
135 0);
136 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
137 EXPECT_EQ(0u, result->size);
138 }
139
TEST_P(GLES2DecoderTest2,GetRenderbufferParameterivInvalidArgs2_1)140 TEST_P(GLES2DecoderTest2, GetRenderbufferParameterivInvalidArgs2_1) {
141 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
142 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false);
143 cmds::GetRenderbufferParameteriv::Result* result =
144 static_cast<cmds::GetRenderbufferParameteriv::Result*>(
145 shared_memory_address_);
146 result->size = 0;
147 cmds::GetRenderbufferParameteriv cmd;
148 cmd.Init(GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_,
149 kInvalidSharedMemoryOffset);
150 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
151 EXPECT_EQ(0u, result->size);
152 }
153
TEST_P(GLES3DecoderTest2,GetSamplerParameterfvValidArgs)154 TEST_P(GLES3DecoderTest2, GetSamplerParameterfvValidArgs) {
155 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
156 SpecializedSetup<cmds::GetSamplerParameterfv, 0>(true);
157 typedef cmds::GetSamplerParameterfv::Result Result;
158 Result* result = static_cast<Result*>(shared_memory_address_);
159 EXPECT_CALL(*gl_,
160 GetSamplerParameterfv(kServiceSamplerId, GL_TEXTURE_MAG_FILTER,
161 result->GetData()));
162 result->size = 0;
163 cmds::GetSamplerParameterfv cmd;
164 cmd.Init(client_sampler_id_, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
165 shared_memory_offset_);
166 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
167 EXPECT_EQ(
168 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER),
169 result->GetNumResults());
170 EXPECT_EQ(GL_NO_ERROR, GetGLError());
171 }
172
TEST_P(GLES3DecoderTest2,GetSamplerParameterivValidArgs)173 TEST_P(GLES3DecoderTest2, GetSamplerParameterivValidArgs) {
174 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
175 SpecializedSetup<cmds::GetSamplerParameteriv, 0>(true);
176 typedef cmds::GetSamplerParameteriv::Result Result;
177 Result* result = static_cast<Result*>(shared_memory_address_);
178 EXPECT_CALL(*gl_,
179 GetSamplerParameteriv(kServiceSamplerId, GL_TEXTURE_MAG_FILTER,
180 result->GetData()));
181 result->size = 0;
182 cmds::GetSamplerParameteriv cmd;
183 cmd.Init(client_sampler_id_, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
184 shared_memory_offset_);
185 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
186 EXPECT_EQ(
187 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER),
188 result->GetNumResults());
189 EXPECT_EQ(GL_NO_ERROR, GetGLError());
190 }
191
TEST_P(GLES2DecoderTest2,GetShaderivValidArgs)192 TEST_P(GLES2DecoderTest2, GetShaderivValidArgs) {
193 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
194 SpecializedSetup<cmds::GetShaderiv, 0>(true);
195 typedef cmds::GetShaderiv::Result Result;
196 Result* result = static_cast<Result*>(shared_memory_address_);
197 EXPECT_CALL(*gl_,
198 GetShaderiv(kServiceShaderId, GL_SHADER_TYPE, result->GetData()));
199 result->size = 0;
200 cmds::GetShaderiv cmd;
201 cmd.Init(client_shader_id_, GL_SHADER_TYPE, shared_memory_id_,
202 shared_memory_offset_);
203 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
204 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_SHADER_TYPE),
205 result->GetNumResults());
206 EXPECT_EQ(GL_NO_ERROR, GetGLError());
207 }
208
TEST_P(GLES2DecoderTest2,GetShaderivInvalidArgs2_0)209 TEST_P(GLES2DecoderTest2, GetShaderivInvalidArgs2_0) {
210 EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0);
211 SpecializedSetup<cmds::GetShaderiv, 0>(false);
212 cmds::GetShaderiv::Result* result =
213 static_cast<cmds::GetShaderiv::Result*>(shared_memory_address_);
214 result->size = 0;
215 cmds::GetShaderiv cmd;
216 cmd.Init(client_shader_id_, GL_SHADER_TYPE, kInvalidSharedMemoryId, 0);
217 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
218 EXPECT_EQ(0u, result->size);
219 }
220
TEST_P(GLES2DecoderTest2,GetShaderivInvalidArgs2_1)221 TEST_P(GLES2DecoderTest2, GetShaderivInvalidArgs2_1) {
222 EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0);
223 SpecializedSetup<cmds::GetShaderiv, 0>(false);
224 cmds::GetShaderiv::Result* result =
225 static_cast<cmds::GetShaderiv::Result*>(shared_memory_address_);
226 result->size = 0;
227 cmds::GetShaderiv cmd;
228 cmd.Init(client_shader_id_, GL_SHADER_TYPE, shared_memory_id_,
229 kInvalidSharedMemoryOffset);
230 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
231 EXPECT_EQ(0u, result->size);
232 }
233
TEST_P(GLES3DecoderTest2,GetSyncivValidArgs)234 TEST_P(GLES3DecoderTest2, GetSyncivValidArgs) {
235 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
236 SpecializedSetup<cmds::GetSynciv, 0>(true);
237 typedef cmds::GetSynciv::Result Result;
238 Result* result = static_cast<Result*>(shared_memory_address_);
239 EXPECT_CALL(
240 *gl_, GetSynciv(reinterpret_cast<GLsync>(kServiceSyncId), GL_SYNC_STATUS,
241 decoder_->GetGLES2Util()->GLGetNumValuesReturned(
242 GL_SYNC_STATUS),
243 nullptr, result->GetData()));
244 result->size = 0;
245 cmds::GetSynciv cmd;
246 cmd.Init(client_sync_id_, GL_SYNC_STATUS, shared_memory_id_,
247 shared_memory_offset_);
248 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
249 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_SYNC_STATUS),
250 result->GetNumResults());
251 EXPECT_EQ(GL_NO_ERROR, GetGLError());
252 }
253
TEST_P(GLES2DecoderTest2,GetTexParameterfvValidArgs)254 TEST_P(GLES2DecoderTest2, GetTexParameterfvValidArgs) {
255 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
256 SpecializedSetup<cmds::GetTexParameterfv, 0>(true);
257 typedef cmds::GetTexParameterfv::Result Result;
258 Result* result = static_cast<Result*>(shared_memory_address_);
259 EXPECT_CALL(*gl_, GetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
260 result->GetData()));
261 result->size = 0;
262 cmds::GetTexParameterfv cmd;
263 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
264 shared_memory_offset_);
265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
266 EXPECT_EQ(
267 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER),
268 result->GetNumResults());
269 EXPECT_EQ(GL_NO_ERROR, GetGLError());
270 }
271
TEST_P(GLES2DecoderTest2,GetTexParameterfvInvalidArgs0_0)272 TEST_P(GLES2DecoderTest2, GetTexParameterfvInvalidArgs0_0) {
273 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
274 SpecializedSetup<cmds::GetTexParameterfv, 0>(false);
275 cmds::GetTexParameterfv::Result* result =
276 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_);
277 result->size = 0;
278 cmds::GetTexParameterfv cmd;
279 cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
280 shared_memory_offset_);
281 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
282 EXPECT_EQ(0u, result->size);
283 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
284 }
285
TEST_P(GLES2DecoderTest2,GetTexParameterfvInvalidArgs1_0)286 TEST_P(GLES2DecoderTest2, GetTexParameterfvInvalidArgs1_0) {
287 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
288 SpecializedSetup<cmds::GetTexParameterfv, 0>(false);
289 cmds::GetTexParameterfv::Result* result =
290 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_);
291 result->size = 0;
292 cmds::GetTexParameterfv cmd;
293 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_,
294 shared_memory_offset_);
295 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
296 EXPECT_EQ(0u, result->size);
297 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
298 }
299
TEST_P(GLES2DecoderTest2,GetTexParameterfvInvalidArgs2_0)300 TEST_P(GLES2DecoderTest2, GetTexParameterfvInvalidArgs2_0) {
301 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
302 SpecializedSetup<cmds::GetTexParameterfv, 0>(false);
303 cmds::GetTexParameterfv::Result* result =
304 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_);
305 result->size = 0;
306 cmds::GetTexParameterfv cmd;
307 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0);
308 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
309 EXPECT_EQ(0u, result->size);
310 }
311
TEST_P(GLES2DecoderTest2,GetTexParameterfvInvalidArgs2_1)312 TEST_P(GLES2DecoderTest2, GetTexParameterfvInvalidArgs2_1) {
313 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
314 SpecializedSetup<cmds::GetTexParameterfv, 0>(false);
315 cmds::GetTexParameterfv::Result* result =
316 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_);
317 result->size = 0;
318 cmds::GetTexParameterfv cmd;
319 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
320 kInvalidSharedMemoryOffset);
321 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
322 EXPECT_EQ(0u, result->size);
323 }
324
TEST_P(GLES2DecoderTest2,GetTexParameterivValidArgs)325 TEST_P(GLES2DecoderTest2, GetTexParameterivValidArgs) {
326 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
327 SpecializedSetup<cmds::GetTexParameteriv, 0>(true);
328 typedef cmds::GetTexParameteriv::Result Result;
329 Result* result = static_cast<Result*>(shared_memory_address_);
330 EXPECT_CALL(*gl_, GetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
331 result->GetData()));
332 result->size = 0;
333 cmds::GetTexParameteriv cmd;
334 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
335 shared_memory_offset_);
336 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
337 EXPECT_EQ(
338 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER),
339 result->GetNumResults());
340 EXPECT_EQ(GL_NO_ERROR, GetGLError());
341 }
342
TEST_P(GLES2DecoderTest2,GetTexParameterivInvalidArgs0_0)343 TEST_P(GLES2DecoderTest2, GetTexParameterivInvalidArgs0_0) {
344 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
345 SpecializedSetup<cmds::GetTexParameteriv, 0>(false);
346 cmds::GetTexParameteriv::Result* result =
347 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_);
348 result->size = 0;
349 cmds::GetTexParameteriv cmd;
350 cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
351 shared_memory_offset_);
352 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
353 EXPECT_EQ(0u, result->size);
354 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
355 }
356
TEST_P(GLES2DecoderTest2,GetTexParameterivInvalidArgs1_0)357 TEST_P(GLES2DecoderTest2, GetTexParameterivInvalidArgs1_0) {
358 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
359 SpecializedSetup<cmds::GetTexParameteriv, 0>(false);
360 cmds::GetTexParameteriv::Result* result =
361 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_);
362 result->size = 0;
363 cmds::GetTexParameteriv cmd;
364 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_,
365 shared_memory_offset_);
366 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
367 EXPECT_EQ(0u, result->size);
368 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
369 }
370
TEST_P(GLES2DecoderTest2,GetTexParameterivInvalidArgs2_0)371 TEST_P(GLES2DecoderTest2, GetTexParameterivInvalidArgs2_0) {
372 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
373 SpecializedSetup<cmds::GetTexParameteriv, 0>(false);
374 cmds::GetTexParameteriv::Result* result =
375 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_);
376 result->size = 0;
377 cmds::GetTexParameteriv cmd;
378 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0);
379 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
380 EXPECT_EQ(0u, result->size);
381 }
382
TEST_P(GLES2DecoderTest2,GetTexParameterivInvalidArgs2_1)383 TEST_P(GLES2DecoderTest2, GetTexParameterivInvalidArgs2_1) {
384 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
385 SpecializedSetup<cmds::GetTexParameteriv, 0>(false);
386 cmds::GetTexParameteriv::Result* result =
387 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_);
388 result->size = 0;
389 cmds::GetTexParameteriv cmd;
390 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
391 kInvalidSharedMemoryOffset);
392 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
393 EXPECT_EQ(0u, result->size);
394 }
395
TEST_P(GLES2DecoderTest2,GetVertexAttribfvValidArgs)396 TEST_P(GLES2DecoderTest2, GetVertexAttribfvValidArgs) {
397 SpecializedSetup<cmds::GetVertexAttribfv, 0>(true);
398 typedef cmds::GetVertexAttribfv::Result Result;
399 Result* result = static_cast<Result*>(shared_memory_address_);
400 result->size = 0;
401 cmds::GetVertexAttribfv cmd;
402 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
403 shared_memory_offset_);
404 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
405 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
406 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED),
407 result->GetNumResults());
408 EXPECT_EQ(GL_NO_ERROR, GetGLError());
409 }
410
TEST_P(GLES2DecoderTest2,GetVertexAttribfvInvalidArgs2_0)411 TEST_P(GLES2DecoderTest2, GetVertexAttribfvInvalidArgs2_0) {
412 EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0);
413 SpecializedSetup<cmds::GetVertexAttribfv, 0>(false);
414 cmds::GetVertexAttribfv::Result* result =
415 static_cast<cmds::GetVertexAttribfv::Result*>(shared_memory_address_);
416 result->size = 0;
417 cmds::GetVertexAttribfv cmd;
418 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0);
419 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
420 EXPECT_EQ(0u, result->size);
421 }
422
TEST_P(GLES2DecoderTest2,GetVertexAttribfvInvalidArgs2_1)423 TEST_P(GLES2DecoderTest2, GetVertexAttribfvInvalidArgs2_1) {
424 EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0);
425 SpecializedSetup<cmds::GetVertexAttribfv, 0>(false);
426 cmds::GetVertexAttribfv::Result* result =
427 static_cast<cmds::GetVertexAttribfv::Result*>(shared_memory_address_);
428 result->size = 0;
429 cmds::GetVertexAttribfv cmd;
430 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
431 kInvalidSharedMemoryOffset);
432 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
433 EXPECT_EQ(0u, result->size);
434 }
435
TEST_P(GLES2DecoderTest2,GetVertexAttribivValidArgs)436 TEST_P(GLES2DecoderTest2, GetVertexAttribivValidArgs) {
437 SpecializedSetup<cmds::GetVertexAttribiv, 0>(true);
438 typedef cmds::GetVertexAttribiv::Result Result;
439 Result* result = static_cast<Result*>(shared_memory_address_);
440 result->size = 0;
441 cmds::GetVertexAttribiv cmd;
442 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
443 shared_memory_offset_);
444 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
445 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
446 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED),
447 result->GetNumResults());
448 EXPECT_EQ(GL_NO_ERROR, GetGLError());
449 }
450
TEST_P(GLES2DecoderTest2,GetVertexAttribivInvalidArgs2_0)451 TEST_P(GLES2DecoderTest2, GetVertexAttribivInvalidArgs2_0) {
452 EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0);
453 SpecializedSetup<cmds::GetVertexAttribiv, 0>(false);
454 cmds::GetVertexAttribiv::Result* result =
455 static_cast<cmds::GetVertexAttribiv::Result*>(shared_memory_address_);
456 result->size = 0;
457 cmds::GetVertexAttribiv cmd;
458 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0);
459 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
460 EXPECT_EQ(0u, result->size);
461 }
462
TEST_P(GLES2DecoderTest2,GetVertexAttribivInvalidArgs2_1)463 TEST_P(GLES2DecoderTest2, GetVertexAttribivInvalidArgs2_1) {
464 EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0);
465 SpecializedSetup<cmds::GetVertexAttribiv, 0>(false);
466 cmds::GetVertexAttribiv::Result* result =
467 static_cast<cmds::GetVertexAttribiv::Result*>(shared_memory_address_);
468 result->size = 0;
469 cmds::GetVertexAttribiv cmd;
470 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
471 kInvalidSharedMemoryOffset);
472 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
473 EXPECT_EQ(0u, result->size);
474 }
475
TEST_P(GLES3DecoderTest2,GetVertexAttribIivValidArgs)476 TEST_P(GLES3DecoderTest2, GetVertexAttribIivValidArgs) {
477 SpecializedSetup<cmds::GetVertexAttribIiv, 0>(true);
478 typedef cmds::GetVertexAttribIiv::Result Result;
479 Result* result = static_cast<Result*>(shared_memory_address_);
480 result->size = 0;
481 cmds::GetVertexAttribIiv cmd;
482 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
483 shared_memory_offset_);
484 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
485 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
486 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED),
487 result->GetNumResults());
488 EXPECT_EQ(GL_NO_ERROR, GetGLError());
489 }
490
TEST_P(GLES3DecoderTest2,GetVertexAttribIuivValidArgs)491 TEST_P(GLES3DecoderTest2, GetVertexAttribIuivValidArgs) {
492 SpecializedSetup<cmds::GetVertexAttribIuiv, 0>(true);
493 typedef cmds::GetVertexAttribIuiv::Result Result;
494 Result* result = static_cast<Result*>(shared_memory_address_);
495 result->size = 0;
496 cmds::GetVertexAttribIuiv cmd;
497 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
498 shared_memory_offset_);
499 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
500 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
501 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED),
502 result->GetNumResults());
503 EXPECT_EQ(GL_NO_ERROR, GetGLError());
504 }
505
TEST_P(GLES2DecoderTest2,HintValidArgs)506 TEST_P(GLES2DecoderTest2, HintValidArgs) {
507 EXPECT_CALL(*gl_, Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST));
508 SpecializedSetup<cmds::Hint, 0>(true);
509 cmds::Hint cmd;
510 cmd.Init(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
511 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
512 EXPECT_EQ(GL_NO_ERROR, GetGLError());
513 }
514
TEST_P(GLES2DecoderTest2,HintInvalidArgs0_0)515 TEST_P(GLES2DecoderTest2, HintInvalidArgs0_0) {
516 EXPECT_CALL(*gl_, Hint(_, _)).Times(0);
517 SpecializedSetup<cmds::Hint, 0>(false);
518 cmds::Hint cmd;
519 cmd.Init(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
520 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
521 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
522 }
523
TEST_P(GLES2DecoderTest2,IsBufferValidArgs)524 TEST_P(GLES2DecoderTest2, IsBufferValidArgs) {
525 SpecializedSetup<cmds::IsBuffer, 0>(true);
526 cmds::IsBuffer cmd;
527 cmd.Init(client_buffer_id_, shared_memory_id_, shared_memory_offset_);
528 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
529 EXPECT_EQ(GL_NO_ERROR, GetGLError());
530 }
531
TEST_P(GLES2DecoderTest2,IsBufferInvalidArgsBadSharedMemoryId)532 TEST_P(GLES2DecoderTest2, IsBufferInvalidArgsBadSharedMemoryId) {
533 SpecializedSetup<cmds::IsBuffer, 0>(false);
534 cmds::IsBuffer cmd;
535 cmd.Init(client_buffer_id_, kInvalidSharedMemoryId, shared_memory_offset_);
536 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
537 cmd.Init(client_buffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
538 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
539 }
540
TEST_P(GLES2DecoderTest2,IsEnabledValidArgs)541 TEST_P(GLES2DecoderTest2, IsEnabledValidArgs) {
542 SpecializedSetup<cmds::IsEnabled, 0>(true);
543 cmds::IsEnabled cmd;
544 cmd.Init(GL_BLEND, shared_memory_id_, shared_memory_offset_);
545 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
546 EXPECT_EQ(GL_NO_ERROR, GetGLError());
547 }
548
TEST_P(GLES2DecoderTest2,IsEnabledInvalidArgs0_0)549 TEST_P(GLES2DecoderTest2, IsEnabledInvalidArgs0_0) {
550 EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
551 SpecializedSetup<cmds::IsEnabled, 0>(false);
552 cmds::IsEnabled cmd;
553 cmd.Init(GL_CLIP_PLANE0, shared_memory_id_, shared_memory_offset_);
554 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
555 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
556 }
557
TEST_P(GLES2DecoderTest2,IsEnabledInvalidArgs0_1)558 TEST_P(GLES2DecoderTest2, IsEnabledInvalidArgs0_1) {
559 EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
560 SpecializedSetup<cmds::IsEnabled, 0>(false);
561 cmds::IsEnabled cmd;
562 cmd.Init(GL_POINT_SPRITE, shared_memory_id_, shared_memory_offset_);
563 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
564 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
565 }
566
TEST_P(GLES2DecoderTest2,IsEnabledInvalidArgsBadSharedMemoryId)567 TEST_P(GLES2DecoderTest2, IsEnabledInvalidArgsBadSharedMemoryId) {
568 SpecializedSetup<cmds::IsEnabled, 0>(false);
569 cmds::IsEnabled cmd;
570 cmd.Init(GL_BLEND, kInvalidSharedMemoryId, shared_memory_offset_);
571 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
572 cmd.Init(GL_BLEND, shared_memory_id_, kInvalidSharedMemoryOffset);
573 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
574 }
575
TEST_P(GLES2DecoderTest2,IsFramebufferValidArgs)576 TEST_P(GLES2DecoderTest2, IsFramebufferValidArgs) {
577 SpecializedSetup<cmds::IsFramebuffer, 0>(true);
578 cmds::IsFramebuffer cmd;
579 cmd.Init(client_framebuffer_id_, shared_memory_id_, shared_memory_offset_);
580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
581 EXPECT_EQ(GL_NO_ERROR, GetGLError());
582 }
583
TEST_P(GLES2DecoderTest2,IsFramebufferInvalidArgsBadSharedMemoryId)584 TEST_P(GLES2DecoderTest2, IsFramebufferInvalidArgsBadSharedMemoryId) {
585 SpecializedSetup<cmds::IsFramebuffer, 0>(false);
586 cmds::IsFramebuffer cmd;
587 cmd.Init(client_framebuffer_id_, kInvalidSharedMemoryId,
588 shared_memory_offset_);
589 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
590 cmd.Init(client_framebuffer_id_, shared_memory_id_,
591 kInvalidSharedMemoryOffset);
592 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
593 }
594
TEST_P(GLES2DecoderTest2,IsProgramValidArgs)595 TEST_P(GLES2DecoderTest2, IsProgramValidArgs) {
596 SpecializedSetup<cmds::IsProgram, 0>(true);
597 cmds::IsProgram cmd;
598 cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_);
599 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
600 EXPECT_EQ(GL_NO_ERROR, GetGLError());
601 }
602
TEST_P(GLES2DecoderTest2,IsProgramInvalidArgsBadSharedMemoryId)603 TEST_P(GLES2DecoderTest2, IsProgramInvalidArgsBadSharedMemoryId) {
604 SpecializedSetup<cmds::IsProgram, 0>(false);
605 cmds::IsProgram cmd;
606 cmd.Init(client_program_id_, kInvalidSharedMemoryId, shared_memory_offset_);
607 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
608 cmd.Init(client_program_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
609 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
610 }
611
TEST_P(GLES2DecoderTest2,IsRenderbufferValidArgs)612 TEST_P(GLES2DecoderTest2, IsRenderbufferValidArgs) {
613 SpecializedSetup<cmds::IsRenderbuffer, 0>(true);
614 cmds::IsRenderbuffer cmd;
615 cmd.Init(client_renderbuffer_id_, shared_memory_id_, shared_memory_offset_);
616 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
617 EXPECT_EQ(GL_NO_ERROR, GetGLError());
618 }
619
TEST_P(GLES2DecoderTest2,IsRenderbufferInvalidArgsBadSharedMemoryId)620 TEST_P(GLES2DecoderTest2, IsRenderbufferInvalidArgsBadSharedMemoryId) {
621 SpecializedSetup<cmds::IsRenderbuffer, 0>(false);
622 cmds::IsRenderbuffer cmd;
623 cmd.Init(client_renderbuffer_id_, kInvalidSharedMemoryId,
624 shared_memory_offset_);
625 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
626 cmd.Init(client_renderbuffer_id_, shared_memory_id_,
627 kInvalidSharedMemoryOffset);
628 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
629 }
630
TEST_P(GLES3DecoderTest2,IsSamplerValidArgs)631 TEST_P(GLES3DecoderTest2, IsSamplerValidArgs) {
632 SpecializedSetup<cmds::IsSampler, 0>(true);
633 cmds::IsSampler cmd;
634 cmd.Init(client_sampler_id_, shared_memory_id_, shared_memory_offset_);
635 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
636 EXPECT_EQ(GL_NO_ERROR, GetGLError());
637 }
638
TEST_P(GLES3DecoderTest2,IsSamplerInvalidArgsBadSharedMemoryId)639 TEST_P(GLES3DecoderTest2, IsSamplerInvalidArgsBadSharedMemoryId) {
640 SpecializedSetup<cmds::IsSampler, 0>(false);
641 cmds::IsSampler cmd;
642 cmd.Init(client_sampler_id_, kInvalidSharedMemoryId, shared_memory_offset_);
643 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
644 cmd.Init(client_sampler_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
645 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
646 }
647
TEST_P(GLES2DecoderTest2,IsShaderValidArgs)648 TEST_P(GLES2DecoderTest2, IsShaderValidArgs) {
649 SpecializedSetup<cmds::IsShader, 0>(true);
650 cmds::IsShader cmd;
651 cmd.Init(client_shader_id_, shared_memory_id_, shared_memory_offset_);
652 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
653 EXPECT_EQ(GL_NO_ERROR, GetGLError());
654 }
655
TEST_P(GLES2DecoderTest2,IsShaderInvalidArgsBadSharedMemoryId)656 TEST_P(GLES2DecoderTest2, IsShaderInvalidArgsBadSharedMemoryId) {
657 SpecializedSetup<cmds::IsShader, 0>(false);
658 cmds::IsShader cmd;
659 cmd.Init(client_shader_id_, kInvalidSharedMemoryId, shared_memory_offset_);
660 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
661 cmd.Init(client_shader_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
662 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
663 }
664
TEST_P(GLES3DecoderTest2,IsSyncValidArgs)665 TEST_P(GLES3DecoderTest2, IsSyncValidArgs) {
666 SpecializedSetup<cmds::IsSync, 0>(true);
667 cmds::IsSync cmd;
668 cmd.Init(client_sync_id_, shared_memory_id_, shared_memory_offset_);
669 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
670 EXPECT_EQ(GL_NO_ERROR, GetGLError());
671 }
672
TEST_P(GLES3DecoderTest2,IsSyncInvalidArgsBadSharedMemoryId)673 TEST_P(GLES3DecoderTest2, IsSyncInvalidArgsBadSharedMemoryId) {
674 SpecializedSetup<cmds::IsSync, 0>(false);
675 cmds::IsSync cmd;
676 cmd.Init(client_sync_id_, kInvalidSharedMemoryId, shared_memory_offset_);
677 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
678 cmd.Init(client_sync_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
679 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
680 }
681
TEST_P(GLES2DecoderTest2,IsTextureValidArgs)682 TEST_P(GLES2DecoderTest2, IsTextureValidArgs) {
683 SpecializedSetup<cmds::IsTexture, 0>(true);
684 cmds::IsTexture cmd;
685 cmd.Init(client_texture_id_, shared_memory_id_, shared_memory_offset_);
686 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
687 EXPECT_EQ(GL_NO_ERROR, GetGLError());
688 }
689
TEST_P(GLES2DecoderTest2,IsTextureInvalidArgsBadSharedMemoryId)690 TEST_P(GLES2DecoderTest2, IsTextureInvalidArgsBadSharedMemoryId) {
691 SpecializedSetup<cmds::IsTexture, 0>(false);
692 cmds::IsTexture cmd;
693 cmd.Init(client_texture_id_, kInvalidSharedMemoryId, shared_memory_offset_);
694 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
695 cmd.Init(client_texture_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
696 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
697 }
698
TEST_P(GLES3DecoderTest2,IsTransformFeedbackValidArgs)699 TEST_P(GLES3DecoderTest2, IsTransformFeedbackValidArgs) {
700 SpecializedSetup<cmds::IsTransformFeedback, 0>(true);
701 cmds::IsTransformFeedback cmd;
702 cmd.Init(client_transformfeedback_id_, shared_memory_id_,
703 shared_memory_offset_);
704 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
705 EXPECT_EQ(GL_NO_ERROR, GetGLError());
706 }
707
TEST_P(GLES3DecoderTest2,IsTransformFeedbackInvalidArgsBadSharedMemoryId)708 TEST_P(GLES3DecoderTest2, IsTransformFeedbackInvalidArgsBadSharedMemoryId) {
709 SpecializedSetup<cmds::IsTransformFeedback, 0>(false);
710 cmds::IsTransformFeedback cmd;
711 cmd.Init(client_transformfeedback_id_, kInvalidSharedMemoryId,
712 shared_memory_offset_);
713 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
714 cmd.Init(client_transformfeedback_id_, shared_memory_id_,
715 kInvalidSharedMemoryOffset);
716 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
717 }
718
TEST_P(GLES2DecoderTest2,LineWidthValidArgs)719 TEST_P(GLES2DecoderTest2, LineWidthValidArgs) {
720 EXPECT_CALL(*gl_, LineWidth(2.0f));
721 SpecializedSetup<cmds::LineWidth, 0>(true);
722 cmds::LineWidth cmd;
723 cmd.Init(2.0f);
724 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
725 EXPECT_EQ(GL_NO_ERROR, GetGLError());
726 }
727
TEST_P(GLES2DecoderTest2,LineWidthInvalidValue0_0)728 TEST_P(GLES2DecoderTest2, LineWidthInvalidValue0_0) {
729 SpecializedSetup<cmds::LineWidth, 0>(false);
730 cmds::LineWidth cmd;
731 cmd.Init(0.0f);
732 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
733 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
734 }
735
TEST_P(GLES2DecoderTest2,LineWidthNaNValue0)736 TEST_P(GLES2DecoderTest2, LineWidthNaNValue0) {
737 SpecializedSetup<cmds::LineWidth, 0>(false);
738 cmds::LineWidth cmd;
739 cmd.Init(nanf(""));
740 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
741 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
742 }
743
TEST_P(GLES2DecoderTest2,LinkProgramValidArgs)744 TEST_P(GLES2DecoderTest2, LinkProgramValidArgs) {
745 EXPECT_CALL(*gl_, LinkProgram(kServiceProgramId));
746 SpecializedSetup<cmds::LinkProgram, 0>(true);
747 cmds::LinkProgram cmd;
748 cmd.Init(client_program_id_);
749 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
750 EXPECT_EQ(GL_NO_ERROR, GetGLError());
751 }
752
TEST_P(GLES2DecoderTest2,PolygonOffsetValidArgs)753 TEST_P(GLES2DecoderTest2, PolygonOffsetValidArgs) {
754 EXPECT_CALL(*gl_, PolygonOffset(1, 2));
755 SpecializedSetup<cmds::PolygonOffset, 0>(true);
756 cmds::PolygonOffset cmd;
757 cmd.Init(1, 2);
758 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
759 EXPECT_EQ(GL_NO_ERROR, GetGLError());
760 }
761
TEST_P(GLES3DecoderTest2,ReadBufferValidArgs)762 TEST_P(GLES3DecoderTest2, ReadBufferValidArgs) {
763 EXPECT_CALL(*gl_, ReadBuffer(GL_NONE));
764 SpecializedSetup<cmds::ReadBuffer, 0>(true);
765 cmds::ReadBuffer cmd;
766 cmd.Init(GL_NONE);
767 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
768 EXPECT_EQ(GL_NO_ERROR, GetGLError());
769 }
770
TEST_P(GLES2DecoderTest2,RenderbufferStorageValidArgs)771 TEST_P(GLES2DecoderTest2, RenderbufferStorageValidArgs) {
772 SpecializedSetup<cmds::RenderbufferStorage, 0>(true);
773 cmds::RenderbufferStorage cmd;
774 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4);
775 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
776 EXPECT_EQ(GL_NO_ERROR, GetGLError());
777 }
778
TEST_P(GLES2DecoderTest2,RenderbufferStorageInvalidArgs0_0)779 TEST_P(GLES2DecoderTest2, RenderbufferStorageInvalidArgs0_0) {
780 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
781 SpecializedSetup<cmds::RenderbufferStorage, 0>(false);
782 cmds::RenderbufferStorage cmd;
783 cmd.Init(GL_FRAMEBUFFER, GL_RGBA4, 3, 4);
784 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
785 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
786 }
787
TEST_P(GLES2DecoderTest2,RenderbufferStorageInvalidArgs2_0)788 TEST_P(GLES2DecoderTest2, RenderbufferStorageInvalidArgs2_0) {
789 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
790 SpecializedSetup<cmds::RenderbufferStorage, 0>(false);
791 cmds::RenderbufferStorage cmd;
792 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, -1, 4);
793 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
794 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
795 }
796
TEST_P(GLES2DecoderTest2,RenderbufferStorageInvalidArgs3_0)797 TEST_P(GLES2DecoderTest2, RenderbufferStorageInvalidArgs3_0) {
798 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
799 SpecializedSetup<cmds::RenderbufferStorage, 0>(false);
800 cmds::RenderbufferStorage cmd;
801 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, -1);
802 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
803 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
804 }
805
TEST_P(GLES2DecoderTest2,SampleCoverageValidArgs)806 TEST_P(GLES2DecoderTest2, SampleCoverageValidArgs) {
807 EXPECT_CALL(*gl_, SampleCoverage(1, true));
808 SpecializedSetup<cmds::SampleCoverage, 0>(true);
809 cmds::SampleCoverage cmd;
810 cmd.Init(1, true);
811 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
812 EXPECT_EQ(GL_NO_ERROR, GetGLError());
813 }
814
TEST_P(GLES3DecoderTest2,SamplerParameterfValidArgs)815 TEST_P(GLES3DecoderTest2, SamplerParameterfValidArgs) {
816 EXPECT_CALL(*gl_, SamplerParameterf(kServiceSamplerId, GL_TEXTURE_MAG_FILTER,
817 GL_NEAREST));
818 SpecializedSetup<cmds::SamplerParameterf, 0>(true);
819 cmds::SamplerParameterf cmd;
820 cmd.Init(client_sampler_id_, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
821 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
822 EXPECT_EQ(GL_NO_ERROR, GetGLError());
823 }
824
TEST_P(GLES3DecoderTest2,SamplerParameterfvImmediateValidArgs)825 TEST_P(GLES3DecoderTest2, SamplerParameterfvImmediateValidArgs) {
826 cmds::SamplerParameterfvImmediate& cmd =
827 *GetImmediateAs<cmds::SamplerParameterfvImmediate>();
828 SpecializedSetup<cmds::SamplerParameterfvImmediate, 0>(true);
829 GLfloat temp[1] = {
830 GL_NEAREST,
831 };
832 cmd.Init(client_sampler_id_, GL_TEXTURE_MAG_FILTER, &temp[0]);
833 EXPECT_CALL(*gl_, SamplerParameterf(kServiceSamplerId, GL_TEXTURE_MAG_FILTER,
834 temp[0]));
835 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
836 EXPECT_EQ(GL_NO_ERROR, GetGLError());
837 }
838
TEST_P(GLES3DecoderTest2,SamplerParameteriValidArgs)839 TEST_P(GLES3DecoderTest2, SamplerParameteriValidArgs) {
840 EXPECT_CALL(*gl_, SamplerParameteri(kServiceSamplerId, GL_TEXTURE_MAG_FILTER,
841 GL_NEAREST));
842 SpecializedSetup<cmds::SamplerParameteri, 0>(true);
843 cmds::SamplerParameteri cmd;
844 cmd.Init(client_sampler_id_, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
845 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
846 EXPECT_EQ(GL_NO_ERROR, GetGLError());
847 }
848
TEST_P(GLES3DecoderTest2,SamplerParameterivImmediateValidArgs)849 TEST_P(GLES3DecoderTest2, SamplerParameterivImmediateValidArgs) {
850 cmds::SamplerParameterivImmediate& cmd =
851 *GetImmediateAs<cmds::SamplerParameterivImmediate>();
852 SpecializedSetup<cmds::SamplerParameterivImmediate, 0>(true);
853 GLint temp[1] = {
854 GL_NEAREST,
855 };
856 cmd.Init(client_sampler_id_, GL_TEXTURE_MAG_FILTER, &temp[0]);
857 EXPECT_CALL(*gl_, SamplerParameteri(kServiceSamplerId, GL_TEXTURE_MAG_FILTER,
858 temp[0]));
859 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
860 EXPECT_EQ(GL_NO_ERROR, GetGLError());
861 }
862
TEST_P(GLES2DecoderTest2,ScissorValidArgs)863 TEST_P(GLES2DecoderTest2, ScissorValidArgs) {
864 EXPECT_CALL(*gl_, Scissor(1, 2, 3, 4));
865 SpecializedSetup<cmds::Scissor, 0>(true);
866 cmds::Scissor cmd;
867 cmd.Init(1, 2, 3, 4);
868 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
869 EXPECT_EQ(GL_NO_ERROR, GetGLError());
870 }
871
TEST_P(GLES2DecoderTest2,ScissorInvalidArgs2_0)872 TEST_P(GLES2DecoderTest2, ScissorInvalidArgs2_0) {
873 EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
874 SpecializedSetup<cmds::Scissor, 0>(false);
875 cmds::Scissor cmd;
876 cmd.Init(1, 2, -1, 4);
877 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
878 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
879 }
880
TEST_P(GLES2DecoderTest2,ScissorInvalidArgs3_0)881 TEST_P(GLES2DecoderTest2, ScissorInvalidArgs3_0) {
882 EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
883 SpecializedSetup<cmds::Scissor, 0>(false);
884 cmds::Scissor cmd;
885 cmd.Init(1, 2, 3, -1);
886 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
887 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
888 }
889
TEST_P(GLES2DecoderTest2,ShaderSourceBucketValidArgs)890 TEST_P(GLES2DecoderTest2, ShaderSourceBucketValidArgs) {
891 const uint32_t kBucketId = 123;
892 const char kSource0[] = "hello";
893 const char* kSource[] = {kSource0};
894 const char kValidStrEnd = 0;
895 SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
896 cmds::ShaderSourceBucket cmd;
897 cmd.Init(client_shader_id_, kBucketId);
898 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
899 }
900
TEST_P(GLES2DecoderTest2,ShaderSourceBucketInvalidArgs)901 TEST_P(GLES2DecoderTest2, ShaderSourceBucketInvalidArgs) {
902 const uint32_t kBucketId = 123;
903 const char kSource0[] = "hello";
904 const char* kSource[] = {kSource0};
905 const char kValidStrEnd = 0;
906 cmds::ShaderSourceBucket cmd;
907 // Test no bucket.
908 cmd.Init(client_shader_id_, kBucketId);
909 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
910 // Test invalid client.
911 SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
912 cmd.Init(kInvalidClientId, kBucketId);
913 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
914 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
915 }
916
TEST_P(GLES2DecoderTest2,ShaderSourceBucketInvalidHeader)917 TEST_P(GLES2DecoderTest2, ShaderSourceBucketInvalidHeader) {
918 const uint32_t kBucketId = 123;
919 const char kSource0[] = "hello";
920 const char* kSource[] = {kSource0};
921 const char kValidStrEnd = 0;
922 const GLsizei kCount = static_cast<GLsizei>(base::size(kSource));
923 const GLsizei kTests[] = {
924 kCount + 1,
925 0,
926 std::numeric_limits<GLsizei>::max(),
927 -1,
928 };
929 for (size_t ii = 0; ii < base::size(kTests); ++ii) {
930 SetBucketAsCStrings(kBucketId, 1, kSource, kTests[ii], kValidStrEnd);
931 cmds::ShaderSourceBucket cmd;
932 cmd.Init(client_shader_id_, kBucketId);
933 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
934 }
935 }
936
TEST_P(GLES2DecoderTest2,ShaderSourceBucketInvalidStringEnding)937 TEST_P(GLES2DecoderTest2, ShaderSourceBucketInvalidStringEnding) {
938 const uint32_t kBucketId = 123;
939 const char kSource0[] = "hello";
940 const char* kSource[] = {kSource0};
941 const char kInvalidStrEnd = '*';
942 SetBucketAsCStrings(kBucketId, 1, kSource, 1, kInvalidStrEnd);
943 cmds::ShaderSourceBucket cmd;
944 cmd.Init(client_shader_id_, kBucketId);
945 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
946 }
947
TEST_P(GLES2DecoderTest2,StencilFuncValidArgs)948 TEST_P(GLES2DecoderTest2, StencilFuncValidArgs) {
949 EXPECT_CALL(*gl_, StencilFunc(GL_NEVER, 2, 3));
950 SpecializedSetup<cmds::StencilFunc, 0>(true);
951 cmds::StencilFunc cmd;
952 cmd.Init(GL_NEVER, 2, 3);
953 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
954 EXPECT_EQ(GL_NO_ERROR, GetGLError());
955 }
956
TEST_P(GLES2DecoderTest2,StencilFuncSeparateValidArgs)957 TEST_P(GLES2DecoderTest2, StencilFuncSeparateValidArgs) {
958 EXPECT_CALL(*gl_, StencilFuncSeparate(GL_FRONT, GL_NEVER, 3, 4));
959 SpecializedSetup<cmds::StencilFuncSeparate, 0>(true);
960 cmds::StencilFuncSeparate cmd;
961 cmd.Init(GL_FRONT, GL_NEVER, 3, 4);
962 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
963 EXPECT_EQ(GL_NO_ERROR, GetGLError());
964 }
965
TEST_P(GLES2DecoderTest2,StencilMaskValidArgs)966 TEST_P(GLES2DecoderTest2, StencilMaskValidArgs) {
967 SpecializedSetup<cmds::StencilMask, 0>(true);
968 cmds::StencilMask cmd;
969 cmd.Init(1);
970 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
971 EXPECT_EQ(GL_NO_ERROR, GetGLError());
972 }
973
TEST_P(GLES2DecoderTest2,StencilMaskSeparateValidArgs)974 TEST_P(GLES2DecoderTest2, StencilMaskSeparateValidArgs) {
975 SpecializedSetup<cmds::StencilMaskSeparate, 0>(true);
976 cmds::StencilMaskSeparate cmd;
977 cmd.Init(GL_FRONT, 2);
978 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
979 EXPECT_EQ(GL_NO_ERROR, GetGLError());
980 }
981
TEST_P(GLES2DecoderTest2,StencilOpValidArgs)982 TEST_P(GLES2DecoderTest2, StencilOpValidArgs) {
983 EXPECT_CALL(*gl_, StencilOp(GL_KEEP, GL_INCR, GL_KEEP));
984 SpecializedSetup<cmds::StencilOp, 0>(true);
985 cmds::StencilOp cmd;
986 cmd.Init(GL_KEEP, GL_INCR, GL_KEEP);
987 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
988 EXPECT_EQ(GL_NO_ERROR, GetGLError());
989 }
990
TEST_P(GLES2DecoderTest2,StencilOpSeparateValidArgs)991 TEST_P(GLES2DecoderTest2, StencilOpSeparateValidArgs) {
992 EXPECT_CALL(*gl_, StencilOpSeparate(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP));
993 SpecializedSetup<cmds::StencilOpSeparate, 0>(true);
994 cmds::StencilOpSeparate cmd;
995 cmd.Init(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP);
996 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
997 EXPECT_EQ(GL_NO_ERROR, GetGLError());
998 }
999
TEST_P(GLES2DecoderTest2,TexParameterfValidArgs)1000 TEST_P(GLES2DecoderTest2, TexParameterfValidArgs) {
1001 EXPECT_CALL(*gl_,
1002 TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
1003 SpecializedSetup<cmds::TexParameterf, 0>(true);
1004 cmds::TexParameterf cmd;
1005 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1006 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1007 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1008 }
1009
TEST_P(GLES2DecoderTest2,TexParameterfInvalidArgs0_0)1010 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs0_0) {
1011 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
1012 SpecializedSetup<cmds::TexParameterf, 0>(false);
1013 cmds::TexParameterf cmd;
1014 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1015 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1016 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1017 }
1018
TEST_P(GLES2DecoderTest2,TexParameterfInvalidArgs0_1)1019 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs0_1) {
1020 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
1021 SpecializedSetup<cmds::TexParameterf, 0>(false);
1022 cmds::TexParameterf cmd;
1023 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1024 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1025 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1026 }
1027
TEST_P(GLES2DecoderTest2,TexParameterfInvalidArgs1_0)1028 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs1_0) {
1029 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
1030 SpecializedSetup<cmds::TexParameterf, 0>(false);
1031 cmds::TexParameterf cmd;
1032 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
1033 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1034 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1035 }
1036
TEST_P(GLES2DecoderTest2,TexParameterfvImmediateValidArgs)1037 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) {
1038 cmds::TexParameterfvImmediate& cmd =
1039 *GetImmediateAs<cmds::TexParameterfvImmediate>();
1040 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(true);
1041 GLfloat temp[1] = {
1042 GL_NEAREST,
1043 };
1044 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
1045 EXPECT_CALL(*gl_,
1046 TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, temp[0]));
1047 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1048 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1049 }
1050
TEST_P(GLES2DecoderTest2,TexParameterfvImmediateInvalidArgs0_0)1051 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_0) {
1052 cmds::TexParameterfvImmediate& cmd =
1053 *GetImmediateAs<cmds::TexParameterfvImmediate>();
1054 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
1055
1056 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
1057 GLfloat temp[1] = {
1058 GL_NEAREST,
1059 };
1060 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
1061 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1062
1063 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1064 }
1065
TEST_P(GLES2DecoderTest2,TexParameterfvImmediateInvalidArgs0_1)1066 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_1) {
1067 cmds::TexParameterfvImmediate& cmd =
1068 *GetImmediateAs<cmds::TexParameterfvImmediate>();
1069 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
1070
1071 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
1072 GLfloat temp[1] = {
1073 GL_NEAREST,
1074 };
1075 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
1076 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1077
1078 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1079 }
1080
TEST_P(GLES2DecoderTest2,TexParameterfvImmediateInvalidArgs1_0)1081 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs1_0) {
1082 cmds::TexParameterfvImmediate& cmd =
1083 *GetImmediateAs<cmds::TexParameterfvImmediate>();
1084 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
1085
1086 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
1087 GLfloat temp[1] = {
1088 GL_NEAREST,
1089 };
1090 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
1091 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1092
1093 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1094 }
1095
TEST_P(GLES2DecoderTest2,TexParameteriValidArgs)1096 TEST_P(GLES2DecoderTest2, TexParameteriValidArgs) {
1097 EXPECT_CALL(*gl_,
1098 TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
1099 SpecializedSetup<cmds::TexParameteri, 0>(true);
1100 cmds::TexParameteri cmd;
1101 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1102 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1103 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1104 }
1105
TEST_P(GLES2DecoderTest2,TexParameteriInvalidArgs0_0)1106 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs0_0) {
1107 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
1108 SpecializedSetup<cmds::TexParameteri, 0>(false);
1109 cmds::TexParameteri cmd;
1110 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1111 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1112 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1113 }
1114
TEST_P(GLES2DecoderTest2,TexParameteriInvalidArgs0_1)1115 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs0_1) {
1116 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
1117 SpecializedSetup<cmds::TexParameteri, 0>(false);
1118 cmds::TexParameteri cmd;
1119 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1120 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1121 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1122 }
1123
TEST_P(GLES2DecoderTest2,TexParameteriInvalidArgs1_0)1124 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs1_0) {
1125 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
1126 SpecializedSetup<cmds::TexParameteri, 0>(false);
1127 cmds::TexParameteri cmd;
1128 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
1129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1130 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1131 }
1132
TEST_P(GLES2DecoderTest2,TexParameterivImmediateValidArgs)1133 TEST_P(GLES2DecoderTest2, TexParameterivImmediateValidArgs) {
1134 cmds::TexParameterivImmediate& cmd =
1135 *GetImmediateAs<cmds::TexParameterivImmediate>();
1136 SpecializedSetup<cmds::TexParameterivImmediate, 0>(true);
1137 GLint temp[1] = {
1138 GL_NEAREST,
1139 };
1140 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
1141 EXPECT_CALL(*gl_,
1142 TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, temp[0]));
1143 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1144 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1145 }
1146
TEST_P(GLES2DecoderTest2,TexParameterivImmediateInvalidArgs0_0)1147 TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_0) {
1148 cmds::TexParameterivImmediate& cmd =
1149 *GetImmediateAs<cmds::TexParameterivImmediate>();
1150 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
1151
1152 SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
1153 GLint temp[1] = {
1154 GL_NEAREST,
1155 };
1156 cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
1157 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1158
1159 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1160 }
1161
TEST_P(GLES2DecoderTest2,TexParameterivImmediateInvalidArgs0_1)1162 TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_1) {
1163 cmds::TexParameterivImmediate& cmd =
1164 *GetImmediateAs<cmds::TexParameterivImmediate>();
1165 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
1166
1167 SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
1168 GLint temp[1] = {
1169 GL_NEAREST,
1170 };
1171 cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
1172 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1173
1174 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1175 }
1176
TEST_P(GLES2DecoderTest2,TexParameterivImmediateInvalidArgs1_0)1177 TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs1_0) {
1178 cmds::TexParameterivImmediate& cmd =
1179 *GetImmediateAs<cmds::TexParameterivImmediate>();
1180 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
1181
1182 SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
1183 GLint temp[1] = {
1184 GL_NEAREST,
1185 };
1186 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
1187 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1188
1189 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1190 }
1191
TEST_P(GLES3DecoderTest2,TransformFeedbackVaryingsBucketValidArgs)1192 TEST_P(GLES3DecoderTest2, TransformFeedbackVaryingsBucketValidArgs) {
1193 const uint32_t kBucketId = 123;
1194 const char kSource0[] = "hello";
1195 const char* kSource[] = {kSource0};
1196 const char kValidStrEnd = 0;
1197 SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
1198 cmds::TransformFeedbackVaryingsBucket cmd;
1199 cmd.Init(client_program_id_, kBucketId, GL_INTERLEAVED_ATTRIBS);
1200 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1201 }
1202
TEST_P(GLES3DecoderTest2,TransformFeedbackVaryingsBucketInvalidArgs)1203 TEST_P(GLES3DecoderTest2, TransformFeedbackVaryingsBucketInvalidArgs) {
1204 const uint32_t kBucketId = 123;
1205 const char kSource0[] = "hello";
1206 const char* kSource[] = {kSource0};
1207 const char kValidStrEnd = 0;
1208 cmds::TransformFeedbackVaryingsBucket cmd;
1209 // Test no bucket.
1210 cmd.Init(client_program_id_, kBucketId, GL_INTERLEAVED_ATTRIBS);
1211 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1212 // Test invalid client.
1213 SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
1214 cmd.Init(kInvalidClientId, kBucketId, GL_INTERLEAVED_ATTRIBS);
1215 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1216 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1217 }
1218
TEST_P(GLES3DecoderTest2,TransformFeedbackVaryingsBucketInvalidHeader)1219 TEST_P(GLES3DecoderTest2, TransformFeedbackVaryingsBucketInvalidHeader) {
1220 const uint32_t kBucketId = 123;
1221 const char kSource0[] = "hello";
1222 const char* kSource[] = {kSource0};
1223 const char kValidStrEnd = 0;
1224 const GLsizei kCount = static_cast<GLsizei>(base::size(kSource));
1225 const GLsizei kTests[] = {
1226 kCount + 1,
1227 0,
1228 std::numeric_limits<GLsizei>::max(),
1229 -1,
1230 };
1231 for (size_t ii = 0; ii < base::size(kTests); ++ii) {
1232 SetBucketAsCStrings(kBucketId, 1, kSource, kTests[ii], kValidStrEnd);
1233 cmds::TransformFeedbackVaryingsBucket cmd;
1234 cmd.Init(client_program_id_, kBucketId, GL_INTERLEAVED_ATTRIBS);
1235 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
1236 }
1237 }
1238
TEST_P(GLES3DecoderTest2,TransformFeedbackVaryingsBucketInvalidStringEnding)1239 TEST_P(GLES3DecoderTest2, TransformFeedbackVaryingsBucketInvalidStringEnding) {
1240 const uint32_t kBucketId = 123;
1241 const char kSource0[] = "hello";
1242 const char* kSource[] = {kSource0};
1243 const char kInvalidStrEnd = '*';
1244 SetBucketAsCStrings(kBucketId, 1, kSource, 1, kInvalidStrEnd);
1245 cmds::TransformFeedbackVaryingsBucket cmd;
1246 cmd.Init(client_program_id_, kBucketId, GL_INTERLEAVED_ATTRIBS);
1247 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
1248 }
1249
TEST_P(GLES2DecoderTest2,Uniform1fValidArgs)1250 TEST_P(GLES2DecoderTest2, Uniform1fValidArgs) {
1251 EXPECT_CALL(*gl_, Uniform1fv(1, 1, _));
1252 SpecializedSetup<cmds::Uniform1f, 0>(true);
1253 cmds::Uniform1f cmd;
1254 cmd.Init(1, 2);
1255 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1256 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1257 }
1258
TEST_P(GLES2DecoderTest2,Uniform1fvImmediateValidArgs)1259 TEST_P(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) {
1260 cmds::Uniform1fvImmediate& cmd = *GetImmediateAs<cmds::Uniform1fvImmediate>();
1261 SpecializedSetup<cmds::Uniform1fvImmediate, 0>(true);
1262 GLfloat temp[1 * 2] = {
1263 0,
1264 };
1265 EXPECT_CALL(*gl_, Uniform1fv(1, 2, PointsToArray(temp, 1)));
1266 cmd.Init(1, 2, &temp[0]);
1267 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1268 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1269 }
1270
TEST_P(GLES2DecoderTest2,Uniform2fValidArgs)1271 TEST_P(GLES2DecoderTest2, Uniform2fValidArgs) {
1272 EXPECT_CALL(*gl_, Uniform2fv(1, 1, _));
1273 SpecializedSetup<cmds::Uniform2f, 0>(true);
1274 cmds::Uniform2f cmd;
1275 cmd.Init(1, 2, 3);
1276 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1277 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1278 }
1279
TEST_P(GLES2DecoderTest2,Uniform2fvImmediateValidArgs)1280 TEST_P(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) {
1281 cmds::Uniform2fvImmediate& cmd = *GetImmediateAs<cmds::Uniform2fvImmediate>();
1282 SpecializedSetup<cmds::Uniform2fvImmediate, 0>(true);
1283 GLfloat temp[2 * 2] = {
1284 0,
1285 };
1286 EXPECT_CALL(*gl_, Uniform2fv(1, 2, PointsToArray(temp, 2)));
1287 cmd.Init(1, 2, &temp[0]);
1288 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1289 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1290 }
1291
TEST_P(GLES2DecoderTest2,Uniform2iValidArgs)1292 TEST_P(GLES2DecoderTest2, Uniform2iValidArgs) {
1293 EXPECT_CALL(*gl_, Uniform2iv(1, 1, _));
1294 SpecializedSetup<cmds::Uniform2i, 0>(true);
1295 cmds::Uniform2i cmd;
1296 cmd.Init(1, 2, 3);
1297 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1298 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1299 }
1300
TEST_P(GLES2DecoderTest2,Uniform2ivImmediateValidArgs)1301 TEST_P(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) {
1302 cmds::Uniform2ivImmediate& cmd = *GetImmediateAs<cmds::Uniform2ivImmediate>();
1303 SpecializedSetup<cmds::Uniform2ivImmediate, 0>(true);
1304 GLint temp[2 * 2] = {
1305 0,
1306 };
1307 EXPECT_CALL(*gl_, Uniform2iv(1, 2, PointsToArray(temp, 2)));
1308 cmd.Init(1, 2, &temp[0]);
1309 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1310 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1311 }
1312
TEST_P(GLES2DecoderTest2,Uniform3fValidArgs)1313 TEST_P(GLES2DecoderTest2, Uniform3fValidArgs) {
1314 EXPECT_CALL(*gl_, Uniform3fv(1, 1, _));
1315 SpecializedSetup<cmds::Uniform3f, 0>(true);
1316 cmds::Uniform3f cmd;
1317 cmd.Init(1, 2, 3, 4);
1318 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1319 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1320 }
1321
TEST_P(GLES2DecoderTest2,Uniform3fvImmediateValidArgs)1322 TEST_P(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) {
1323 cmds::Uniform3fvImmediate& cmd = *GetImmediateAs<cmds::Uniform3fvImmediate>();
1324 SpecializedSetup<cmds::Uniform3fvImmediate, 0>(true);
1325 GLfloat temp[3 * 2] = {
1326 0,
1327 };
1328 EXPECT_CALL(*gl_, Uniform3fv(1, 2, PointsToArray(temp, 3)));
1329 cmd.Init(1, 2, &temp[0]);
1330 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1331 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1332 }
1333
TEST_P(GLES2DecoderTest2,Uniform3iValidArgs)1334 TEST_P(GLES2DecoderTest2, Uniform3iValidArgs) {
1335 EXPECT_CALL(*gl_, Uniform3iv(1, 1, _));
1336 SpecializedSetup<cmds::Uniform3i, 0>(true);
1337 cmds::Uniform3i cmd;
1338 cmd.Init(1, 2, 3, 4);
1339 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1340 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1341 }
1342
TEST_P(GLES2DecoderTest2,Uniform3ivImmediateValidArgs)1343 TEST_P(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) {
1344 cmds::Uniform3ivImmediate& cmd = *GetImmediateAs<cmds::Uniform3ivImmediate>();
1345 SpecializedSetup<cmds::Uniform3ivImmediate, 0>(true);
1346 GLint temp[3 * 2] = {
1347 0,
1348 };
1349 EXPECT_CALL(*gl_, Uniform3iv(1, 2, PointsToArray(temp, 3)));
1350 cmd.Init(1, 2, &temp[0]);
1351 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1352 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1353 }
1354 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
1355