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