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_1.cc
12 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_
13 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_
14 
TEST_P(GLES2DecoderTest1,AttachShaderValidArgs)15 TEST_P(GLES2DecoderTest1, AttachShaderValidArgs) {
16   EXPECT_CALL(*gl_, AttachShader(kServiceProgramId, kServiceShaderId));
17   SpecializedSetup<cmds::AttachShader, 0>(true);
18   cmds::AttachShader cmd;
19   cmd.Init(client_program_id_, client_shader_id_);
20   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
21   EXPECT_EQ(GL_NO_ERROR, GetGLError());
22 }
23 
TEST_P(GLES2DecoderTest1,BindBufferValidArgs)24 TEST_P(GLES2DecoderTest1, BindBufferValidArgs) {
25   EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kServiceBufferId));
26   SpecializedSetup<cmds::BindBuffer, 0>(true);
27   cmds::BindBuffer cmd;
28   cmd.Init(GL_ARRAY_BUFFER, client_buffer_id_);
29   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
30   EXPECT_EQ(GL_NO_ERROR, GetGLError());
31 }
32 
TEST_P(GLES2DecoderTest1,BindBufferValidArgsNewId)33 TEST_P(GLES2DecoderTest1, BindBufferValidArgsNewId) {
34   EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kNewServiceId));
35   EXPECT_CALL(*gl_, GenBuffersARB(1, _))
36       .WillOnce(SetArgPointee<1>(kNewServiceId));
37   SpecializedSetup<cmds::BindBuffer, 0>(true);
38   cmds::BindBuffer cmd;
39   cmd.Init(GL_ARRAY_BUFFER, kNewClientId);
40   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
41   EXPECT_EQ(GL_NO_ERROR, GetGLError());
42   EXPECT_TRUE(GetBuffer(kNewClientId) != nullptr);
43 }
44 
TEST_P(GLES2DecoderTest1,BindBufferInvalidArgs0_0)45 TEST_P(GLES2DecoderTest1, BindBufferInvalidArgs0_0) {
46   EXPECT_CALL(*gl_, BindBuffer(_, _)).Times(0);
47   SpecializedSetup<cmds::BindBuffer, 0>(false);
48   cmds::BindBuffer cmd;
49   cmd.Init(GL_RENDERBUFFER, client_buffer_id_);
50   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
51   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
52 }
53 
TEST_P(GLES2DecoderTest1,BindFramebufferValidArgs)54 TEST_P(GLES2DecoderTest1, BindFramebufferValidArgs) {
55   EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kServiceFramebufferId));
56   SpecializedSetup<cmds::BindFramebuffer, 0>(true);
57   cmds::BindFramebuffer cmd;
58   cmd.Init(GL_FRAMEBUFFER, client_framebuffer_id_);
59   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
60   EXPECT_EQ(GL_NO_ERROR, GetGLError());
61 }
62 
TEST_P(GLES2DecoderTest1,BindFramebufferValidArgsNewId)63 TEST_P(GLES2DecoderTest1, BindFramebufferValidArgsNewId) {
64   EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kNewServiceId));
65   EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _))
66       .WillOnce(SetArgPointee<1>(kNewServiceId));
67   SpecializedSetup<cmds::BindFramebuffer, 0>(true);
68   cmds::BindFramebuffer cmd;
69   cmd.Init(GL_FRAMEBUFFER, kNewClientId);
70   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
71   EXPECT_EQ(GL_NO_ERROR, GetGLError());
72   EXPECT_TRUE(GetFramebuffer(kNewClientId) != nullptr);
73 }
74 
TEST_P(GLES2DecoderTest1,BindFramebufferInvalidArgs0_0)75 TEST_P(GLES2DecoderTest1, BindFramebufferInvalidArgs0_0) {
76   EXPECT_CALL(*gl_, BindFramebufferEXT(_, _)).Times(0);
77   SpecializedSetup<cmds::BindFramebuffer, 0>(false);
78   cmds::BindFramebuffer cmd;
79   cmd.Init(GL_RENDERBUFFER, client_framebuffer_id_);
80   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
81   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
82 }
83 
TEST_P(GLES2DecoderTest1,BindRenderbufferValidArgs)84 TEST_P(GLES2DecoderTest1, BindRenderbufferValidArgs) {
85   EXPECT_CALL(*gl_,
86               BindRenderbufferEXT(GL_RENDERBUFFER, kServiceRenderbufferId));
87   SpecializedSetup<cmds::BindRenderbuffer, 0>(true);
88   cmds::BindRenderbuffer cmd;
89   cmd.Init(GL_RENDERBUFFER, client_renderbuffer_id_);
90   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
91   EXPECT_EQ(GL_NO_ERROR, GetGLError());
92 }
93 
TEST_P(GLES2DecoderTest1,BindRenderbufferValidArgsNewId)94 TEST_P(GLES2DecoderTest1, BindRenderbufferValidArgsNewId) {
95   EXPECT_CALL(*gl_, BindRenderbufferEXT(GL_RENDERBUFFER, kNewServiceId));
96   EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _))
97       .WillOnce(SetArgPointee<1>(kNewServiceId));
98   SpecializedSetup<cmds::BindRenderbuffer, 0>(true);
99   cmds::BindRenderbuffer cmd;
100   cmd.Init(GL_RENDERBUFFER, kNewClientId);
101   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
102   EXPECT_EQ(GL_NO_ERROR, GetGLError());
103   EXPECT_TRUE(GetRenderbuffer(kNewClientId) != nullptr);
104 }
105 
TEST_P(GLES2DecoderTest1,BindRenderbufferInvalidArgs0_0)106 TEST_P(GLES2DecoderTest1, BindRenderbufferInvalidArgs0_0) {
107   EXPECT_CALL(*gl_, BindRenderbufferEXT(_, _)).Times(0);
108   SpecializedSetup<cmds::BindRenderbuffer, 0>(false);
109   cmds::BindRenderbuffer cmd;
110   cmd.Init(GL_FRAMEBUFFER, client_renderbuffer_id_);
111   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
112   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
113 }
114 
TEST_P(GLES3DecoderTest1,BindSamplerValidArgs)115 TEST_P(GLES3DecoderTest1, BindSamplerValidArgs) {
116   EXPECT_CALL(*gl_, BindSampler(1, kServiceSamplerId));
117   SpecializedSetup<cmds::BindSampler, 0>(true);
118   cmds::BindSampler cmd;
119   cmd.Init(1, client_sampler_id_);
120   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
121   EXPECT_EQ(GL_NO_ERROR, GetGLError());
122 }
123 
TEST_P(GLES2DecoderTest1,BlendColorValidArgs)124 TEST_P(GLES2DecoderTest1, BlendColorValidArgs) {
125   EXPECT_CALL(*gl_, BlendColor(1, 2, 3, 4));
126   SpecializedSetup<cmds::BlendColor, 0>(true);
127   cmds::BlendColor cmd;
128   cmd.Init(1, 2, 3, 4);
129   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
130   EXPECT_EQ(GL_NO_ERROR, GetGLError());
131 }
132 
TEST_P(GLES2DecoderTest1,BlendEquationValidArgs)133 TEST_P(GLES2DecoderTest1, BlendEquationValidArgs) {
134   EXPECT_CALL(*gl_, BlendEquation(GL_FUNC_SUBTRACT));
135   SpecializedSetup<cmds::BlendEquation, 0>(true);
136   cmds::BlendEquation cmd;
137   cmd.Init(GL_FUNC_SUBTRACT);
138   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
139   EXPECT_EQ(GL_NO_ERROR, GetGLError());
140 }
141 
TEST_P(GLES2DecoderTest1,BlendEquationInvalidArgs0_0)142 TEST_P(GLES2DecoderTest1, BlendEquationInvalidArgs0_0) {
143   EXPECT_CALL(*gl_, BlendEquation(_)).Times(0);
144   SpecializedSetup<cmds::BlendEquation, 0>(false);
145   cmds::BlendEquation cmd;
146   cmd.Init(GL_NONE);
147   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
148   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
149 }
150 
TEST_P(GLES2DecoderTest1,BlendEquationSeparateValidArgs)151 TEST_P(GLES2DecoderTest1, BlendEquationSeparateValidArgs) {
152   EXPECT_CALL(*gl_, BlendEquationSeparate(GL_FUNC_SUBTRACT, GL_FUNC_ADD));
153   SpecializedSetup<cmds::BlendEquationSeparate, 0>(true);
154   cmds::BlendEquationSeparate cmd;
155   cmd.Init(GL_FUNC_SUBTRACT, GL_FUNC_ADD);
156   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
157   EXPECT_EQ(GL_NO_ERROR, GetGLError());
158 }
159 
TEST_P(GLES2DecoderTest1,BlendEquationSeparateInvalidArgs0_0)160 TEST_P(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_0) {
161   EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0);
162   SpecializedSetup<cmds::BlendEquationSeparate, 0>(false);
163   cmds::BlendEquationSeparate cmd;
164   cmd.Init(GL_NONE, GL_FUNC_ADD);
165   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
166   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
167 }
168 
TEST_P(GLES2DecoderTest1,BlendEquationSeparateInvalidArgs1_0)169 TEST_P(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_0) {
170   EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0);
171   SpecializedSetup<cmds::BlendEquationSeparate, 0>(false);
172   cmds::BlendEquationSeparate cmd;
173   cmd.Init(GL_FUNC_SUBTRACT, GL_NONE);
174   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
175   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
176 }
177 
TEST_P(GLES2DecoderTest1,BlendFuncValidArgs)178 TEST_P(GLES2DecoderTest1, BlendFuncValidArgs) {
179   EXPECT_CALL(*gl_, BlendFunc(GL_ZERO, GL_ZERO));
180   SpecializedSetup<cmds::BlendFunc, 0>(true);
181   cmds::BlendFunc cmd;
182   cmd.Init(GL_ZERO, GL_ZERO);
183   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
184   EXPECT_EQ(GL_NO_ERROR, GetGLError());
185 }
186 
TEST_P(GLES2DecoderTest1,BlendFuncSeparateValidArgs)187 TEST_P(GLES2DecoderTest1, BlendFuncSeparateValidArgs) {
188   EXPECT_CALL(*gl_, BlendFuncSeparate(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO));
189   SpecializedSetup<cmds::BlendFuncSeparate, 0>(true);
190   cmds::BlendFuncSeparate cmd;
191   cmd.Init(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
192   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
193   EXPECT_EQ(GL_NO_ERROR, GetGLError());
194 }
195 
TEST_P(GLES2DecoderTest1,CheckFramebufferStatusValidArgs)196 TEST_P(GLES2DecoderTest1, CheckFramebufferStatusValidArgs) {
197   EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER));
198   SpecializedSetup<cmds::CheckFramebufferStatus, 0>(true);
199   cmds::CheckFramebufferStatus cmd;
200   cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_);
201   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
202   EXPECT_EQ(GL_NO_ERROR, GetGLError());
203 }
204 
TEST_P(GLES2DecoderTest1,CheckFramebufferStatusInvalidArgs0_0)205 TEST_P(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_0) {
206   EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0);
207   SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false);
208   cmds::CheckFramebufferStatus cmd;
209   cmd.Init(GL_RENDERBUFFER, shared_memory_id_, shared_memory_offset_);
210   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
211   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
212 }
213 
TEST_P(GLES2DecoderTest1,CheckFramebufferStatusInvalidArgsBadSharedMemoryId)214 TEST_P(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgsBadSharedMemoryId) {
215   EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)).Times(0);
216   SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false);
217   cmds::CheckFramebufferStatus cmd;
218   cmd.Init(GL_FRAMEBUFFER, kInvalidSharedMemoryId, shared_memory_offset_);
219   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
220   cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, kInvalidSharedMemoryOffset);
221   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
222 }
223 
TEST_P(GLES2DecoderTest1,ClearValidArgs)224 TEST_P(GLES2DecoderTest1, ClearValidArgs) {
225   EXPECT_CALL(*gl_, Clear(GL_COLOR_BUFFER_BIT));
226   SpecializedSetup<cmds::Clear, 0>(true);
227   cmds::Clear cmd;
228   cmd.Init(GL_COLOR_BUFFER_BIT);
229   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
230   EXPECT_EQ(GL_NO_ERROR, GetGLError());
231 }
232 
TEST_P(GLES2DecoderTest1,ClearColorValidArgs)233 TEST_P(GLES2DecoderTest1, ClearColorValidArgs) {
234   EXPECT_CALL(*gl_, ClearColor(1, 2, 3, 4));
235   SpecializedSetup<cmds::ClearColor, 0>(true);
236   cmds::ClearColor cmd;
237   cmd.Init(1, 2, 3, 4);
238   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
239   EXPECT_EQ(GL_NO_ERROR, GetGLError());
240 }
241 
TEST_P(GLES2DecoderTest1,ClearDepthfValidArgs)242 TEST_P(GLES2DecoderTest1, ClearDepthfValidArgs) {
243   EXPECT_CALL(*gl_, ClearDepth(0.5f));
244   SpecializedSetup<cmds::ClearDepthf, 0>(true);
245   cmds::ClearDepthf cmd;
246   cmd.Init(0.5f);
247   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
248   EXPECT_EQ(GL_NO_ERROR, GetGLError());
249 }
250 
TEST_P(GLES2DecoderTest1,ClearStencilValidArgs)251 TEST_P(GLES2DecoderTest1, ClearStencilValidArgs) {
252   EXPECT_CALL(*gl_, ClearStencil(1));
253   SpecializedSetup<cmds::ClearStencil, 0>(true);
254   cmds::ClearStencil cmd;
255   cmd.Init(1);
256   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
257   EXPECT_EQ(GL_NO_ERROR, GetGLError());
258 }
259 
TEST_P(GLES2DecoderTest1,ColorMaskValidArgs)260 TEST_P(GLES2DecoderTest1, ColorMaskValidArgs) {
261   SpecializedSetup<cmds::ColorMask, 0>(true);
262   cmds::ColorMask cmd;
263   cmd.Init(true, true, true, true);
264   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
265   EXPECT_EQ(GL_NO_ERROR, GetGLError());
266 }
267 
TEST_P(GLES2DecoderTest1,CopyTexSubImage2DValidArgs)268 TEST_P(GLES2DecoderTest1, CopyTexSubImage2DValidArgs) {
269   EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8));
270   SpecializedSetup<cmds::CopyTexSubImage2D, 0>(true);
271   cmds::CopyTexSubImage2D cmd;
272   cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8);
273   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
274   EXPECT_EQ(GL_NO_ERROR, GetGLError());
275 }
276 
TEST_P(GLES2DecoderTest1,CopyTexSubImage2DInvalidArgs0_0)277 TEST_P(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs0_0) {
278   EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0);
279   SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false);
280   cmds::CopyTexSubImage2D cmd;
281   cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, 2, 3, 4, 5, 6, 7, 8);
282   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
283   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
284 }
285 
TEST_P(GLES2DecoderTest1,CopyTexSubImage2DInvalidArgs6_0)286 TEST_P(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs6_0) {
287   EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0);
288   SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false);
289   cmds::CopyTexSubImage2D cmd;
290   cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, -1, 8);
291   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
292   EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
293 }
294 
TEST_P(GLES2DecoderTest1,CopyTexSubImage2DInvalidArgs7_0)295 TEST_P(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs7_0) {
296   EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0);
297   SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false);
298   cmds::CopyTexSubImage2D cmd;
299   cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, -1);
300   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
301   EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
302 }
303 
TEST_P(GLES2DecoderTest1,CreateProgramValidArgs)304 TEST_P(GLES2DecoderTest1, CreateProgramValidArgs) {
305   EXPECT_CALL(*gl_, CreateProgram()).WillOnce(Return(kNewServiceId));
306   SpecializedSetup<cmds::CreateProgram, 0>(true);
307   cmds::CreateProgram cmd;
308   cmd.Init(kNewClientId);
309   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
310   EXPECT_EQ(GL_NO_ERROR, GetGLError());
311   EXPECT_TRUE(GetProgram(kNewClientId));
312 }
313 
TEST_P(GLES2DecoderTest1,CreateShaderValidArgs)314 TEST_P(GLES2DecoderTest1, CreateShaderValidArgs) {
315   EXPECT_CALL(*gl_, CreateShader(GL_VERTEX_SHADER))
316       .WillOnce(Return(kNewServiceId));
317   SpecializedSetup<cmds::CreateShader, 0>(true);
318   cmds::CreateShader cmd;
319   cmd.Init(GL_VERTEX_SHADER, kNewClientId);
320   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
321   EXPECT_EQ(GL_NO_ERROR, GetGLError());
322   EXPECT_TRUE(GetShader(kNewClientId));
323 }
324 
TEST_P(GLES2DecoderTest1,CreateShaderInvalidArgs0_0)325 TEST_P(GLES2DecoderTest1, CreateShaderInvalidArgs0_0) {
326   EXPECT_CALL(*gl_, CreateShader(_)).Times(0);
327   SpecializedSetup<cmds::CreateShader, 0>(false);
328   cmds::CreateShader cmd;
329   cmd.Init(GL_GEOMETRY_SHADER, kNewClientId);
330   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
331   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
332 }
333 
TEST_P(GLES2DecoderTest1,CullFaceValidArgs)334 TEST_P(GLES2DecoderTest1, CullFaceValidArgs) {
335   EXPECT_CALL(*gl_, CullFace(GL_FRONT));
336   SpecializedSetup<cmds::CullFace, 0>(true);
337   cmds::CullFace cmd;
338   cmd.Init(GL_FRONT);
339   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
340   EXPECT_EQ(GL_NO_ERROR, GetGLError());
341 }
342 
TEST_P(GLES2DecoderTest1,DeleteBuffersImmediateValidArgs)343 TEST_P(GLES2DecoderTest1, DeleteBuffersImmediateValidArgs) {
344   EXPECT_CALL(*gl_, DeleteBuffersARB(1, Pointee(kServiceBufferId))).Times(1);
345   cmds::DeleteBuffersImmediate& cmd =
346       *GetImmediateAs<cmds::DeleteBuffersImmediate>();
347   SpecializedSetup<cmds::DeleteBuffersImmediate, 0>(true);
348   cmd.Init(1, &client_buffer_id_);
349   EXPECT_EQ(error::kNoError,
350             ExecuteImmediateCmd(cmd, sizeof(client_buffer_id_)));
351   EXPECT_EQ(GL_NO_ERROR, GetGLError());
352   EXPECT_TRUE(GetBuffer(client_buffer_id_) == nullptr);
353 }
354 
TEST_P(GLES2DecoderTest1,DeleteBuffersImmediateInvalidArgs)355 TEST_P(GLES2DecoderTest1, DeleteBuffersImmediateInvalidArgs) {
356   cmds::DeleteBuffersImmediate& cmd =
357       *GetImmediateAs<cmds::DeleteBuffersImmediate>();
358   SpecializedSetup<cmds::DeleteBuffersImmediate, 0>(false);
359   GLuint temp = kInvalidClientId;
360   cmd.Init(1, &temp);
361   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
362 }
363 
TEST_P(GLES2DecoderTest1,DeleteFramebuffersImmediateValidArgs)364 TEST_P(GLES2DecoderTest1, DeleteFramebuffersImmediateValidArgs) {
365   EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, Pointee(kServiceFramebufferId)))
366       .Times(1);
367   cmds::DeleteFramebuffersImmediate& cmd =
368       *GetImmediateAs<cmds::DeleteFramebuffersImmediate>();
369   SpecializedSetup<cmds::DeleteFramebuffersImmediate, 0>(true);
370   cmd.Init(1, &client_framebuffer_id_);
371   EXPECT_EQ(error::kNoError,
372             ExecuteImmediateCmd(cmd, sizeof(client_framebuffer_id_)));
373   EXPECT_EQ(GL_NO_ERROR, GetGLError());
374   EXPECT_TRUE(GetFramebuffer(client_framebuffer_id_) == nullptr);
375 }
376 
TEST_P(GLES2DecoderTest1,DeleteFramebuffersImmediateInvalidArgs)377 TEST_P(GLES2DecoderTest1, DeleteFramebuffersImmediateInvalidArgs) {
378   cmds::DeleteFramebuffersImmediate& cmd =
379       *GetImmediateAs<cmds::DeleteFramebuffersImmediate>();
380   SpecializedSetup<cmds::DeleteFramebuffersImmediate, 0>(false);
381   GLuint temp = kInvalidClientId;
382   cmd.Init(1, &temp);
383   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
384 }
385 
TEST_P(GLES2DecoderTest1,DeleteProgramValidArgs)386 TEST_P(GLES2DecoderTest1, DeleteProgramValidArgs) {
387   EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId));
388   SpecializedSetup<cmds::DeleteProgram, 0>(true);
389   cmds::DeleteProgram cmd;
390   cmd.Init(client_program_id_);
391   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
392   EXPECT_EQ(GL_NO_ERROR, GetGLError());
393 }
394 
TEST_P(GLES2DecoderTest1,DeleteRenderbuffersImmediateValidArgs)395 TEST_P(GLES2DecoderTest1, DeleteRenderbuffersImmediateValidArgs) {
396   EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, Pointee(kServiceRenderbufferId)))
397       .Times(1);
398   cmds::DeleteRenderbuffersImmediate& cmd =
399       *GetImmediateAs<cmds::DeleteRenderbuffersImmediate>();
400   SpecializedSetup<cmds::DeleteRenderbuffersImmediate, 0>(true);
401   cmd.Init(1, &client_renderbuffer_id_);
402   EXPECT_EQ(error::kNoError,
403             ExecuteImmediateCmd(cmd, sizeof(client_renderbuffer_id_)));
404   EXPECT_EQ(GL_NO_ERROR, GetGLError());
405   EXPECT_TRUE(GetRenderbuffer(client_renderbuffer_id_) == nullptr);
406 }
407 
TEST_P(GLES2DecoderTest1,DeleteRenderbuffersImmediateInvalidArgs)408 TEST_P(GLES2DecoderTest1, DeleteRenderbuffersImmediateInvalidArgs) {
409   cmds::DeleteRenderbuffersImmediate& cmd =
410       *GetImmediateAs<cmds::DeleteRenderbuffersImmediate>();
411   SpecializedSetup<cmds::DeleteRenderbuffersImmediate, 0>(false);
412   GLuint temp = kInvalidClientId;
413   cmd.Init(1, &temp);
414   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
415 }
416 
TEST_P(GLES3DecoderTest1,DeleteSamplersImmediateValidArgs)417 TEST_P(GLES3DecoderTest1, DeleteSamplersImmediateValidArgs) {
418   EXPECT_CALL(*gl_, DeleteSamplers(1, Pointee(kServiceSamplerId))).Times(1);
419   cmds::DeleteSamplersImmediate& cmd =
420       *GetImmediateAs<cmds::DeleteSamplersImmediate>();
421   SpecializedSetup<cmds::DeleteSamplersImmediate, 0>(true);
422   cmd.Init(1, &client_sampler_id_);
423   EXPECT_EQ(error::kNoError,
424             ExecuteImmediateCmd(cmd, sizeof(client_sampler_id_)));
425   EXPECT_EQ(GL_NO_ERROR, GetGLError());
426   EXPECT_TRUE(GetSampler(client_sampler_id_) == nullptr);
427 }
428 
TEST_P(GLES3DecoderTest1,DeleteSamplersImmediateInvalidArgs)429 TEST_P(GLES3DecoderTest1, DeleteSamplersImmediateInvalidArgs) {
430   cmds::DeleteSamplersImmediate& cmd =
431       *GetImmediateAs<cmds::DeleteSamplersImmediate>();
432   SpecializedSetup<cmds::DeleteSamplersImmediate, 0>(false);
433   GLuint temp = kInvalidClientId;
434   cmd.Init(1, &temp);
435   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
436 }
437 
TEST_P(GLES3DecoderTest1,DeleteSyncValidArgs)438 TEST_P(GLES3DecoderTest1, DeleteSyncValidArgs) {
439   EXPECT_CALL(*gl_, DeleteSync(reinterpret_cast<GLsync>(kServiceSyncId)));
440   SpecializedSetup<cmds::DeleteSync, 0>(true);
441   cmds::DeleteSync cmd;
442   cmd.Init(client_sync_id_);
443   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
444   EXPECT_EQ(GL_NO_ERROR, GetGLError());
445 }
446 
TEST_P(GLES2DecoderTest1,DeleteShaderValidArgs)447 TEST_P(GLES2DecoderTest1, DeleteShaderValidArgs) {
448   EXPECT_CALL(*gl_, DeleteShader(kServiceShaderId));
449   SpecializedSetup<cmds::DeleteShader, 0>(true);
450   cmds::DeleteShader cmd;
451   cmd.Init(client_shader_id_);
452   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
453   EXPECT_EQ(GL_NO_ERROR, GetGLError());
454 }
455 
TEST_P(GLES2DecoderTest1,DeleteTexturesImmediateValidArgs)456 TEST_P(GLES2DecoderTest1, DeleteTexturesImmediateValidArgs) {
457   EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(kServiceTextureId))).Times(1);
458   cmds::DeleteTexturesImmediate& cmd =
459       *GetImmediateAs<cmds::DeleteTexturesImmediate>();
460   SpecializedSetup<cmds::DeleteTexturesImmediate, 0>(true);
461   cmd.Init(1, &client_texture_id_);
462   EXPECT_EQ(error::kNoError,
463             ExecuteImmediateCmd(cmd, sizeof(client_texture_id_)));
464   EXPECT_EQ(GL_NO_ERROR, GetGLError());
465   EXPECT_TRUE(GetTexture(client_texture_id_) == nullptr);
466 }
467 
TEST_P(GLES2DecoderTest1,DeleteTexturesImmediateInvalidArgs)468 TEST_P(GLES2DecoderTest1, DeleteTexturesImmediateInvalidArgs) {
469   cmds::DeleteTexturesImmediate& cmd =
470       *GetImmediateAs<cmds::DeleteTexturesImmediate>();
471   SpecializedSetup<cmds::DeleteTexturesImmediate, 0>(false);
472   GLuint temp = kInvalidClientId;
473   cmd.Init(1, &temp);
474   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
475 }
476 
TEST_P(GLES2DecoderTest1,DepthFuncValidArgs)477 TEST_P(GLES2DecoderTest1, DepthFuncValidArgs) {
478   EXPECT_CALL(*gl_, DepthFunc(GL_NEVER));
479   SpecializedSetup<cmds::DepthFunc, 0>(true);
480   cmds::DepthFunc cmd;
481   cmd.Init(GL_NEVER);
482   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
483   EXPECT_EQ(GL_NO_ERROR, GetGLError());
484 }
485 
TEST_P(GLES2DecoderTest1,DepthMaskValidArgs)486 TEST_P(GLES2DecoderTest1, DepthMaskValidArgs) {
487   SpecializedSetup<cmds::DepthMask, 0>(true);
488   cmds::DepthMask cmd;
489   cmd.Init(true);
490   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
491   EXPECT_EQ(GL_NO_ERROR, GetGLError());
492 }
493 
TEST_P(GLES2DecoderTest1,DepthRangefValidArgs)494 TEST_P(GLES2DecoderTest1, DepthRangefValidArgs) {
495   EXPECT_CALL(*gl_, DepthRange(1, 2));
496   SpecializedSetup<cmds::DepthRangef, 0>(true);
497   cmds::DepthRangef cmd;
498   cmd.Init(1, 2);
499   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
500   EXPECT_EQ(GL_NO_ERROR, GetGLError());
501 }
502 
TEST_P(GLES2DecoderTest1,DetachShaderValidArgs)503 TEST_P(GLES2DecoderTest1, DetachShaderValidArgs) {
504   EXPECT_CALL(*gl_, DetachShader(kServiceProgramId, kServiceShaderId));
505   SpecializedSetup<cmds::DetachShader, 0>(true);
506   cmds::DetachShader cmd;
507   cmd.Init(client_program_id_, client_shader_id_);
508   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
509   EXPECT_EQ(GL_NO_ERROR, GetGLError());
510 }
511 
TEST_P(GLES2DecoderTest1,DisableValidArgs)512 TEST_P(GLES2DecoderTest1, DisableValidArgs) {
513   SetupExpectationsForEnableDisable(GL_BLEND, false);
514   SpecializedSetup<cmds::Disable, 0>(true);
515   cmds::Disable cmd;
516   cmd.Init(GL_BLEND);
517   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
518   EXPECT_EQ(GL_NO_ERROR, GetGLError());
519 }
520 
TEST_P(GLES2DecoderTest1,DisableInvalidArgs0_0)521 TEST_P(GLES2DecoderTest1, DisableInvalidArgs0_0) {
522   EXPECT_CALL(*gl_, Disable(_)).Times(0);
523   SpecializedSetup<cmds::Disable, 0>(false);
524   cmds::Disable cmd;
525   cmd.Init(GL_CLIP_PLANE0);
526   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
527   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
528 }
529 
TEST_P(GLES2DecoderTest1,DisableInvalidArgs0_1)530 TEST_P(GLES2DecoderTest1, DisableInvalidArgs0_1) {
531   EXPECT_CALL(*gl_, Disable(_)).Times(0);
532   SpecializedSetup<cmds::Disable, 0>(false);
533   cmds::Disable cmd;
534   cmd.Init(GL_POINT_SPRITE);
535   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
536   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
537 }
538 
TEST_P(GLES2DecoderTest1,EnableValidArgs)539 TEST_P(GLES2DecoderTest1, EnableValidArgs) {
540   SetupExpectationsForEnableDisable(GL_BLEND, true);
541   SpecializedSetup<cmds::Enable, 0>(true);
542   cmds::Enable cmd;
543   cmd.Init(GL_BLEND);
544   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
545   EXPECT_EQ(GL_NO_ERROR, GetGLError());
546 }
547 
TEST_P(GLES2DecoderTest1,EnableInvalidArgs0_0)548 TEST_P(GLES2DecoderTest1, EnableInvalidArgs0_0) {
549   EXPECT_CALL(*gl_, Enable(_)).Times(0);
550   SpecializedSetup<cmds::Enable, 0>(false);
551   cmds::Enable cmd;
552   cmd.Init(GL_CLIP_PLANE0);
553   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
554   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
555 }
556 
TEST_P(GLES2DecoderTest1,EnableInvalidArgs0_1)557 TEST_P(GLES2DecoderTest1, EnableInvalidArgs0_1) {
558   EXPECT_CALL(*gl_, Enable(_)).Times(0);
559   SpecializedSetup<cmds::Enable, 0>(false);
560   cmds::Enable cmd;
561   cmd.Init(GL_POINT_SPRITE);
562   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
563   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
564 }
565 
TEST_P(GLES3DecoderTest1,FenceSyncValidArgs)566 TEST_P(GLES3DecoderTest1, FenceSyncValidArgs) {
567   const GLsync kNewServiceIdGLuint = reinterpret_cast<GLsync>(kNewServiceId);
568   EXPECT_CALL(*gl_, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0))
569       .WillOnce(Return(kNewServiceIdGLuint));
570   SpecializedSetup<cmds::FenceSync, 0>(true);
571   cmds::FenceSync cmd;
572   cmd.Init(kNewClientId);
573   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
574   EXPECT_EQ(GL_NO_ERROR, GetGLError());
575   GLsync service_id = 0;
576   EXPECT_TRUE(GetSyncServiceId(kNewClientId, &service_id));
577   EXPECT_EQ(kNewServiceIdGLuint, service_id);
578 }
579 
TEST_P(GLES2DecoderTest1,FinishValidArgs)580 TEST_P(GLES2DecoderTest1, FinishValidArgs) {
581   EXPECT_CALL(*gl_, Finish());
582   SpecializedSetup<cmds::Finish, 0>(true);
583   cmds::Finish cmd;
584   cmd.Init();
585   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
586   EXPECT_EQ(GL_NO_ERROR, GetGLError());
587 }
588 
TEST_P(GLES2DecoderTest1,FlushValidArgs)589 TEST_P(GLES2DecoderTest1, FlushValidArgs) {
590   EXPECT_CALL(*gl_, Flush());
591   SpecializedSetup<cmds::Flush, 0>(true);
592   cmds::Flush cmd;
593   cmd.Init();
594   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
595   EXPECT_EQ(GL_NO_ERROR, GetGLError());
596 }
597 
TEST_P(GLES2DecoderTest1,FramebufferRenderbufferValidArgs)598 TEST_P(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) {
599   EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(
600                         GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
601                         kServiceRenderbufferId));
602   SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(true);
603   cmds::FramebufferRenderbuffer cmd;
604   cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
605            client_renderbuffer_id_);
606   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
607   EXPECT_EQ(GL_NO_ERROR, GetGLError());
608 }
609 
TEST_P(GLES2DecoderTest1,FramebufferRenderbufferInvalidArgs0_0)610 TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_0) {
611   EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
612   SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false);
613   cmds::FramebufferRenderbuffer cmd;
614   cmd.Init(GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
615            client_renderbuffer_id_);
616   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
617   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
618 }
619 
TEST_P(GLES2DecoderTest1,FramebufferRenderbufferInvalidArgs2_0)620 TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs2_0) {
621   EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
622   SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false);
623   cmds::FramebufferRenderbuffer cmd;
624   cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER,
625            client_renderbuffer_id_);
626   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
627   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
628 }
629 
TEST_P(GLES2DecoderTest1,FrontFaceValidArgs)630 TEST_P(GLES2DecoderTest1, FrontFaceValidArgs) {
631   EXPECT_CALL(*gl_, FrontFace(GL_CW));
632   SpecializedSetup<cmds::FrontFace, 0>(true);
633   cmds::FrontFace cmd;
634   cmd.Init(GL_CW);
635   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
636   EXPECT_EQ(GL_NO_ERROR, GetGLError());
637 }
638 
TEST_P(GLES2DecoderTest1,GenBuffersImmediateValidArgs)639 TEST_P(GLES2DecoderTest1, GenBuffersImmediateValidArgs) {
640   EXPECT_CALL(*gl_, GenBuffersARB(1, _))
641       .WillOnce(SetArgPointee<1>(kNewServiceId));
642   cmds::GenBuffersImmediate* cmd = GetImmediateAs<cmds::GenBuffersImmediate>();
643   GLuint temp = kNewClientId;
644   SpecializedSetup<cmds::GenBuffersImmediate, 0>(true);
645   cmd->Init(1, &temp);
646   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp)));
647   EXPECT_EQ(GL_NO_ERROR, GetGLError());
648   EXPECT_TRUE(GetBuffer(kNewClientId) != nullptr);
649 }
650 
TEST_P(GLES2DecoderTest1,GenBuffersImmediateDuplicateOrNullIds)651 TEST_P(GLES2DecoderTest1, GenBuffersImmediateDuplicateOrNullIds) {
652   EXPECT_CALL(*gl_, GenBuffersARB(_, _)).Times(0);
653   cmds::GenBuffersImmediate* cmd = GetImmediateAs<cmds::GenBuffersImmediate>();
654   GLuint temp[3] = {kNewClientId, kNewClientId + 1, kNewClientId};
655   SpecializedSetup<cmds::GenBuffersImmediate, 1>(true);
656   cmd->Init(3, temp);
657   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
658   EXPECT_TRUE(GetBuffer(kNewClientId) == nullptr);
659   EXPECT_TRUE(GetBuffer(kNewClientId + 1) == nullptr);
660   GLuint null_id[2] = {kNewClientId, 0};
661   cmd->Init(2, null_id);
662   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
663   EXPECT_TRUE(GetBuffer(kNewClientId) == nullptr);
664 }
665 
TEST_P(GLES2DecoderTest1,GenBuffersImmediateInvalidArgs)666 TEST_P(GLES2DecoderTest1, GenBuffersImmediateInvalidArgs) {
667   EXPECT_CALL(*gl_, GenBuffersARB(_, _)).Times(0);
668   cmds::GenBuffersImmediate* cmd = GetImmediateAs<cmds::GenBuffersImmediate>();
669   SpecializedSetup<cmds::GenBuffersImmediate, 0>(false);
670   cmd->Init(1, &client_buffer_id_);
671   EXPECT_EQ(error::kInvalidArguments,
672             ExecuteImmediateCmd(*cmd, sizeof(&client_buffer_id_)));
673 }
674 
TEST_P(GLES2DecoderTest1,GenerateMipmapValidArgs)675 TEST_P(GLES2DecoderTest1, GenerateMipmapValidArgs) {
676   EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D));
677   SpecializedSetup<cmds::GenerateMipmap, 0>(true);
678   cmds::GenerateMipmap cmd;
679   cmd.Init(GL_TEXTURE_2D);
680   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
681   EXPECT_EQ(GL_NO_ERROR, GetGLError());
682 }
683 
TEST_P(GLES2DecoderTest1,GenerateMipmapInvalidArgs0_0)684 TEST_P(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_0) {
685   EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0);
686   SpecializedSetup<cmds::GenerateMipmap, 0>(false);
687   cmds::GenerateMipmap cmd;
688   cmd.Init(GL_TEXTURE_1D);
689   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
690   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
691 }
692 
TEST_P(GLES2DecoderTest1,GenerateMipmapInvalidArgs0_1)693 TEST_P(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_1) {
694   EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0);
695   SpecializedSetup<cmds::GenerateMipmap, 0>(false);
696   cmds::GenerateMipmap cmd;
697   cmd.Init(GL_TEXTURE_3D);
698   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
699   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
700 }
701 
TEST_P(GLES2DecoderTest1,GenFramebuffersImmediateValidArgs)702 TEST_P(GLES2DecoderTest1, GenFramebuffersImmediateValidArgs) {
703   EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _))
704       .WillOnce(SetArgPointee<1>(kNewServiceId));
705   cmds::GenFramebuffersImmediate* cmd =
706       GetImmediateAs<cmds::GenFramebuffersImmediate>();
707   GLuint temp = kNewClientId;
708   SpecializedSetup<cmds::GenFramebuffersImmediate, 0>(true);
709   cmd->Init(1, &temp);
710   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp)));
711   EXPECT_EQ(GL_NO_ERROR, GetGLError());
712   EXPECT_TRUE(GetFramebuffer(kNewClientId) != nullptr);
713 }
714 
TEST_P(GLES2DecoderTest1,GenFramebuffersImmediateDuplicateOrNullIds)715 TEST_P(GLES2DecoderTest1, GenFramebuffersImmediateDuplicateOrNullIds) {
716   EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)).Times(0);
717   cmds::GenFramebuffersImmediate* cmd =
718       GetImmediateAs<cmds::GenFramebuffersImmediate>();
719   GLuint temp[3] = {kNewClientId, kNewClientId + 1, kNewClientId};
720   SpecializedSetup<cmds::GenFramebuffersImmediate, 1>(true);
721   cmd->Init(3, temp);
722   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
723   EXPECT_TRUE(GetFramebuffer(kNewClientId) == nullptr);
724   EXPECT_TRUE(GetFramebuffer(kNewClientId + 1) == nullptr);
725   GLuint null_id[2] = {kNewClientId, 0};
726   cmd->Init(2, null_id);
727   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
728   EXPECT_TRUE(GetFramebuffer(kNewClientId) == nullptr);
729 }
730 
TEST_P(GLES2DecoderTest1,GenFramebuffersImmediateInvalidArgs)731 TEST_P(GLES2DecoderTest1, GenFramebuffersImmediateInvalidArgs) {
732   EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)).Times(0);
733   cmds::GenFramebuffersImmediate* cmd =
734       GetImmediateAs<cmds::GenFramebuffersImmediate>();
735   SpecializedSetup<cmds::GenFramebuffersImmediate, 0>(false);
736   cmd->Init(1, &client_framebuffer_id_);
737   EXPECT_EQ(error::kInvalidArguments,
738             ExecuteImmediateCmd(*cmd, sizeof(&client_framebuffer_id_)));
739 }
740 
TEST_P(GLES2DecoderTest1,GenRenderbuffersImmediateValidArgs)741 TEST_P(GLES2DecoderTest1, GenRenderbuffersImmediateValidArgs) {
742   EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _))
743       .WillOnce(SetArgPointee<1>(kNewServiceId));
744   cmds::GenRenderbuffersImmediate* cmd =
745       GetImmediateAs<cmds::GenRenderbuffersImmediate>();
746   GLuint temp = kNewClientId;
747   SpecializedSetup<cmds::GenRenderbuffersImmediate, 0>(true);
748   cmd->Init(1, &temp);
749   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp)));
750   EXPECT_EQ(GL_NO_ERROR, GetGLError());
751   EXPECT_TRUE(GetRenderbuffer(kNewClientId) != nullptr);
752 }
753 
TEST_P(GLES2DecoderTest1,GenRenderbuffersImmediateDuplicateOrNullIds)754 TEST_P(GLES2DecoderTest1, GenRenderbuffersImmediateDuplicateOrNullIds) {
755   EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)).Times(0);
756   cmds::GenRenderbuffersImmediate* cmd =
757       GetImmediateAs<cmds::GenRenderbuffersImmediate>();
758   GLuint temp[3] = {kNewClientId, kNewClientId + 1, kNewClientId};
759   SpecializedSetup<cmds::GenRenderbuffersImmediate, 1>(true);
760   cmd->Init(3, temp);
761   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
762   EXPECT_TRUE(GetRenderbuffer(kNewClientId) == nullptr);
763   EXPECT_TRUE(GetRenderbuffer(kNewClientId + 1) == nullptr);
764   GLuint null_id[2] = {kNewClientId, 0};
765   cmd->Init(2, null_id);
766   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
767   EXPECT_TRUE(GetRenderbuffer(kNewClientId) == nullptr);
768 }
769 
TEST_P(GLES2DecoderTest1,GenRenderbuffersImmediateInvalidArgs)770 TEST_P(GLES2DecoderTest1, GenRenderbuffersImmediateInvalidArgs) {
771   EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)).Times(0);
772   cmds::GenRenderbuffersImmediate* cmd =
773       GetImmediateAs<cmds::GenRenderbuffersImmediate>();
774   SpecializedSetup<cmds::GenRenderbuffersImmediate, 0>(false);
775   cmd->Init(1, &client_renderbuffer_id_);
776   EXPECT_EQ(error::kInvalidArguments,
777             ExecuteImmediateCmd(*cmd, sizeof(&client_renderbuffer_id_)));
778 }
779 
TEST_P(GLES3DecoderTest1,GenSamplersImmediateValidArgs)780 TEST_P(GLES3DecoderTest1, GenSamplersImmediateValidArgs) {
781   EXPECT_CALL(*gl_, GenSamplers(1, _))
782       .WillOnce(SetArgPointee<1>(kNewServiceId));
783   cmds::GenSamplersImmediate* cmd =
784       GetImmediateAs<cmds::GenSamplersImmediate>();
785   GLuint temp = kNewClientId;
786   SpecializedSetup<cmds::GenSamplersImmediate, 0>(true);
787   cmd->Init(1, &temp);
788   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp)));
789   EXPECT_EQ(GL_NO_ERROR, GetGLError());
790   EXPECT_TRUE(GetSampler(kNewClientId) != nullptr);
791 }
792 
TEST_P(GLES3DecoderTest1,GenSamplersImmediateDuplicateOrNullIds)793 TEST_P(GLES3DecoderTest1, GenSamplersImmediateDuplicateOrNullIds) {
794   EXPECT_CALL(*gl_, GenSamplers(_, _)).Times(0);
795   cmds::GenSamplersImmediate* cmd =
796       GetImmediateAs<cmds::GenSamplersImmediate>();
797   GLuint temp[3] = {kNewClientId, kNewClientId + 1, kNewClientId};
798   SpecializedSetup<cmds::GenSamplersImmediate, 1>(true);
799   cmd->Init(3, temp);
800   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
801   EXPECT_TRUE(GetSampler(kNewClientId) == nullptr);
802   EXPECT_TRUE(GetSampler(kNewClientId + 1) == nullptr);
803   GLuint null_id[2] = {kNewClientId, 0};
804   cmd->Init(2, null_id);
805   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
806   EXPECT_TRUE(GetSampler(kNewClientId) == nullptr);
807 }
808 
TEST_P(GLES3DecoderTest1,GenSamplersImmediateInvalidArgs)809 TEST_P(GLES3DecoderTest1, GenSamplersImmediateInvalidArgs) {
810   EXPECT_CALL(*gl_, GenSamplers(_, _)).Times(0);
811   cmds::GenSamplersImmediate* cmd =
812       GetImmediateAs<cmds::GenSamplersImmediate>();
813   SpecializedSetup<cmds::GenSamplersImmediate, 0>(false);
814   cmd->Init(1, &client_sampler_id_);
815   EXPECT_EQ(error::kInvalidArguments,
816             ExecuteImmediateCmd(*cmd, sizeof(&client_sampler_id_)));
817 }
818 
TEST_P(GLES2DecoderTest1,GenTexturesImmediateValidArgs)819 TEST_P(GLES2DecoderTest1, GenTexturesImmediateValidArgs) {
820   EXPECT_CALL(*gl_, GenTextures(1, _))
821       .WillOnce(SetArgPointee<1>(kNewServiceId));
822   cmds::GenTexturesImmediate* cmd =
823       GetImmediateAs<cmds::GenTexturesImmediate>();
824   GLuint temp = kNewClientId;
825   SpecializedSetup<cmds::GenTexturesImmediate, 0>(true);
826   cmd->Init(1, &temp);
827   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp)));
828   EXPECT_EQ(GL_NO_ERROR, GetGLError());
829   EXPECT_TRUE(GetTexture(kNewClientId) != nullptr);
830 }
831 
TEST_P(GLES2DecoderTest1,GenTexturesImmediateDuplicateOrNullIds)832 TEST_P(GLES2DecoderTest1, GenTexturesImmediateDuplicateOrNullIds) {
833   EXPECT_CALL(*gl_, GenTextures(_, _)).Times(0);
834   cmds::GenTexturesImmediate* cmd =
835       GetImmediateAs<cmds::GenTexturesImmediate>();
836   GLuint temp[3] = {kNewClientId, kNewClientId + 1, kNewClientId};
837   SpecializedSetup<cmds::GenTexturesImmediate, 1>(true);
838   cmd->Init(3, temp);
839   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
840   EXPECT_TRUE(GetTexture(kNewClientId) == nullptr);
841   EXPECT_TRUE(GetTexture(kNewClientId + 1) == nullptr);
842   GLuint null_id[2] = {kNewClientId, 0};
843   cmd->Init(2, null_id);
844   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
845   EXPECT_TRUE(GetTexture(kNewClientId) == nullptr);
846 }
847 
TEST_P(GLES2DecoderTest1,GenTexturesImmediateInvalidArgs)848 TEST_P(GLES2DecoderTest1, GenTexturesImmediateInvalidArgs) {
849   EXPECT_CALL(*gl_, GenTextures(_, _)).Times(0);
850   cmds::GenTexturesImmediate* cmd =
851       GetImmediateAs<cmds::GenTexturesImmediate>();
852   SpecializedSetup<cmds::GenTexturesImmediate, 0>(false);
853   cmd->Init(1, &client_texture_id_);
854   EXPECT_EQ(error::kInvalidArguments,
855             ExecuteImmediateCmd(*cmd, sizeof(&client_texture_id_)));
856 }
857 
TEST_P(GLES3DecoderTest1,GenTransformFeedbacksImmediateValidArgs)858 TEST_P(GLES3DecoderTest1, GenTransformFeedbacksImmediateValidArgs) {
859   EXPECT_CALL(*gl_, GenTransformFeedbacks(1, _))
860       .WillOnce(SetArgPointee<1>(kNewServiceId));
861   cmds::GenTransformFeedbacksImmediate* cmd =
862       GetImmediateAs<cmds::GenTransformFeedbacksImmediate>();
863   GLuint temp = kNewClientId;
864   SpecializedSetup<cmds::GenTransformFeedbacksImmediate, 0>(true);
865   cmd->Init(1, &temp);
866   EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp)));
867   EXPECT_EQ(GL_NO_ERROR, GetGLError());
868   EXPECT_TRUE(GetTransformFeedback(kNewClientId) != nullptr);
869 }
870 
TEST_P(GLES3DecoderTest1,GenTransformFeedbacksImmediateDuplicateOrNullIds)871 TEST_P(GLES3DecoderTest1, GenTransformFeedbacksImmediateDuplicateOrNullIds) {
872   EXPECT_CALL(*gl_, GenTransformFeedbacks(_, _)).Times(0);
873   cmds::GenTransformFeedbacksImmediate* cmd =
874       GetImmediateAs<cmds::GenTransformFeedbacksImmediate>();
875   GLuint temp[3] = {kNewClientId, kNewClientId + 1, kNewClientId};
876   SpecializedSetup<cmds::GenTransformFeedbacksImmediate, 1>(true);
877   cmd->Init(3, temp);
878   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
879   EXPECT_TRUE(GetTransformFeedback(kNewClientId) == nullptr);
880   EXPECT_TRUE(GetTransformFeedback(kNewClientId + 1) == nullptr);
881   GLuint null_id[2] = {kNewClientId, 0};
882   cmd->Init(2, null_id);
883   EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(*cmd, sizeof(temp)));
884   EXPECT_TRUE(GetTransformFeedback(kNewClientId) == nullptr);
885 }
886 
TEST_P(GLES3DecoderTest1,GenTransformFeedbacksImmediateInvalidArgs)887 TEST_P(GLES3DecoderTest1, GenTransformFeedbacksImmediateInvalidArgs) {
888   EXPECT_CALL(*gl_, GenTransformFeedbacks(_, _)).Times(0);
889   cmds::GenTransformFeedbacksImmediate* cmd =
890       GetImmediateAs<cmds::GenTransformFeedbacksImmediate>();
891   SpecializedSetup<cmds::GenTransformFeedbacksImmediate, 0>(false);
892   cmd->Init(1, &client_transformfeedback_id_);
893   EXPECT_EQ(error::kInvalidArguments,
894             ExecuteImmediateCmd(*cmd, sizeof(&client_transformfeedback_id_)));
895 }
896 
TEST_P(GLES2DecoderTest1,GetBooleanvValidArgs)897 TEST_P(GLES2DecoderTest1, GetBooleanvValidArgs) {
898   EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
899   SpecializedSetup<cmds::GetBooleanv, 0>(true);
900   typedef cmds::GetBooleanv::Result Result;
901   Result* result = static_cast<Result*>(shared_memory_address_);
902   EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, _));
903   result->size = 0;
904   cmds::GetBooleanv cmd;
905   cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_);
906   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
907   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE),
908             result->GetNumResults());
909   EXPECT_EQ(GL_NO_ERROR, GetGLError());
910 }
911 
TEST_P(GLES2DecoderTest1,GetBooleanvInvalidArgs0_0)912 TEST_P(GLES2DecoderTest1, GetBooleanvInvalidArgs0_0) {
913   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
914   SpecializedSetup<cmds::GetBooleanv, 0>(false);
915   cmds::GetBooleanv::Result* result =
916       static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_);
917   result->size = 0;
918   cmds::GetBooleanv cmd;
919   cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_);
920   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
921   EXPECT_EQ(0u, result->size);
922   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
923 }
924 
TEST_P(GLES2DecoderTest1,GetBooleanvInvalidArgs1_0)925 TEST_P(GLES2DecoderTest1, GetBooleanvInvalidArgs1_0) {
926   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
927   SpecializedSetup<cmds::GetBooleanv, 0>(false);
928   cmds::GetBooleanv::Result* result =
929       static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_);
930   result->size = 0;
931   cmds::GetBooleanv cmd;
932   cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0);
933   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
934   EXPECT_EQ(0u, result->size);
935 }
936 
TEST_P(GLES2DecoderTest1,GetBooleanvInvalidArgs1_1)937 TEST_P(GLES2DecoderTest1, GetBooleanvInvalidArgs1_1) {
938   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
939   SpecializedSetup<cmds::GetBooleanv, 0>(false);
940   cmds::GetBooleanv::Result* result =
941       static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_);
942   result->size = 0;
943   cmds::GetBooleanv cmd;
944   cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset);
945   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
946   EXPECT_EQ(0u, result->size);
947 }
948 
TEST_P(GLES3DecoderTest1,GetBufferParameteri64vValidArgs)949 TEST_P(GLES3DecoderTest1, GetBufferParameteri64vValidArgs) {
950   SpecializedSetup<cmds::GetBufferParameteri64v, 0>(true);
951   typedef cmds::GetBufferParameteri64v::Result Result;
952   Result* result = static_cast<Result*>(shared_memory_address_);
953   result->size = 0;
954   cmds::GetBufferParameteri64v cmd;
955   cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_,
956            shared_memory_offset_);
957   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
958   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_BUFFER_SIZE),
959             result->GetNumResults());
960   EXPECT_EQ(GL_NO_ERROR, GetGLError());
961 }
962 
TEST_P(GLES2DecoderTest1,GetBufferParameterivValidArgs)963 TEST_P(GLES2DecoderTest1, GetBufferParameterivValidArgs) {
964   SpecializedSetup<cmds::GetBufferParameteriv, 0>(true);
965   typedef cmds::GetBufferParameteriv::Result Result;
966   Result* result = static_cast<Result*>(shared_memory_address_);
967   result->size = 0;
968   cmds::GetBufferParameteriv cmd;
969   cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_,
970            shared_memory_offset_);
971   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
972   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_BUFFER_SIZE),
973             result->GetNumResults());
974   EXPECT_EQ(GL_NO_ERROR, GetGLError());
975 }
976 
TEST_P(GLES2DecoderTest1,GetBufferParameterivInvalidArgs0_0)977 TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs0_0) {
978   EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
979   SpecializedSetup<cmds::GetBufferParameteriv, 0>(false);
980   cmds::GetBufferParameteriv::Result* result =
981       static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_);
982   result->size = 0;
983   cmds::GetBufferParameteriv cmd;
984   cmd.Init(GL_RENDERBUFFER, GL_BUFFER_SIZE, shared_memory_id_,
985            shared_memory_offset_);
986   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
987   EXPECT_EQ(0u, result->size);
988   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
989 }
990 
TEST_P(GLES2DecoderTest1,GetBufferParameterivInvalidArgs1_0)991 TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs1_0) {
992   EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
993   SpecializedSetup<cmds::GetBufferParameteriv, 0>(false);
994   cmds::GetBufferParameteriv::Result* result =
995       static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_);
996   result->size = 0;
997   cmds::GetBufferParameteriv cmd;
998   cmd.Init(GL_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, shared_memory_id_,
999            shared_memory_offset_);
1000   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1001   EXPECT_EQ(0u, result->size);
1002   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1003 }
1004 
TEST_P(GLES2DecoderTest1,GetBufferParameterivInvalidArgs2_0)1005 TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_0) {
1006   EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
1007   SpecializedSetup<cmds::GetBufferParameteriv, 0>(false);
1008   cmds::GetBufferParameteriv::Result* result =
1009       static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_);
1010   result->size = 0;
1011   cmds::GetBufferParameteriv cmd;
1012   cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, kInvalidSharedMemoryId, 0);
1013   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1014   EXPECT_EQ(0u, result->size);
1015 }
1016 
TEST_P(GLES2DecoderTest1,GetBufferParameterivInvalidArgs2_1)1017 TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_1) {
1018   EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
1019   SpecializedSetup<cmds::GetBufferParameteriv, 0>(false);
1020   cmds::GetBufferParameteriv::Result* result =
1021       static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_);
1022   result->size = 0;
1023   cmds::GetBufferParameteriv cmd;
1024   cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_,
1025            kInvalidSharedMemoryOffset);
1026   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1027   EXPECT_EQ(0u, result->size);
1028 }
1029 
TEST_P(GLES2DecoderTest1,GetErrorValidArgs)1030 TEST_P(GLES2DecoderTest1, GetErrorValidArgs) {
1031   EXPECT_CALL(*gl_, GetError());
1032   SpecializedSetup<cmds::GetError, 0>(true);
1033   cmds::GetError cmd;
1034   cmd.Init(shared_memory_id_, shared_memory_offset_);
1035   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1036   EXPECT_EQ(GL_NO_ERROR, GetGLError());
1037 }
1038 
TEST_P(GLES2DecoderTest1,GetErrorInvalidArgsBadSharedMemoryId)1039 TEST_P(GLES2DecoderTest1, GetErrorInvalidArgsBadSharedMemoryId) {
1040   EXPECT_CALL(*gl_, GetError()).Times(0);
1041   SpecializedSetup<cmds::GetError, 0>(false);
1042   cmds::GetError cmd;
1043   cmd.Init(kInvalidSharedMemoryId, shared_memory_offset_);
1044   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1045   cmd.Init(shared_memory_id_, kInvalidSharedMemoryOffset);
1046   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1047 }
1048 
TEST_P(GLES2DecoderTest1,GetFloatvValidArgs)1049 TEST_P(GLES2DecoderTest1, GetFloatvValidArgs) {
1050   EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
1051   SpecializedSetup<cmds::GetFloatv, 0>(true);
1052   typedef cmds::GetFloatv::Result Result;
1053   Result* result = static_cast<Result*>(shared_memory_address_);
1054   EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, _));
1055   result->size = 0;
1056   cmds::GetFloatv cmd;
1057   cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_);
1058   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1059   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE),
1060             result->GetNumResults());
1061   EXPECT_EQ(GL_NO_ERROR, GetGLError());
1062 }
1063 
TEST_P(GLES2DecoderTest1,GetFloatvInvalidArgs0_0)1064 TEST_P(GLES2DecoderTest1, GetFloatvInvalidArgs0_0) {
1065   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
1066   SpecializedSetup<cmds::GetFloatv, 0>(false);
1067   cmds::GetFloatv::Result* result =
1068       static_cast<cmds::GetFloatv::Result*>(shared_memory_address_);
1069   result->size = 0;
1070   cmds::GetFloatv cmd;
1071   cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_);
1072   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1073   EXPECT_EQ(0u, result->size);
1074   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1075 }
1076 
TEST_P(GLES2DecoderTest1,GetFloatvInvalidArgs1_0)1077 TEST_P(GLES2DecoderTest1, GetFloatvInvalidArgs1_0) {
1078   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
1079   SpecializedSetup<cmds::GetFloatv, 0>(false);
1080   cmds::GetFloatv::Result* result =
1081       static_cast<cmds::GetFloatv::Result*>(shared_memory_address_);
1082   result->size = 0;
1083   cmds::GetFloatv cmd;
1084   cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0);
1085   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1086   EXPECT_EQ(0u, result->size);
1087 }
1088 
TEST_P(GLES2DecoderTest1,GetFloatvInvalidArgs1_1)1089 TEST_P(GLES2DecoderTest1, GetFloatvInvalidArgs1_1) {
1090   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
1091   SpecializedSetup<cmds::GetFloatv, 0>(false);
1092   cmds::GetFloatv::Result* result =
1093       static_cast<cmds::GetFloatv::Result*>(shared_memory_address_);
1094   result->size = 0;
1095   cmds::GetFloatv cmd;
1096   cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset);
1097   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1098   EXPECT_EQ(0u, result->size);
1099 }
1100 
TEST_P(GLES2DecoderTest1,GetFramebufferAttachmentParameterivValidArgs)1101 TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivValidArgs) {
1102   EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
1103   SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(true);
1104   typedef cmds::GetFramebufferAttachmentParameteriv::Result Result;
1105   Result* result = static_cast<Result*>(shared_memory_address_);
1106   EXPECT_CALL(*gl_,
1107               GetFramebufferAttachmentParameterivEXT(
1108                   GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
1109                   GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, result->GetData()));
1110   result->size = 0;
1111   cmds::GetFramebufferAttachmentParameteriv cmd;
1112   cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
1113            GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
1114            shared_memory_offset_);
1115   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1116   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
1117                 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE),
1118             result->GetNumResults());
1119   EXPECT_EQ(GL_NO_ERROR, GetGLError());
1120 }
1121 
TEST_P(GLES2DecoderTest1,GetFramebufferAttachmentParameterivInvalidArgs0_0)1122 TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_0) {
1123   EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _))
1124       .Times(0);
1125   SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false);
1126   cmds::GetFramebufferAttachmentParameteriv::Result* result =
1127       static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>(
1128           shared_memory_address_);
1129   result->size = 0;
1130   cmds::GetFramebufferAttachmentParameteriv cmd;
1131   cmd.Init(GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0,
1132            GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
1133            shared_memory_offset_);
1134   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1135   EXPECT_EQ(0u, result->size);
1136   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1137 }
1138 
TEST_P(GLES2DecoderTest1,GetFramebufferAttachmentParameterivInvalidArgs3_0)1139 TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_0) {
1140   EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _))
1141       .Times(0);
1142   SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false);
1143   cmds::GetFramebufferAttachmentParameteriv::Result* result =
1144       static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>(
1145           shared_memory_address_);
1146   result->size = 0;
1147   cmds::GetFramebufferAttachmentParameteriv cmd;
1148   cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
1149            GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, kInvalidSharedMemoryId, 0);
1150   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1151   EXPECT_EQ(0u, result->size);
1152 }
1153 
TEST_P(GLES2DecoderTest1,GetFramebufferAttachmentParameterivInvalidArgs3_1)1154 TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_1) {
1155   EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _))
1156       .Times(0);
1157   SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false);
1158   cmds::GetFramebufferAttachmentParameteriv::Result* result =
1159       static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>(
1160           shared_memory_address_);
1161   result->size = 0;
1162   cmds::GetFramebufferAttachmentParameteriv cmd;
1163   cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
1164            GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
1165            kInvalidSharedMemoryOffset);
1166   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1167   EXPECT_EQ(0u, result->size);
1168 }
1169 
TEST_P(GLES3DecoderTest1,GetInteger64vValidArgs)1170 TEST_P(GLES3DecoderTest1, GetInteger64vValidArgs) {
1171   EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
1172   SpecializedSetup<cmds::GetInteger64v, 0>(true);
1173   typedef cmds::GetInteger64v::Result Result;
1174   Result* result = static_cast<Result*>(shared_memory_address_);
1175   EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, _));
1176   result->size = 0;
1177   cmds::GetInteger64v cmd;
1178   cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_);
1179   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1180   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE),
1181             result->GetNumResults());
1182   EXPECT_EQ(GL_NO_ERROR, GetGLError());
1183 }
1184 
TEST_P(GLES2DecoderTest1,GetIntegervValidArgs)1185 TEST_P(GLES2DecoderTest1, GetIntegervValidArgs) {
1186   EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
1187   SpecializedSetup<cmds::GetIntegerv, 0>(true);
1188   typedef cmds::GetIntegerv::Result Result;
1189   Result* result = static_cast<Result*>(shared_memory_address_);
1190   EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, result->GetData()));
1191   result->size = 0;
1192   cmds::GetIntegerv cmd;
1193   cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_);
1194   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1195   EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE),
1196             result->GetNumResults());
1197   EXPECT_EQ(GL_NO_ERROR, GetGLError());
1198 }
1199 
TEST_P(GLES2DecoderTest1,GetIntegervInvalidArgs0_0)1200 TEST_P(GLES2DecoderTest1, GetIntegervInvalidArgs0_0) {
1201   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
1202   SpecializedSetup<cmds::GetIntegerv, 0>(false);
1203   cmds::GetIntegerv::Result* result =
1204       static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_);
1205   result->size = 0;
1206   cmds::GetIntegerv cmd;
1207   cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_);
1208   EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1209   EXPECT_EQ(0u, result->size);
1210   EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1211 }
1212 
TEST_P(GLES2DecoderTest1,GetIntegervInvalidArgs1_0)1213 TEST_P(GLES2DecoderTest1, GetIntegervInvalidArgs1_0) {
1214   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
1215   SpecializedSetup<cmds::GetIntegerv, 0>(false);
1216   cmds::GetIntegerv::Result* result =
1217       static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_);
1218   result->size = 0;
1219   cmds::GetIntegerv cmd;
1220   cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0);
1221   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1222   EXPECT_EQ(0u, result->size);
1223 }
1224 
TEST_P(GLES2DecoderTest1,GetIntegervInvalidArgs1_1)1225 TEST_P(GLES2DecoderTest1, GetIntegervInvalidArgs1_1) {
1226   EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
1227   SpecializedSetup<cmds::GetIntegerv, 0>(false);
1228   cmds::GetIntegerv::Result* result =
1229       static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_);
1230   result->size = 0;
1231   cmds::GetIntegerv cmd;
1232   cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset);
1233   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1234   EXPECT_EQ(0u, result->size);
1235 }
1236 #endif  // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_
1237