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
15TEST_P(GLES2DecoderTest2, ScissorValidArgs) {
16  EXPECT_CALL(*gl_, Scissor(1, 2, 3, 4));
17  SpecializedSetup<cmds::Scissor, 0>(true);
18  cmds::Scissor cmd;
19  cmd.Init(1, 2, 3, 4);
20  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
21  EXPECT_EQ(GL_NO_ERROR, GetGLError());
22}
23
24TEST_P(GLES2DecoderTest2, ScissorInvalidArgs2_0) {
25  EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
26  SpecializedSetup<cmds::Scissor, 0>(false);
27  cmds::Scissor cmd;
28  cmd.Init(1, 2, -1, 4);
29  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
30  EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
31}
32
33TEST_P(GLES2DecoderTest2, ScissorInvalidArgs3_0) {
34  EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
35  SpecializedSetup<cmds::Scissor, 0>(false);
36  cmds::Scissor cmd;
37  cmd.Init(1, 2, 3, -1);
38  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
39  EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
40}
41// TODO(gman): ShaderBinary
42
43// TODO(gman): ShaderSourceBucket
44
45TEST_P(GLES2DecoderTest2, StencilFuncValidArgs) {
46  EXPECT_CALL(*gl_, StencilFunc(GL_NEVER, 2, 3));
47  SpecializedSetup<cmds::StencilFunc, 0>(true);
48  cmds::StencilFunc cmd;
49  cmd.Init(GL_NEVER, 2, 3);
50  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
51  EXPECT_EQ(GL_NO_ERROR, GetGLError());
52}
53
54TEST_P(GLES2DecoderTest2, StencilFuncSeparateValidArgs) {
55  EXPECT_CALL(*gl_, StencilFuncSeparate(GL_FRONT, GL_NEVER, 3, 4));
56  SpecializedSetup<cmds::StencilFuncSeparate, 0>(true);
57  cmds::StencilFuncSeparate cmd;
58  cmd.Init(GL_FRONT, GL_NEVER, 3, 4);
59  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
60  EXPECT_EQ(GL_NO_ERROR, GetGLError());
61}
62
63TEST_P(GLES2DecoderTest2, StencilMaskValidArgs) {
64  SpecializedSetup<cmds::StencilMask, 0>(true);
65  cmds::StencilMask cmd;
66  cmd.Init(1);
67  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
68  EXPECT_EQ(GL_NO_ERROR, GetGLError());
69}
70
71TEST_P(GLES2DecoderTest2, StencilMaskSeparateValidArgs) {
72  SpecializedSetup<cmds::StencilMaskSeparate, 0>(true);
73  cmds::StencilMaskSeparate cmd;
74  cmd.Init(GL_FRONT, 2);
75  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
76  EXPECT_EQ(GL_NO_ERROR, GetGLError());
77}
78
79TEST_P(GLES2DecoderTest2, StencilOpValidArgs) {
80  EXPECT_CALL(*gl_, StencilOp(GL_KEEP, GL_INCR, GL_KEEP));
81  SpecializedSetup<cmds::StencilOp, 0>(true);
82  cmds::StencilOp cmd;
83  cmd.Init(GL_KEEP, GL_INCR, GL_KEEP);
84  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
85  EXPECT_EQ(GL_NO_ERROR, GetGLError());
86}
87
88TEST_P(GLES2DecoderTest2, StencilOpSeparateValidArgs) {
89  EXPECT_CALL(*gl_, StencilOpSeparate(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP));
90  SpecializedSetup<cmds::StencilOpSeparate, 0>(true);
91  cmds::StencilOpSeparate cmd;
92  cmd.Init(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP);
93  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
94  EXPECT_EQ(GL_NO_ERROR, GetGLError());
95}
96// TODO(gman): TexImage2D
97
98TEST_P(GLES2DecoderTest2, TexParameterfValidArgs) {
99  EXPECT_CALL(*gl_,
100              TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
101  SpecializedSetup<cmds::TexParameterf, 0>(true);
102  cmds::TexParameterf cmd;
103  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
104  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
105  EXPECT_EQ(GL_NO_ERROR, GetGLError());
106}
107
108TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs0_0) {
109  EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
110  SpecializedSetup<cmds::TexParameterf, 0>(false);
111  cmds::TexParameterf cmd;
112  cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
113  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
114  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
115}
116
117TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs0_1) {
118  EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
119  SpecializedSetup<cmds::TexParameterf, 0>(false);
120  cmds::TexParameterf cmd;
121  cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
122  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
123  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
124}
125
126TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs1_0) {
127  EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
128  SpecializedSetup<cmds::TexParameterf, 0>(false);
129  cmds::TexParameterf cmd;
130  cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
131  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
132  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
133}
134
135TEST_P(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) {
136  cmds::TexParameterfvImmediate& cmd =
137      *GetImmediateAs<cmds::TexParameterfvImmediate>();
138  SpecializedSetup<cmds::TexParameterfvImmediate, 0>(true);
139  GLfloat temp[1] = {
140      GL_NEAREST,
141  };
142  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
143  EXPECT_CALL(
144      *gl_,
145      TexParameterf(GL_TEXTURE_2D,
146                    GL_TEXTURE_MAG_FILTER,
147                    *reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
148  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
149  EXPECT_EQ(GL_NO_ERROR, GetGLError());
150}
151
152TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_0) {
153  cmds::TexParameterfvImmediate& cmd =
154      *GetImmediateAs<cmds::TexParameterfvImmediate>();
155  EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
156  SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
157  GLfloat temp[1] = {
158      GL_NEAREST,
159  };
160  cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
161  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
162  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
163}
164
165TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_1) {
166  cmds::TexParameterfvImmediate& cmd =
167      *GetImmediateAs<cmds::TexParameterfvImmediate>();
168  EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
169  SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
170  GLfloat temp[1] = {
171      GL_NEAREST,
172  };
173  cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
174  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
175  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
176}
177
178TEST_P(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs1_0) {
179  cmds::TexParameterfvImmediate& cmd =
180      *GetImmediateAs<cmds::TexParameterfvImmediate>();
181  EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
182  SpecializedSetup<cmds::TexParameterfvImmediate, 0>(false);
183  GLfloat temp[1] = {
184      GL_NEAREST,
185  };
186  cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
187  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
188  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
189}
190
191TEST_P(GLES2DecoderTest2, TexParameteriValidArgs) {
192  EXPECT_CALL(*gl_,
193              TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
194  SpecializedSetup<cmds::TexParameteri, 0>(true);
195  cmds::TexParameteri cmd;
196  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
197  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
198  EXPECT_EQ(GL_NO_ERROR, GetGLError());
199}
200
201TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs0_0) {
202  EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
203  SpecializedSetup<cmds::TexParameteri, 0>(false);
204  cmds::TexParameteri cmd;
205  cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
206  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
207  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
208}
209
210TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs0_1) {
211  EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
212  SpecializedSetup<cmds::TexParameteri, 0>(false);
213  cmds::TexParameteri cmd;
214  cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
215  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
216  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
217}
218
219TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs1_0) {
220  EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
221  SpecializedSetup<cmds::TexParameteri, 0>(false);
222  cmds::TexParameteri cmd;
223  cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
224  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
225  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
226}
227
228TEST_P(GLES2DecoderTest2, TexParameterivImmediateValidArgs) {
229  cmds::TexParameterivImmediate& cmd =
230      *GetImmediateAs<cmds::TexParameterivImmediate>();
231  SpecializedSetup<cmds::TexParameterivImmediate, 0>(true);
232  GLint temp[1] = {
233      GL_NEAREST,
234  };
235  cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
236  EXPECT_CALL(
237      *gl_,
238      TexParameteri(GL_TEXTURE_2D,
239                    GL_TEXTURE_MAG_FILTER,
240                    *reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
241  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
242  EXPECT_EQ(GL_NO_ERROR, GetGLError());
243}
244
245TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_0) {
246  cmds::TexParameterivImmediate& cmd =
247      *GetImmediateAs<cmds::TexParameterivImmediate>();
248  EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
249  SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
250  GLint temp[1] = {
251      GL_NEAREST,
252  };
253  cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
254  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
255  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
256}
257
258TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_1) {
259  cmds::TexParameterivImmediate& cmd =
260      *GetImmediateAs<cmds::TexParameterivImmediate>();
261  EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
262  SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
263  GLint temp[1] = {
264      GL_NEAREST,
265  };
266  cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
267  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
268  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
269}
270
271TEST_P(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs1_0) {
272  cmds::TexParameterivImmediate& cmd =
273      *GetImmediateAs<cmds::TexParameterivImmediate>();
274  EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
275  SpecializedSetup<cmds::TexParameterivImmediate, 0>(false);
276  GLint temp[1] = {
277      GL_NEAREST,
278  };
279  cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
280  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
281  EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
282}
283// TODO(gman): TexSubImage2D
284
285TEST_P(GLES2DecoderTest2, Uniform1fValidArgs) {
286  EXPECT_CALL(*gl_, Uniform1fv(1, 1, _));
287  SpecializedSetup<cmds::Uniform1f, 0>(true);
288  cmds::Uniform1f cmd;
289  cmd.Init(1, 2);
290  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
291  EXPECT_EQ(GL_NO_ERROR, GetGLError());
292}
293
294TEST_P(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) {
295  cmds::Uniform1fvImmediate& cmd = *GetImmediateAs<cmds::Uniform1fvImmediate>();
296  EXPECT_CALL(
297      *gl_,
298      Uniform1fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
299  SpecializedSetup<cmds::Uniform1fvImmediate, 0>(true);
300  GLfloat temp[1 * 2] = {
301      0,
302  };
303  cmd.Init(1, 2, &temp[0]);
304  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
305  EXPECT_EQ(GL_NO_ERROR, GetGLError());
306}
307// TODO(gman): Uniform1i
308// TODO(gman): Uniform1ivImmediate
309
310TEST_P(GLES2DecoderTest2, Uniform2fValidArgs) {
311  EXPECT_CALL(*gl_, Uniform2fv(1, 1, _));
312  SpecializedSetup<cmds::Uniform2f, 0>(true);
313  cmds::Uniform2f cmd;
314  cmd.Init(1, 2, 3);
315  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
316  EXPECT_EQ(GL_NO_ERROR, GetGLError());
317}
318
319TEST_P(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) {
320  cmds::Uniform2fvImmediate& cmd = *GetImmediateAs<cmds::Uniform2fvImmediate>();
321  EXPECT_CALL(
322      *gl_,
323      Uniform2fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
324  SpecializedSetup<cmds::Uniform2fvImmediate, 0>(true);
325  GLfloat temp[2 * 2] = {
326      0,
327  };
328  cmd.Init(1, 2, &temp[0]);
329  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
330  EXPECT_EQ(GL_NO_ERROR, GetGLError());
331}
332
333TEST_P(GLES2DecoderTest2, Uniform2iValidArgs) {
334  EXPECT_CALL(*gl_, Uniform2iv(1, 1, _));
335  SpecializedSetup<cmds::Uniform2i, 0>(true);
336  cmds::Uniform2i cmd;
337  cmd.Init(1, 2, 3);
338  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
339  EXPECT_EQ(GL_NO_ERROR, GetGLError());
340}
341
342TEST_P(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) {
343  cmds::Uniform2ivImmediate& cmd = *GetImmediateAs<cmds::Uniform2ivImmediate>();
344  EXPECT_CALL(
345      *gl_,
346      Uniform2iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
347  SpecializedSetup<cmds::Uniform2ivImmediate, 0>(true);
348  GLint temp[2 * 2] = {
349      0,
350  };
351  cmd.Init(1, 2, &temp[0]);
352  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
353  EXPECT_EQ(GL_NO_ERROR, GetGLError());
354}
355
356TEST_P(GLES2DecoderTest2, Uniform3fValidArgs) {
357  EXPECT_CALL(*gl_, Uniform3fv(1, 1, _));
358  SpecializedSetup<cmds::Uniform3f, 0>(true);
359  cmds::Uniform3f cmd;
360  cmd.Init(1, 2, 3, 4);
361  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
362  EXPECT_EQ(GL_NO_ERROR, GetGLError());
363}
364
365TEST_P(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) {
366  cmds::Uniform3fvImmediate& cmd = *GetImmediateAs<cmds::Uniform3fvImmediate>();
367  EXPECT_CALL(
368      *gl_,
369      Uniform3fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
370  SpecializedSetup<cmds::Uniform3fvImmediate, 0>(true);
371  GLfloat temp[3 * 2] = {
372      0,
373  };
374  cmd.Init(1, 2, &temp[0]);
375  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
376  EXPECT_EQ(GL_NO_ERROR, GetGLError());
377}
378
379TEST_P(GLES2DecoderTest2, Uniform3iValidArgs) {
380  EXPECT_CALL(*gl_, Uniform3iv(1, 1, _));
381  SpecializedSetup<cmds::Uniform3i, 0>(true);
382  cmds::Uniform3i cmd;
383  cmd.Init(1, 2, 3, 4);
384  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
385  EXPECT_EQ(GL_NO_ERROR, GetGLError());
386}
387
388TEST_P(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) {
389  cmds::Uniform3ivImmediate& cmd = *GetImmediateAs<cmds::Uniform3ivImmediate>();
390  EXPECT_CALL(
391      *gl_,
392      Uniform3iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
393  SpecializedSetup<cmds::Uniform3ivImmediate, 0>(true);
394  GLint temp[3 * 2] = {
395      0,
396  };
397  cmd.Init(1, 2, &temp[0]);
398  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
399  EXPECT_EQ(GL_NO_ERROR, GetGLError());
400}
401
402TEST_P(GLES2DecoderTest2, Uniform4fValidArgs) {
403  EXPECT_CALL(*gl_, Uniform4fv(1, 1, _));
404  SpecializedSetup<cmds::Uniform4f, 0>(true);
405  cmds::Uniform4f cmd;
406  cmd.Init(1, 2, 3, 4, 5);
407  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
408  EXPECT_EQ(GL_NO_ERROR, GetGLError());
409}
410
411TEST_P(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) {
412  cmds::Uniform4fvImmediate& cmd = *GetImmediateAs<cmds::Uniform4fvImmediate>();
413  EXPECT_CALL(
414      *gl_,
415      Uniform4fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
416  SpecializedSetup<cmds::Uniform4fvImmediate, 0>(true);
417  GLfloat temp[4 * 2] = {
418      0,
419  };
420  cmd.Init(1, 2, &temp[0]);
421  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
422  EXPECT_EQ(GL_NO_ERROR, GetGLError());
423}
424
425TEST_P(GLES2DecoderTest2, Uniform4iValidArgs) {
426  EXPECT_CALL(*gl_, Uniform4iv(1, 1, _));
427  SpecializedSetup<cmds::Uniform4i, 0>(true);
428  cmds::Uniform4i cmd;
429  cmd.Init(1, 2, 3, 4, 5);
430  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
431  EXPECT_EQ(GL_NO_ERROR, GetGLError());
432}
433
434TEST_P(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) {
435  cmds::Uniform4ivImmediate& cmd = *GetImmediateAs<cmds::Uniform4ivImmediate>();
436  EXPECT_CALL(
437      *gl_,
438      Uniform4iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
439  SpecializedSetup<cmds::Uniform4ivImmediate, 0>(true);
440  GLint temp[4 * 2] = {
441      0,
442  };
443  cmd.Init(1, 2, &temp[0]);
444  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
445  EXPECT_EQ(GL_NO_ERROR, GetGLError());
446}
447
448TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) {
449  cmds::UniformMatrix2fvImmediate& cmd =
450      *GetImmediateAs<cmds::UniformMatrix2fvImmediate>();
451  EXPECT_CALL(
452      *gl_,
453      UniformMatrix2fv(
454          1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
455  SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>(true);
456  GLfloat temp[4 * 2] = {
457      0,
458  };
459  cmd.Init(1, 2, &temp[0]);
460  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
461  EXPECT_EQ(GL_NO_ERROR, GetGLError());
462}
463
464TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) {
465  cmds::UniformMatrix3fvImmediate& cmd =
466      *GetImmediateAs<cmds::UniformMatrix3fvImmediate>();
467  EXPECT_CALL(
468      *gl_,
469      UniformMatrix3fv(
470          1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
471  SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>(true);
472  GLfloat temp[9 * 2] = {
473      0,
474  };
475  cmd.Init(1, 2, &temp[0]);
476  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
477  EXPECT_EQ(GL_NO_ERROR, GetGLError());
478}
479
480TEST_P(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) {
481  cmds::UniformMatrix4fvImmediate& cmd =
482      *GetImmediateAs<cmds::UniformMatrix4fvImmediate>();
483  EXPECT_CALL(
484      *gl_,
485      UniformMatrix4fv(
486          1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
487  SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>(true);
488  GLfloat temp[16 * 2] = {
489      0,
490  };
491  cmd.Init(1, 2, &temp[0]);
492  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
493  EXPECT_EQ(GL_NO_ERROR, GetGLError());
494}
495
496TEST_P(GLES2DecoderTest2, UseProgramValidArgs) {
497  EXPECT_CALL(*gl_, UseProgram(kServiceProgramId));
498  SpecializedSetup<cmds::UseProgram, 0>(true);
499  cmds::UseProgram cmd;
500  cmd.Init(client_program_id_);
501  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
502  EXPECT_EQ(GL_NO_ERROR, GetGLError());
503}
504
505TEST_P(GLES2DecoderTest2, UseProgramInvalidArgs0_0) {
506  EXPECT_CALL(*gl_, UseProgram(_)).Times(0);
507  SpecializedSetup<cmds::UseProgram, 0>(false);
508  cmds::UseProgram cmd;
509  cmd.Init(kInvalidClientId);
510  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
511  EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
512}
513
514TEST_P(GLES2DecoderTest2, ValidateProgramValidArgs) {
515  EXPECT_CALL(*gl_, ValidateProgram(kServiceProgramId));
516  SpecializedSetup<cmds::ValidateProgram, 0>(true);
517  cmds::ValidateProgram cmd;
518  cmd.Init(client_program_id_);
519  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
520  EXPECT_EQ(GL_NO_ERROR, GetGLError());
521}
522
523TEST_P(GLES2DecoderTest2, VertexAttrib1fValidArgs) {
524  EXPECT_CALL(*gl_, VertexAttrib1f(1, 2));
525  SpecializedSetup<cmds::VertexAttrib1f, 0>(true);
526  cmds::VertexAttrib1f cmd;
527  cmd.Init(1, 2);
528  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
529  EXPECT_EQ(GL_NO_ERROR, GetGLError());
530}
531
532TEST_P(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) {
533  cmds::VertexAttrib1fvImmediate& cmd =
534      *GetImmediateAs<cmds::VertexAttrib1fvImmediate>();
535  SpecializedSetup<cmds::VertexAttrib1fvImmediate, 0>(true);
536  GLfloat temp[1] = {
537      0,
538  };
539  cmd.Init(1, &temp[0]);
540  EXPECT_CALL(*gl_,
541              VertexAttrib1fv(
542                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
543  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
544  EXPECT_EQ(GL_NO_ERROR, GetGLError());
545}
546
547TEST_P(GLES2DecoderTest2, VertexAttrib2fValidArgs) {
548  EXPECT_CALL(*gl_, VertexAttrib2f(1, 2, 3));
549  SpecializedSetup<cmds::VertexAttrib2f, 0>(true);
550  cmds::VertexAttrib2f cmd;
551  cmd.Init(1, 2, 3);
552  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
553  EXPECT_EQ(GL_NO_ERROR, GetGLError());
554}
555
556TEST_P(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) {
557  cmds::VertexAttrib2fvImmediate& cmd =
558      *GetImmediateAs<cmds::VertexAttrib2fvImmediate>();
559  SpecializedSetup<cmds::VertexAttrib2fvImmediate, 0>(true);
560  GLfloat temp[2] = {
561      0,
562  };
563  cmd.Init(1, &temp[0]);
564  EXPECT_CALL(*gl_,
565              VertexAttrib2fv(
566                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
567  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
568  EXPECT_EQ(GL_NO_ERROR, GetGLError());
569}
570
571TEST_P(GLES2DecoderTest2, VertexAttrib3fValidArgs) {
572  EXPECT_CALL(*gl_, VertexAttrib3f(1, 2, 3, 4));
573  SpecializedSetup<cmds::VertexAttrib3f, 0>(true);
574  cmds::VertexAttrib3f cmd;
575  cmd.Init(1, 2, 3, 4);
576  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
577  EXPECT_EQ(GL_NO_ERROR, GetGLError());
578}
579
580TEST_P(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) {
581  cmds::VertexAttrib3fvImmediate& cmd =
582      *GetImmediateAs<cmds::VertexAttrib3fvImmediate>();
583  SpecializedSetup<cmds::VertexAttrib3fvImmediate, 0>(true);
584  GLfloat temp[3] = {
585      0,
586  };
587  cmd.Init(1, &temp[0]);
588  EXPECT_CALL(*gl_,
589              VertexAttrib3fv(
590                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
591  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
592  EXPECT_EQ(GL_NO_ERROR, GetGLError());
593}
594
595TEST_P(GLES2DecoderTest2, VertexAttrib4fValidArgs) {
596  EXPECT_CALL(*gl_, VertexAttrib4f(1, 2, 3, 4, 5));
597  SpecializedSetup<cmds::VertexAttrib4f, 0>(true);
598  cmds::VertexAttrib4f cmd;
599  cmd.Init(1, 2, 3, 4, 5);
600  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
601  EXPECT_EQ(GL_NO_ERROR, GetGLError());
602}
603
604TEST_P(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) {
605  cmds::VertexAttrib4fvImmediate& cmd =
606      *GetImmediateAs<cmds::VertexAttrib4fvImmediate>();
607  SpecializedSetup<cmds::VertexAttrib4fvImmediate, 0>(true);
608  GLfloat temp[4] = {
609      0,
610  };
611  cmd.Init(1, &temp[0]);
612  EXPECT_CALL(*gl_,
613              VertexAttrib4fv(
614                  1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
615  EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
616  EXPECT_EQ(GL_NO_ERROR, GetGLError());
617}
618// TODO(gman): VertexAttribPointer
619
620TEST_P(GLES2DecoderTest2, ViewportValidArgs) {
621  EXPECT_CALL(*gl_, Viewport(1, 2, 3, 4));
622  SpecializedSetup<cmds::Viewport, 0>(true);
623  cmds::Viewport cmd;
624  cmd.Init(1, 2, 3, 4);
625  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
626  EXPECT_EQ(GL_NO_ERROR, GetGLError());
627}
628
629TEST_P(GLES2DecoderTest2, ViewportInvalidArgs2_0) {
630  EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0);
631  SpecializedSetup<cmds::Viewport, 0>(false);
632  cmds::Viewport cmd;
633  cmd.Init(1, 2, -1, 4);
634  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
635  EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
636}
637
638TEST_P(GLES2DecoderTest2, ViewportInvalidArgs3_0) {
639  EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0);
640  SpecializedSetup<cmds::Viewport, 0>(false);
641  cmds::Viewport cmd;
642  cmd.Init(1, 2, 3, -1);
643  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
644  EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
645}
646// TODO(gman): TexStorage2DEXT
647// TODO(gman): GenQueriesEXTImmediate
648// TODO(gman): DeleteQueriesEXTImmediate
649// TODO(gman): BeginQueryEXT
650
651// TODO(gman): EndQueryEXT
652
653// TODO(gman): InsertEventMarkerEXT
654
655// TODO(gman): PushGroupMarkerEXT
656
657TEST_P(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) {
658  SpecializedSetup<cmds::PopGroupMarkerEXT, 0>(true);
659  cmds::PopGroupMarkerEXT cmd;
660  cmd.Init();
661  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
662  EXPECT_EQ(GL_NO_ERROR, GetGLError());
663}
664// TODO(gman): GenVertexArraysOESImmediate
665// TODO(gman): DeleteVertexArraysOESImmediate
666// TODO(gman): IsVertexArrayOES
667// TODO(gman): BindVertexArrayOES
668// TODO(gman): SwapBuffers
669// TODO(gman): GetMaxValueInBufferCHROMIUM
670// TODO(gman): GenSharedIdsCHROMIUM
671
672// TODO(gman): DeleteSharedIdsCHROMIUM
673
674// TODO(gman): RegisterSharedIdsCHROMIUM
675
676// TODO(gman): EnableFeatureCHROMIUM
677
678// TODO(gman): ResizeCHROMIUM
679// TODO(gman): GetRequestableExtensionsCHROMIUM
680
681// TODO(gman): RequestExtensionCHROMIUM
682
683// TODO(gman): GetMultipleIntegervCHROMIUM
684
685// TODO(gman): GetProgramInfoCHROMIUM
686
687// TODO(gman): GetTranslatedShaderSourceANGLE
688// TODO(gman): PostSubBufferCHROMIUM
689// TODO(gman): TexImageIOSurface2DCHROMIUM
690// TODO(gman): CopyTextureCHROMIUM
691// TODO(gman): DrawArraysInstancedANGLE
692// TODO(gman): DrawElementsInstancedANGLE
693// TODO(gman): VertexAttribDivisorANGLE
694// TODO(gman): GenMailboxCHROMIUM
695
696// TODO(gman): ProduceTextureCHROMIUMImmediate
697// TODO(gman): ProduceTextureDirectCHROMIUMImmediate
698// TODO(gman): ConsumeTextureCHROMIUMImmediate
699// TODO(gman): CreateAndConsumeTextureCHROMIUMImmediate
700// TODO(gman): BindUniformLocationCHROMIUMBucket
701// TODO(gman): BindTexImage2DCHROMIUM
702// TODO(gman): ReleaseTexImage2DCHROMIUM
703// TODO(gman): TraceBeginCHROMIUM
704
705// TODO(gman): TraceEndCHROMIUM
706// TODO(gman): AsyncTexSubImage2DCHROMIUM
707
708// TODO(gman): AsyncTexImage2DCHROMIUM
709
710// TODO(gman): WaitAsyncTexImage2DCHROMIUM
711
712// TODO(gman): WaitAllAsyncTexImage2DCHROMIUM
713
714// TODO(gman): LoseContextCHROMIUM
715// TODO(gman): InsertSyncPointCHROMIUM
716
717// TODO(gman): WaitSyncPointCHROMIUM
718
719#endif  // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
720