1// Copyright (c) 2012 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// DO NOT EDIT! 8 9// It is included by gles2_cmd_decoder_unittest_1.cc 10#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_ 11#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_ 12 13// TODO(gman): ActiveTexture 14 15TEST_F(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// TODO(gman): BindAttribLocation 24 25// TODO(gman): BindAttribLocationBucket 26 27TEST_F(GLES2DecoderTest1, BindBufferValidArgs) { 28 EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kServiceBufferId)); 29 SpecializedSetup<cmds::BindBuffer, 0>(true); 30 cmds::BindBuffer cmd; 31 cmd.Init(GL_ARRAY_BUFFER, client_buffer_id_); 32 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 33 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 34} 35 36TEST_F(GLES2DecoderTest1, BindBufferValidArgsNewId) { 37 EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kNewServiceId)); 38 EXPECT_CALL(*gl_, GenBuffersARB(1, _)) 39 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 40 SpecializedSetup<cmds::BindBuffer, 0>(true); 41 cmds::BindBuffer cmd; 42 cmd.Init(GL_ARRAY_BUFFER, kNewClientId); 43 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 44 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 45 EXPECT_TRUE(GetBuffer(kNewClientId) != NULL); 46} 47 48TEST_F(GLES2DecoderTest1, BindBufferInvalidArgs0_0) { 49 EXPECT_CALL(*gl_, BindBuffer(_, _)).Times(0); 50 SpecializedSetup<cmds::BindBuffer, 0>(false); 51 cmds::BindBuffer cmd; 52 cmd.Init(GL_RENDERBUFFER, client_buffer_id_); 53 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 54 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 55} 56 57TEST_F(GLES2DecoderTest1, BindFramebufferValidArgs) { 58 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kServiceFramebufferId)); 59 SpecializedSetup<cmds::BindFramebuffer, 0>(true); 60 cmds::BindFramebuffer cmd; 61 cmd.Init(GL_FRAMEBUFFER, client_framebuffer_id_); 62 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 63 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 64} 65 66TEST_F(GLES2DecoderTest1, BindFramebufferValidArgsNewId) { 67 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kNewServiceId)); 68 EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _)) 69 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 70 SpecializedSetup<cmds::BindFramebuffer, 0>(true); 71 cmds::BindFramebuffer cmd; 72 cmd.Init(GL_FRAMEBUFFER, kNewClientId); 73 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 74 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 75 EXPECT_TRUE(GetFramebuffer(kNewClientId) != NULL); 76} 77 78TEST_F(GLES2DecoderTest1, BindFramebufferInvalidArgs0_0) { 79 EXPECT_CALL(*gl_, BindFramebufferEXT(_, _)).Times(0); 80 SpecializedSetup<cmds::BindFramebuffer, 0>(false); 81 cmds::BindFramebuffer cmd; 82 cmd.Init(GL_DRAW_FRAMEBUFFER, client_framebuffer_id_); 83 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 84 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 85} 86 87TEST_F(GLES2DecoderTest1, BindFramebufferInvalidArgs0_1) { 88 EXPECT_CALL(*gl_, BindFramebufferEXT(_, _)).Times(0); 89 SpecializedSetup<cmds::BindFramebuffer, 0>(false); 90 cmds::BindFramebuffer cmd; 91 cmd.Init(GL_READ_FRAMEBUFFER, client_framebuffer_id_); 92 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 93 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 94} 95 96TEST_F(GLES2DecoderTest1, BindRenderbufferValidArgs) { 97 EXPECT_CALL( 98 *gl_, BindRenderbufferEXT(GL_RENDERBUFFER, kServiceRenderbufferId)); 99 SpecializedSetup<cmds::BindRenderbuffer, 0>(true); 100 cmds::BindRenderbuffer cmd; 101 cmd.Init(GL_RENDERBUFFER, client_renderbuffer_id_); 102 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 103 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 104} 105 106TEST_F(GLES2DecoderTest1, BindRenderbufferValidArgsNewId) { 107 EXPECT_CALL(*gl_, BindRenderbufferEXT(GL_RENDERBUFFER, kNewServiceId)); 108 EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _)) 109 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 110 SpecializedSetup<cmds::BindRenderbuffer, 0>(true); 111 cmds::BindRenderbuffer cmd; 112 cmd.Init(GL_RENDERBUFFER, kNewClientId); 113 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 114 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 115 EXPECT_TRUE(GetRenderbuffer(kNewClientId) != NULL); 116} 117 118TEST_F(GLES2DecoderTest1, BindRenderbufferInvalidArgs0_0) { 119 EXPECT_CALL(*gl_, BindRenderbufferEXT(_, _)).Times(0); 120 SpecializedSetup<cmds::BindRenderbuffer, 0>(false); 121 cmds::BindRenderbuffer cmd; 122 cmd.Init(GL_FRAMEBUFFER, client_renderbuffer_id_); 123 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 124 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 125} 126 127TEST_F(GLES2DecoderTest1, BindTextureValidArgs) { 128 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceTextureId)); 129 SpecializedSetup<cmds::BindTexture, 0>(true); 130 cmds::BindTexture cmd; 131 cmd.Init(GL_TEXTURE_2D, client_texture_id_); 132 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 133 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 134} 135 136TEST_F(GLES2DecoderTest1, BindTextureValidArgsNewId) { 137 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kNewServiceId)); 138 EXPECT_CALL(*gl_, GenTextures(1, _)) 139 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 140 SpecializedSetup<cmds::BindTexture, 0>(true); 141 cmds::BindTexture cmd; 142 cmd.Init(GL_TEXTURE_2D, kNewClientId); 143 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 144 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 145 EXPECT_TRUE(GetTexture(kNewClientId) != NULL); 146} 147 148TEST_F(GLES2DecoderTest1, BindTextureInvalidArgs0_0) { 149 EXPECT_CALL(*gl_, BindTexture(_, _)).Times(0); 150 SpecializedSetup<cmds::BindTexture, 0>(false); 151 cmds::BindTexture cmd; 152 cmd.Init(GL_TEXTURE_1D, client_texture_id_); 153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 154 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 155} 156 157TEST_F(GLES2DecoderTest1, BindTextureInvalidArgs0_1) { 158 EXPECT_CALL(*gl_, BindTexture(_, _)).Times(0); 159 SpecializedSetup<cmds::BindTexture, 0>(false); 160 cmds::BindTexture cmd; 161 cmd.Init(GL_TEXTURE_3D, client_texture_id_); 162 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 163 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 164} 165 166TEST_F(GLES2DecoderTest1, BlendColorValidArgs) { 167 EXPECT_CALL(*gl_, BlendColor(1, 2, 3, 4)); 168 SpecializedSetup<cmds::BlendColor, 0>(true); 169 cmds::BlendColor cmd; 170 cmd.Init(1, 2, 3, 4); 171 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 172 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 173} 174 175TEST_F(GLES2DecoderTest1, BlendEquationValidArgs) { 176 EXPECT_CALL(*gl_, BlendEquation(GL_FUNC_SUBTRACT)); 177 SpecializedSetup<cmds::BlendEquation, 0>(true); 178 cmds::BlendEquation cmd; 179 cmd.Init(GL_FUNC_SUBTRACT); 180 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 181 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 182} 183 184TEST_F(GLES2DecoderTest1, BlendEquationInvalidArgs0_0) { 185 EXPECT_CALL(*gl_, BlendEquation(_)).Times(0); 186 SpecializedSetup<cmds::BlendEquation, 0>(false); 187 cmds::BlendEquation cmd; 188 cmd.Init(GL_MIN); 189 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 190 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 191} 192 193TEST_F(GLES2DecoderTest1, BlendEquationInvalidArgs0_1) { 194 EXPECT_CALL(*gl_, BlendEquation(_)).Times(0); 195 SpecializedSetup<cmds::BlendEquation, 0>(false); 196 cmds::BlendEquation cmd; 197 cmd.Init(GL_MAX); 198 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 199 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 200} 201 202TEST_F(GLES2DecoderTest1, BlendEquationSeparateValidArgs) { 203 EXPECT_CALL(*gl_, BlendEquationSeparate(GL_FUNC_SUBTRACT, GL_FUNC_ADD)); 204 SpecializedSetup<cmds::BlendEquationSeparate, 0>(true); 205 cmds::BlendEquationSeparate cmd; 206 cmd.Init(GL_FUNC_SUBTRACT, GL_FUNC_ADD); 207 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 208 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 209} 210 211TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_0) { 212 EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 213 SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 214 cmds::BlendEquationSeparate cmd; 215 cmd.Init(GL_MIN, GL_FUNC_ADD); 216 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 217 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 218} 219 220TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_1) { 221 EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 222 SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 223 cmds::BlendEquationSeparate cmd; 224 cmd.Init(GL_MAX, GL_FUNC_ADD); 225 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 226 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 227} 228 229TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_0) { 230 EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 231 SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 232 cmds::BlendEquationSeparate cmd; 233 cmd.Init(GL_FUNC_SUBTRACT, GL_MIN); 234 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 235 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 236} 237 238TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_1) { 239 EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 240 SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 241 cmds::BlendEquationSeparate cmd; 242 cmd.Init(GL_FUNC_SUBTRACT, GL_MAX); 243 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 244 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 245} 246 247TEST_F(GLES2DecoderTest1, BlendFuncValidArgs) { 248 EXPECT_CALL(*gl_, BlendFunc(GL_ZERO, GL_ZERO)); 249 SpecializedSetup<cmds::BlendFunc, 0>(true); 250 cmds::BlendFunc cmd; 251 cmd.Init(GL_ZERO, GL_ZERO); 252 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 253 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 254} 255 256TEST_F(GLES2DecoderTest1, BlendFuncSeparateValidArgs) { 257 EXPECT_CALL(*gl_, BlendFuncSeparate(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO)); 258 SpecializedSetup<cmds::BlendFuncSeparate, 0>(true); 259 cmds::BlendFuncSeparate cmd; 260 cmd.Init(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO); 261 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 262 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 263} 264// TODO(gman): BufferData 265 266// TODO(gman): BufferSubData 267 268 269TEST_F(GLES2DecoderTest1, CheckFramebufferStatusValidArgs) { 270 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)); 271 SpecializedSetup<cmds::CheckFramebufferStatus, 0>(true); 272 cmds::CheckFramebufferStatus cmd; 273 cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); 274 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 275 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 276} 277 278TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_0) { 279 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0); 280 SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false); 281 cmds::CheckFramebufferStatus cmd; 282 cmd.Init(GL_DRAW_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); 283 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 284 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 285} 286 287TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_1) { 288 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0); 289 SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false); 290 cmds::CheckFramebufferStatus cmd; 291 cmd.Init(GL_READ_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); 292 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 293 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 294} 295 296TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgsBadSharedMemoryId) { 297 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)).Times(0); 298 SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false); 299 cmds::CheckFramebufferStatus cmd; 300 cmd.Init(GL_FRAMEBUFFER, kInvalidSharedMemoryId, shared_memory_offset_); 301 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 302 cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, kInvalidSharedMemoryOffset); 303 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 304} 305 306TEST_F(GLES2DecoderTest1, ClearValidArgs) { 307 EXPECT_CALL(*gl_, Clear(1)); 308 SpecializedSetup<cmds::Clear, 0>(true); 309 cmds::Clear cmd; 310 cmd.Init(1); 311 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 312 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 313} 314 315TEST_F(GLES2DecoderTest1, ClearColorValidArgs) { 316 EXPECT_CALL(*gl_, ClearColor(1, 2, 3, 4)); 317 SpecializedSetup<cmds::ClearColor, 0>(true); 318 cmds::ClearColor cmd; 319 cmd.Init(1, 2, 3, 4); 320 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 321 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 322} 323 324TEST_F(GLES2DecoderTest1, ClearDepthfValidArgs) { 325 EXPECT_CALL(*gl_, ClearDepth(0.5f)); 326 SpecializedSetup<cmds::ClearDepthf, 0>(true); 327 cmds::ClearDepthf cmd; 328 cmd.Init(0.5f); 329 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 330 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 331} 332 333TEST_F(GLES2DecoderTest1, ClearStencilValidArgs) { 334 EXPECT_CALL(*gl_, ClearStencil(1)); 335 SpecializedSetup<cmds::ClearStencil, 0>(true); 336 cmds::ClearStencil cmd; 337 cmd.Init(1); 338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 339 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 340} 341 342TEST_F(GLES2DecoderTest1, ColorMaskValidArgs) { 343 SpecializedSetup<cmds::ColorMask, 0>(true); 344 cmds::ColorMask cmd; 345 cmd.Init(true, true, true, true); 346 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 347 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 348} 349// TODO(gman): CompileShader 350// TODO(gman): CompressedTexImage2D 351 352// TODO(gman): CompressedTexImage2DBucket 353// TODO(gman): CompressedTexSubImage2D 354 355// TODO(gman): CompressedTexSubImage2DBucket 356// TODO(gman): CopyTexImage2D 357 358TEST_F(GLES2DecoderTest1, CopyTexSubImage2DValidArgs) { 359 EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8)); 360 SpecializedSetup<cmds::CopyTexSubImage2D, 0>(true); 361 cmds::CopyTexSubImage2D cmd; 362 cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8); 363 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 364 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 365} 366 367TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs0_0) { 368 EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0); 369 SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false); 370 cmds::CopyTexSubImage2D cmd; 371 cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, 2, 3, 4, 5, 6, 7, 8); 372 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 373 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 374} 375 376TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs6_0) { 377 EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0); 378 SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false); 379 cmds::CopyTexSubImage2D cmd; 380 cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, -1, 8); 381 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 382 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 383} 384 385TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs7_0) { 386 EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0); 387 SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false); 388 cmds::CopyTexSubImage2D cmd; 389 cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, -1); 390 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 391 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 392} 393 394TEST_F(GLES2DecoderTest1, CreateProgramValidArgs) { 395 EXPECT_CALL(*gl_, CreateProgram()) 396 .WillOnce(Return(kNewServiceId)); 397 SpecializedSetup<cmds::CreateProgram, 0>(true); 398 cmds::CreateProgram cmd; 399 cmd.Init(kNewClientId); 400 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 401 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 402 EXPECT_TRUE(GetProgram(kNewClientId) != NULL); 403} 404 405TEST_F(GLES2DecoderTest1, CreateShaderValidArgs) { 406 EXPECT_CALL(*gl_, CreateShader(GL_VERTEX_SHADER)) 407 .WillOnce(Return(kNewServiceId)); 408 SpecializedSetup<cmds::CreateShader, 0>(true); 409 cmds::CreateShader cmd; 410 cmd.Init(GL_VERTEX_SHADER, kNewClientId); 411 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 412 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 413 EXPECT_TRUE(GetShader(kNewClientId) != NULL); 414} 415 416TEST_F(GLES2DecoderTest1, CreateShaderInvalidArgs0_0) { 417 EXPECT_CALL(*gl_, CreateShader(_)).Times(0); 418 SpecializedSetup<cmds::CreateShader, 0>(false); 419 cmds::CreateShader cmd; 420 cmd.Init(GL_GEOMETRY_SHADER, kNewClientId); 421 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 422 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 423} 424 425TEST_F(GLES2DecoderTest1, CullFaceValidArgs) { 426 EXPECT_CALL(*gl_, CullFace(GL_FRONT)); 427 SpecializedSetup<cmds::CullFace, 0>(true); 428 cmds::CullFace cmd; 429 cmd.Init(GL_FRONT); 430 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 431 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 432} 433 434TEST_F(GLES2DecoderTest1, DeleteBuffersValidArgs) { 435 EXPECT_CALL( 436 *gl_, 437 DeleteBuffersARB(1, Pointee(kServiceBufferId))) 438 .Times(1); 439 GetSharedMemoryAs<GLuint*>()[0] = client_buffer_id_; 440 SpecializedSetup<cmds::DeleteBuffers, 0>(true); 441 cmds::DeleteBuffers cmd; 442 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 443 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 444 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 445 EXPECT_TRUE( 446 GetBuffer(client_buffer_id_) == NULL); 447} 448 449TEST_F(GLES2DecoderTest1, DeleteBuffersInvalidArgs) { 450 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; 451 SpecializedSetup<cmds::DeleteBuffers, 0>(false); 452 cmds::DeleteBuffers cmd; 453 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 454 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 455} 456 457TEST_F(GLES2DecoderTest1, DeleteBuffersImmediateValidArgs) { 458 EXPECT_CALL( 459 *gl_, 460 DeleteBuffersARB(1, Pointee(kServiceBufferId))) 461 .Times(1); 462 cmds::DeleteBuffersImmediate& cmd = 463 *GetImmediateAs<cmds::DeleteBuffersImmediate>(); 464 SpecializedSetup<cmds::DeleteBuffersImmediate, 0>(true); 465 cmd.Init(1, &client_buffer_id_); 466 EXPECT_EQ(error::kNoError, 467 ExecuteImmediateCmd(cmd, sizeof(client_buffer_id_))); 468 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 469 EXPECT_TRUE( 470 GetBuffer(client_buffer_id_) == NULL); 471} 472 473TEST_F(GLES2DecoderTest1, DeleteBuffersImmediateInvalidArgs) { 474 cmds::DeleteBuffersImmediate& cmd = 475 *GetImmediateAs<cmds::DeleteBuffersImmediate>(); 476 SpecializedSetup<cmds::DeleteBuffersImmediate, 0>(false); 477 GLuint temp = kInvalidClientId; 478 cmd.Init(1, &temp); 479 EXPECT_EQ(error::kNoError, 480 ExecuteImmediateCmd(cmd, sizeof(temp))); 481} 482 483TEST_F(GLES2DecoderTest1, DeleteFramebuffersValidArgs) { 484 EXPECT_CALL( 485 *gl_, 486 DeleteFramebuffersEXT(1, Pointee(kServiceFramebufferId))) 487 .Times(1); 488 GetSharedMemoryAs<GLuint*>()[0] = client_framebuffer_id_; 489 SpecializedSetup<cmds::DeleteFramebuffers, 0>(true); 490 cmds::DeleteFramebuffers cmd; 491 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 492 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 493 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 494 EXPECT_TRUE( 495 GetFramebuffer(client_framebuffer_id_) == NULL); 496} 497 498TEST_F(GLES2DecoderTest1, DeleteFramebuffersInvalidArgs) { 499 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; 500 SpecializedSetup<cmds::DeleteFramebuffers, 0>(false); 501 cmds::DeleteFramebuffers cmd; 502 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 503 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 504} 505 506TEST_F(GLES2DecoderTest1, DeleteFramebuffersImmediateValidArgs) { 507 EXPECT_CALL( 508 *gl_, 509 DeleteFramebuffersEXT(1, Pointee(kServiceFramebufferId))) 510 .Times(1); 511 cmds::DeleteFramebuffersImmediate& cmd = 512 *GetImmediateAs<cmds::DeleteFramebuffersImmediate>(); 513 SpecializedSetup<cmds::DeleteFramebuffersImmediate, 0>(true); 514 cmd.Init(1, &client_framebuffer_id_); 515 EXPECT_EQ(error::kNoError, 516 ExecuteImmediateCmd(cmd, sizeof(client_framebuffer_id_))); 517 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 518 EXPECT_TRUE( 519 GetFramebuffer(client_framebuffer_id_) == NULL); 520} 521 522TEST_F(GLES2DecoderTest1, DeleteFramebuffersImmediateInvalidArgs) { 523 cmds::DeleteFramebuffersImmediate& cmd = 524 *GetImmediateAs<cmds::DeleteFramebuffersImmediate>(); 525 SpecializedSetup<cmds::DeleteFramebuffersImmediate, 0>(false); 526 GLuint temp = kInvalidClientId; 527 cmd.Init(1, &temp); 528 EXPECT_EQ(error::kNoError, 529 ExecuteImmediateCmd(cmd, sizeof(temp))); 530} 531 532TEST_F(GLES2DecoderTest1, DeleteProgramValidArgs) { 533 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)); 534 SpecializedSetup<cmds::DeleteProgram, 0>(true); 535 cmds::DeleteProgram cmd; 536 cmd.Init(client_program_id_); 537 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 538 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 539} 540 541TEST_F(GLES2DecoderTest1, DeleteRenderbuffersValidArgs) { 542 EXPECT_CALL( 543 *gl_, 544 DeleteRenderbuffersEXT(1, Pointee(kServiceRenderbufferId))) 545 .Times(1); 546 GetSharedMemoryAs<GLuint*>()[0] = client_renderbuffer_id_; 547 SpecializedSetup<cmds::DeleteRenderbuffers, 0>(true); 548 cmds::DeleteRenderbuffers cmd; 549 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 550 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 551 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 552 EXPECT_TRUE( 553 GetRenderbuffer(client_renderbuffer_id_) == NULL); 554} 555 556TEST_F(GLES2DecoderTest1, DeleteRenderbuffersInvalidArgs) { 557 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; 558 SpecializedSetup<cmds::DeleteRenderbuffers, 0>(false); 559 cmds::DeleteRenderbuffers cmd; 560 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 561 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 562} 563 564TEST_F(GLES2DecoderTest1, DeleteRenderbuffersImmediateValidArgs) { 565 EXPECT_CALL( 566 *gl_, 567 DeleteRenderbuffersEXT(1, Pointee(kServiceRenderbufferId))) 568 .Times(1); 569 cmds::DeleteRenderbuffersImmediate& cmd = 570 *GetImmediateAs<cmds::DeleteRenderbuffersImmediate>(); 571 SpecializedSetup<cmds::DeleteRenderbuffersImmediate, 0>(true); 572 cmd.Init(1, &client_renderbuffer_id_); 573 EXPECT_EQ(error::kNoError, 574 ExecuteImmediateCmd(cmd, sizeof(client_renderbuffer_id_))); 575 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 576 EXPECT_TRUE( 577 GetRenderbuffer(client_renderbuffer_id_) == NULL); 578} 579 580TEST_F(GLES2DecoderTest1, DeleteRenderbuffersImmediateInvalidArgs) { 581 cmds::DeleteRenderbuffersImmediate& cmd = 582 *GetImmediateAs<cmds::DeleteRenderbuffersImmediate>(); 583 SpecializedSetup<cmds::DeleteRenderbuffersImmediate, 0>(false); 584 GLuint temp = kInvalidClientId; 585 cmd.Init(1, &temp); 586 EXPECT_EQ(error::kNoError, 587 ExecuteImmediateCmd(cmd, sizeof(temp))); 588} 589 590TEST_F(GLES2DecoderTest1, DeleteShaderValidArgs) { 591 EXPECT_CALL(*gl_, DeleteShader(kServiceShaderId)); 592 SpecializedSetup<cmds::DeleteShader, 0>(true); 593 cmds::DeleteShader cmd; 594 cmd.Init(client_shader_id_); 595 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 596 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 597} 598 599TEST_F(GLES2DecoderTest1, DeleteTexturesValidArgs) { 600 EXPECT_CALL( 601 *gl_, 602 DeleteTextures(1, Pointee(kServiceTextureId))) 603 .Times(1); 604 GetSharedMemoryAs<GLuint*>()[0] = client_texture_id_; 605 SpecializedSetup<cmds::DeleteTextures, 0>(true); 606 cmds::DeleteTextures cmd; 607 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 608 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 609 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 610 EXPECT_TRUE( 611 GetTexture(client_texture_id_) == NULL); 612} 613 614TEST_F(GLES2DecoderTest1, DeleteTexturesInvalidArgs) { 615 GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; 616 SpecializedSetup<cmds::DeleteTextures, 0>(false); 617 cmds::DeleteTextures cmd; 618 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 619 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 620} 621 622TEST_F(GLES2DecoderTest1, DeleteTexturesImmediateValidArgs) { 623 EXPECT_CALL( 624 *gl_, 625 DeleteTextures(1, Pointee(kServiceTextureId))) 626 .Times(1); 627 cmds::DeleteTexturesImmediate& cmd = 628 *GetImmediateAs<cmds::DeleteTexturesImmediate>(); 629 SpecializedSetup<cmds::DeleteTexturesImmediate, 0>(true); 630 cmd.Init(1, &client_texture_id_); 631 EXPECT_EQ(error::kNoError, 632 ExecuteImmediateCmd(cmd, sizeof(client_texture_id_))); 633 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 634 EXPECT_TRUE( 635 GetTexture(client_texture_id_) == NULL); 636} 637 638TEST_F(GLES2DecoderTest1, DeleteTexturesImmediateInvalidArgs) { 639 cmds::DeleteTexturesImmediate& cmd = 640 *GetImmediateAs<cmds::DeleteTexturesImmediate>(); 641 SpecializedSetup<cmds::DeleteTexturesImmediate, 0>(false); 642 GLuint temp = kInvalidClientId; 643 cmd.Init(1, &temp); 644 EXPECT_EQ(error::kNoError, 645 ExecuteImmediateCmd(cmd, sizeof(temp))); 646} 647 648TEST_F(GLES2DecoderTest1, DepthFuncValidArgs) { 649 EXPECT_CALL(*gl_, DepthFunc(GL_NEVER)); 650 SpecializedSetup<cmds::DepthFunc, 0>(true); 651 cmds::DepthFunc cmd; 652 cmd.Init(GL_NEVER); 653 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 654 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 655} 656 657TEST_F(GLES2DecoderTest1, DepthMaskValidArgs) { 658 SpecializedSetup<cmds::DepthMask, 0>(true); 659 cmds::DepthMask cmd; 660 cmd.Init(true); 661 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 662 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 663} 664 665TEST_F(GLES2DecoderTest1, DepthRangefValidArgs) { 666 EXPECT_CALL(*gl_, DepthRange(1, 2)); 667 SpecializedSetup<cmds::DepthRangef, 0>(true); 668 cmds::DepthRangef cmd; 669 cmd.Init(1, 2); 670 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 671 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 672} 673 674TEST_F(GLES2DecoderTest1, DetachShaderValidArgs) { 675 EXPECT_CALL(*gl_, DetachShader(kServiceProgramId, kServiceShaderId)); 676 SpecializedSetup<cmds::DetachShader, 0>(true); 677 cmds::DetachShader cmd; 678 cmd.Init(client_program_id_, client_shader_id_); 679 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 680 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 681} 682 683TEST_F(GLES2DecoderTest1, DisableValidArgs) { 684 EXPECT_CALL(*gl_, Disable(GL_BLEND)); 685 SpecializedSetup<cmds::Disable, 0>(true); 686 cmds::Disable cmd; 687 cmd.Init(GL_BLEND); 688 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 689 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 690} 691 692TEST_F(GLES2DecoderTest1, DisableInvalidArgs0_0) { 693 EXPECT_CALL(*gl_, Disable(_)).Times(0); 694 SpecializedSetup<cmds::Disable, 0>(false); 695 cmds::Disable cmd; 696 cmd.Init(GL_CLIP_PLANE0); 697 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 698 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 699} 700 701TEST_F(GLES2DecoderTest1, DisableInvalidArgs0_1) { 702 EXPECT_CALL(*gl_, Disable(_)).Times(0); 703 SpecializedSetup<cmds::Disable, 0>(false); 704 cmds::Disable cmd; 705 cmd.Init(GL_POINT_SPRITE); 706 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 707 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 708} 709 710TEST_F(GLES2DecoderTest1, DisableVertexAttribArrayValidArgs) { 711 EXPECT_CALL(*gl_, DisableVertexAttribArray(1)); 712 SpecializedSetup<cmds::DisableVertexAttribArray, 0>(true); 713 cmds::DisableVertexAttribArray cmd; 714 cmd.Init(1); 715 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 716 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 717} 718// TODO(gman): DrawArrays 719 720// TODO(gman): DrawElements 721 722 723TEST_F(GLES2DecoderTest1, EnableValidArgs) { 724 EXPECT_CALL(*gl_, Enable(GL_BLEND)); 725 SpecializedSetup<cmds::Enable, 0>(true); 726 cmds::Enable cmd; 727 cmd.Init(GL_BLEND); 728 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 729 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 730} 731 732TEST_F(GLES2DecoderTest1, EnableInvalidArgs0_0) { 733 EXPECT_CALL(*gl_, Enable(_)).Times(0); 734 SpecializedSetup<cmds::Enable, 0>(false); 735 cmds::Enable cmd; 736 cmd.Init(GL_CLIP_PLANE0); 737 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 738 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 739} 740 741TEST_F(GLES2DecoderTest1, EnableInvalidArgs0_1) { 742 EXPECT_CALL(*gl_, Enable(_)).Times(0); 743 SpecializedSetup<cmds::Enable, 0>(false); 744 cmds::Enable cmd; 745 cmd.Init(GL_POINT_SPRITE); 746 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 747 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 748} 749 750TEST_F(GLES2DecoderTest1, EnableVertexAttribArrayValidArgs) { 751 EXPECT_CALL(*gl_, EnableVertexAttribArray(1)); 752 SpecializedSetup<cmds::EnableVertexAttribArray, 0>(true); 753 cmds::EnableVertexAttribArray cmd; 754 cmd.Init(1); 755 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 756 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 757} 758 759TEST_F(GLES2DecoderTest1, FinishValidArgs) { 760 EXPECT_CALL(*gl_, Finish()); 761 SpecializedSetup<cmds::Finish, 0>(true); 762 cmds::Finish cmd; 763 cmd.Init(); 764 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 765 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 766} 767 768TEST_F(GLES2DecoderTest1, FlushValidArgs) { 769 EXPECT_CALL(*gl_, Flush()); 770 SpecializedSetup<cmds::Flush, 0>(true); 771 cmds::Flush cmd; 772 cmd.Init(); 773 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 774 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 775} 776 777TEST_F(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) { 778 EXPECT_CALL( 779 *gl_, FramebufferRenderbufferEXT( 780 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 781 kServiceRenderbufferId)); 782 SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(true); 783 cmds::FramebufferRenderbuffer cmd; 784 cmd.Init( 785 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 786 client_renderbuffer_id_); 787 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 788 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 789} 790 791TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_0) { 792 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); 793 SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false); 794 cmds::FramebufferRenderbuffer cmd; 795 cmd.Init( 796 GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 797 client_renderbuffer_id_); 798 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 799 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 800} 801 802TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_1) { 803 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); 804 SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false); 805 cmds::FramebufferRenderbuffer cmd; 806 cmd.Init( 807 GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 808 client_renderbuffer_id_); 809 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 810 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 811} 812 813TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs2_0) { 814 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); 815 SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false); 816 cmds::FramebufferRenderbuffer cmd; 817 cmd.Init( 818 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER, 819 client_renderbuffer_id_); 820 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 821 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 822} 823 824TEST_F(GLES2DecoderTest1, FramebufferTexture2DValidArgs) { 825 EXPECT_CALL( 826 *gl_, FramebufferTexture2DEXT( 827 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 828 kServiceTextureId, 0)); 829 SpecializedSetup<cmds::FramebufferTexture2D, 0>(true); 830 cmds::FramebufferTexture2D cmd; 831 cmd.Init( 832 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_, 833 0); 834 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 835 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 836} 837 838TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_0) { 839 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 840 SpecializedSetup<cmds::FramebufferTexture2D, 0>(false); 841 cmds::FramebufferTexture2D cmd; 842 cmd.Init( 843 GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 844 client_texture_id_, 0); 845 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 846 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 847} 848 849TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_1) { 850 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 851 SpecializedSetup<cmds::FramebufferTexture2D, 0>(false); 852 cmds::FramebufferTexture2D cmd; 853 cmd.Init( 854 GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 855 client_texture_id_, 0); 856 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 857 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 858} 859 860TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs2_0) { 861 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 862 SpecializedSetup<cmds::FramebufferTexture2D, 0>(false); 863 cmds::FramebufferTexture2D cmd; 864 cmd.Init( 865 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_PROXY_TEXTURE_CUBE_MAP, 866 client_texture_id_, 0); 867 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 868 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 869} 870 871TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs4_0) { 872 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 873 SpecializedSetup<cmds::FramebufferTexture2D, 0>(false); 874 cmds::FramebufferTexture2D cmd; 875 cmd.Init( 876 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_, 877 1); 878 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 879 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 880} 881 882TEST_F(GLES2DecoderTest1, FrontFaceValidArgs) { 883 EXPECT_CALL(*gl_, FrontFace(GL_CW)); 884 SpecializedSetup<cmds::FrontFace, 0>(true); 885 cmds::FrontFace cmd; 886 cmd.Init(GL_CW); 887 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 888 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 889} 890 891TEST_F(GLES2DecoderTest1, GenBuffersValidArgs) { 892 EXPECT_CALL(*gl_, GenBuffersARB(1, _)) 893 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 894 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; 895 SpecializedSetup<cmds::GenBuffers, 0>(true); 896 cmds::GenBuffers cmd; 897 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 898 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 899 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 900 EXPECT_TRUE(GetBuffer(kNewClientId) != NULL); 901} 902 903TEST_F(GLES2DecoderTest1, GenBuffersInvalidArgs) { 904 EXPECT_CALL(*gl_, GenBuffersARB(_, _)).Times(0); 905 GetSharedMemoryAs<GLuint*>()[0] = client_buffer_id_; 906 SpecializedSetup<cmds::GenBuffers, 0>(false); 907 cmds::GenBuffers cmd; 908 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 909 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); 910} 911 912TEST_F(GLES2DecoderTest1, GenBuffersImmediateValidArgs) { 913 EXPECT_CALL(*gl_, GenBuffersARB(1, _)) 914 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 915 cmds::GenBuffersImmediate* cmd = GetImmediateAs<cmds::GenBuffersImmediate>(); 916 GLuint temp = kNewClientId; 917 SpecializedSetup<cmds::GenBuffersImmediate, 0>(true); 918 cmd->Init(1, &temp); 919 EXPECT_EQ(error::kNoError, 920 ExecuteImmediateCmd(*cmd, sizeof(temp))); 921 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 922 EXPECT_TRUE(GetBuffer(kNewClientId) != NULL); 923} 924 925TEST_F(GLES2DecoderTest1, GenBuffersImmediateInvalidArgs) { 926 EXPECT_CALL(*gl_, GenBuffersARB(_, _)).Times(0); 927 cmds::GenBuffersImmediate* cmd = GetImmediateAs<cmds::GenBuffersImmediate>(); 928 SpecializedSetup<cmds::GenBuffersImmediate, 0>(false); 929 cmd->Init(1, &client_buffer_id_); 930 EXPECT_EQ(error::kInvalidArguments, 931 ExecuteImmediateCmd(*cmd, sizeof(&client_buffer_id_))); 932} 933 934TEST_F(GLES2DecoderTest1, GenerateMipmapValidArgs) { 935 EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)); 936 SpecializedSetup<cmds::GenerateMipmap, 0>(true); 937 cmds::GenerateMipmap cmd; 938 cmd.Init(GL_TEXTURE_2D); 939 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 940 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 941} 942 943TEST_F(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_0) { 944 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0); 945 SpecializedSetup<cmds::GenerateMipmap, 0>(false); 946 cmds::GenerateMipmap cmd; 947 cmd.Init(GL_TEXTURE_1D); 948 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 949 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 950} 951 952TEST_F(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_1) { 953 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0); 954 SpecializedSetup<cmds::GenerateMipmap, 0>(false); 955 cmds::GenerateMipmap cmd; 956 cmd.Init(GL_TEXTURE_3D); 957 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 958 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 959} 960 961TEST_F(GLES2DecoderTest1, GenFramebuffersValidArgs) { 962 EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _)) 963 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 964 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; 965 SpecializedSetup<cmds::GenFramebuffers, 0>(true); 966 cmds::GenFramebuffers cmd; 967 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 968 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 969 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 970 EXPECT_TRUE(GetFramebuffer(kNewClientId) != NULL); 971} 972 973TEST_F(GLES2DecoderTest1, GenFramebuffersInvalidArgs) { 974 EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)).Times(0); 975 GetSharedMemoryAs<GLuint*>()[0] = client_framebuffer_id_; 976 SpecializedSetup<cmds::GenFramebuffers, 0>(false); 977 cmds::GenFramebuffers cmd; 978 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 979 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); 980} 981 982TEST_F(GLES2DecoderTest1, GenFramebuffersImmediateValidArgs) { 983 EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _)) 984 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 985 cmds::GenFramebuffersImmediate* cmd = 986 GetImmediateAs<cmds::GenFramebuffersImmediate>(); 987 GLuint temp = kNewClientId; 988 SpecializedSetup<cmds::GenFramebuffersImmediate, 0>(true); 989 cmd->Init(1, &temp); 990 EXPECT_EQ(error::kNoError, 991 ExecuteImmediateCmd(*cmd, sizeof(temp))); 992 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 993 EXPECT_TRUE(GetFramebuffer(kNewClientId) != NULL); 994} 995 996TEST_F(GLES2DecoderTest1, GenFramebuffersImmediateInvalidArgs) { 997 EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)).Times(0); 998 cmds::GenFramebuffersImmediate* cmd = 999 GetImmediateAs<cmds::GenFramebuffersImmediate>(); 1000 SpecializedSetup<cmds::GenFramebuffersImmediate, 0>(false); 1001 cmd->Init(1, &client_framebuffer_id_); 1002 EXPECT_EQ(error::kInvalidArguments, 1003 ExecuteImmediateCmd(*cmd, sizeof(&client_framebuffer_id_))); 1004} 1005 1006TEST_F(GLES2DecoderTest1, GenRenderbuffersValidArgs) { 1007 EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _)) 1008 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 1009 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; 1010 SpecializedSetup<cmds::GenRenderbuffers, 0>(true); 1011 cmds::GenRenderbuffers cmd; 1012 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1013 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1014 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1015 EXPECT_TRUE(GetRenderbuffer(kNewClientId) != NULL); 1016} 1017 1018TEST_F(GLES2DecoderTest1, GenRenderbuffersInvalidArgs) { 1019 EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)).Times(0); 1020 GetSharedMemoryAs<GLuint*>()[0] = client_renderbuffer_id_; 1021 SpecializedSetup<cmds::GenRenderbuffers, 0>(false); 1022 cmds::GenRenderbuffers cmd; 1023 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1024 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); 1025} 1026 1027TEST_F(GLES2DecoderTest1, GenRenderbuffersImmediateValidArgs) { 1028 EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _)) 1029 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 1030 cmds::GenRenderbuffersImmediate* cmd = 1031 GetImmediateAs<cmds::GenRenderbuffersImmediate>(); 1032 GLuint temp = kNewClientId; 1033 SpecializedSetup<cmds::GenRenderbuffersImmediate, 0>(true); 1034 cmd->Init(1, &temp); 1035 EXPECT_EQ(error::kNoError, 1036 ExecuteImmediateCmd(*cmd, sizeof(temp))); 1037 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1038 EXPECT_TRUE(GetRenderbuffer(kNewClientId) != NULL); 1039} 1040 1041TEST_F(GLES2DecoderTest1, GenRenderbuffersImmediateInvalidArgs) { 1042 EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)).Times(0); 1043 cmds::GenRenderbuffersImmediate* cmd = 1044 GetImmediateAs<cmds::GenRenderbuffersImmediate>(); 1045 SpecializedSetup<cmds::GenRenderbuffersImmediate, 0>(false); 1046 cmd->Init(1, &client_renderbuffer_id_); 1047 EXPECT_EQ(error::kInvalidArguments, 1048 ExecuteImmediateCmd(*cmd, sizeof(&client_renderbuffer_id_))); 1049} 1050 1051TEST_F(GLES2DecoderTest1, GenTexturesValidArgs) { 1052 EXPECT_CALL(*gl_, GenTextures(1, _)) 1053 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 1054 GetSharedMemoryAs<GLuint*>()[0] = kNewClientId; 1055 SpecializedSetup<cmds::GenTextures, 0>(true); 1056 cmds::GenTextures cmd; 1057 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1058 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1059 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1060 EXPECT_TRUE(GetTexture(kNewClientId) != NULL); 1061} 1062 1063TEST_F(GLES2DecoderTest1, GenTexturesInvalidArgs) { 1064 EXPECT_CALL(*gl_, GenTextures(_, _)).Times(0); 1065 GetSharedMemoryAs<GLuint*>()[0] = client_texture_id_; 1066 SpecializedSetup<cmds::GenTextures, 0>(false); 1067 cmds::GenTextures cmd; 1068 cmd.Init(1, shared_memory_id_, shared_memory_offset_); 1069 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); 1070} 1071 1072TEST_F(GLES2DecoderTest1, GenTexturesImmediateValidArgs) { 1073 EXPECT_CALL(*gl_, GenTextures(1, _)) 1074 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 1075 cmds::GenTexturesImmediate* cmd = 1076 GetImmediateAs<cmds::GenTexturesImmediate>(); 1077 GLuint temp = kNewClientId; 1078 SpecializedSetup<cmds::GenTexturesImmediate, 0>(true); 1079 cmd->Init(1, &temp); 1080 EXPECT_EQ(error::kNoError, 1081 ExecuteImmediateCmd(*cmd, sizeof(temp))); 1082 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1083 EXPECT_TRUE(GetTexture(kNewClientId) != NULL); 1084} 1085 1086TEST_F(GLES2DecoderTest1, GenTexturesImmediateInvalidArgs) { 1087 EXPECT_CALL(*gl_, GenTextures(_, _)).Times(0); 1088 cmds::GenTexturesImmediate* cmd = 1089 GetImmediateAs<cmds::GenTexturesImmediate>(); 1090 SpecializedSetup<cmds::GenTexturesImmediate, 0>(false); 1091 cmd->Init(1, &client_texture_id_); 1092 EXPECT_EQ(error::kInvalidArguments, 1093 ExecuteImmediateCmd(*cmd, sizeof(&client_texture_id_))); 1094} 1095// TODO(gman): GetActiveAttrib 1096 1097// TODO(gman): GetActiveUniform 1098 1099// TODO(gman): GetAttachedShaders 1100 1101// TODO(gman): GetAttribLocation 1102 1103// TODO(gman): GetAttribLocationBucket 1104 1105 1106TEST_F(GLES2DecoderTest1, GetBooleanvValidArgs) { 1107 EXPECT_CALL(*gl_, GetError()) 1108 .WillOnce(Return(GL_NO_ERROR)) 1109 .WillOnce(Return(GL_NO_ERROR)) 1110 .RetiresOnSaturation(); 1111 SpecializedSetup<cmds::GetBooleanv, 0>(true); 1112 typedef cmds::GetBooleanv::Result Result; 1113 Result* result = static_cast<Result*>(shared_memory_address_); 1114 EXPECT_CALL(*gl_, GetBooleanv(GL_ACTIVE_TEXTURE, result->GetData())); 1115 result->size = 0; 1116 cmds::GetBooleanv cmd; 1117 cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_); 1118 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1119 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1120 GL_ACTIVE_TEXTURE), 1121 result->GetNumResults()); 1122 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1123} 1124 1125TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs0_0) { 1126 EXPECT_CALL(*gl_, GetBooleanv(_, _)).Times(0); 1127 SpecializedSetup<cmds::GetBooleanv, 0>(false); 1128 cmds::GetBooleanv::Result* result = 1129 static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_); 1130 result->size = 0; 1131 cmds::GetBooleanv cmd; 1132 cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_); 1133 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1134 EXPECT_EQ(0u, result->size); 1135 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1136} 1137 1138TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs1_0) { 1139 EXPECT_CALL(*gl_, GetBooleanv(_, _)).Times(0); 1140 SpecializedSetup<cmds::GetBooleanv, 0>(false); 1141 cmds::GetBooleanv::Result* result = 1142 static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_); 1143 result->size = 0; 1144 cmds::GetBooleanv cmd; 1145 cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0); 1146 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1147 EXPECT_EQ(0u, result->size); 1148} 1149 1150TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs1_1) { 1151 EXPECT_CALL(*gl_, GetBooleanv(_, _)).Times(0); 1152 SpecializedSetup<cmds::GetBooleanv, 0>(false); 1153 cmds::GetBooleanv::Result* result = 1154 static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_); 1155 result->size = 0; 1156 cmds::GetBooleanv cmd; 1157 cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset); 1158 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1159 EXPECT_EQ(0u, result->size); 1160} 1161 1162TEST_F(GLES2DecoderTest1, GetBufferParameterivValidArgs) { 1163 SpecializedSetup<cmds::GetBufferParameteriv, 0>(true); 1164 typedef cmds::GetBufferParameteriv::Result Result; 1165 Result* result = static_cast<Result*>(shared_memory_address_); 1166 result->size = 0; 1167 cmds::GetBufferParameteriv cmd; 1168 cmd.Init( 1169 GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_, 1170 shared_memory_offset_); 1171 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1172 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1173 GL_BUFFER_SIZE), 1174 result->GetNumResults()); 1175 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1176} 1177 1178TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs0_0) { 1179 EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 1180 SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 1181 cmds::GetBufferParameteriv::Result* result = 1182 static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 1183 result->size = 0; 1184 cmds::GetBufferParameteriv cmd; 1185 cmd.Init( 1186 GL_RENDERBUFFER, GL_BUFFER_SIZE, shared_memory_id_, 1187 shared_memory_offset_); 1188 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1189 EXPECT_EQ(0u, result->size); 1190 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1191} 1192 1193TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs1_0) { 1194 EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 1195 SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 1196 cmds::GetBufferParameteriv::Result* result = 1197 static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 1198 result->size = 0; 1199 cmds::GetBufferParameteriv cmd; 1200 cmd.Init( 1201 GL_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, shared_memory_id_, 1202 shared_memory_offset_); 1203 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1204 EXPECT_EQ(0u, result->size); 1205 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1206} 1207 1208TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_0) { 1209 EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 1210 SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 1211 cmds::GetBufferParameteriv::Result* result = 1212 static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 1213 result->size = 0; 1214 cmds::GetBufferParameteriv cmd; 1215 cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, kInvalidSharedMemoryId, 0); 1216 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1217 EXPECT_EQ(0u, result->size); 1218} 1219 1220TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_1) { 1221 EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 1222 SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 1223 cmds::GetBufferParameteriv::Result* result = 1224 static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 1225 result->size = 0; 1226 cmds::GetBufferParameteriv cmd; 1227 cmd.Init( 1228 GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_, 1229 kInvalidSharedMemoryOffset); 1230 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1231 EXPECT_EQ(0u, result->size); 1232} 1233 1234TEST_F(GLES2DecoderTest1, GetErrorValidArgs) { 1235 EXPECT_CALL(*gl_, GetError()); 1236 SpecializedSetup<cmds::GetError, 0>(true); 1237 cmds::GetError cmd; 1238 cmd.Init(shared_memory_id_, shared_memory_offset_); 1239 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1240 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1241} 1242 1243TEST_F(GLES2DecoderTest1, GetErrorInvalidArgsBadSharedMemoryId) { 1244 EXPECT_CALL(*gl_, GetError()).Times(0); 1245 SpecializedSetup<cmds::GetError, 0>(false); 1246 cmds::GetError cmd; 1247 cmd.Init(kInvalidSharedMemoryId, shared_memory_offset_); 1248 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1249 cmd.Init(shared_memory_id_, kInvalidSharedMemoryOffset); 1250 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1251} 1252 1253TEST_F(GLES2DecoderTest1, GetFloatvValidArgs) { 1254 EXPECT_CALL(*gl_, GetError()) 1255 .WillOnce(Return(GL_NO_ERROR)) 1256 .WillOnce(Return(GL_NO_ERROR)) 1257 .RetiresOnSaturation(); 1258 SpecializedSetup<cmds::GetFloatv, 0>(true); 1259 typedef cmds::GetFloatv::Result Result; 1260 Result* result = static_cast<Result*>(shared_memory_address_); 1261 EXPECT_CALL(*gl_, GetFloatv(GL_ACTIVE_TEXTURE, result->GetData())); 1262 result->size = 0; 1263 cmds::GetFloatv cmd; 1264 cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_); 1265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1266 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1267 GL_ACTIVE_TEXTURE), 1268 result->GetNumResults()); 1269 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1270} 1271 1272TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs0_0) { 1273 EXPECT_CALL(*gl_, GetFloatv(_, _)).Times(0); 1274 SpecializedSetup<cmds::GetFloatv, 0>(false); 1275 cmds::GetFloatv::Result* result = 1276 static_cast<cmds::GetFloatv::Result*>(shared_memory_address_); 1277 result->size = 0; 1278 cmds::GetFloatv cmd; 1279 cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_); 1280 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1281 EXPECT_EQ(0u, result->size); 1282 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1283} 1284 1285TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs1_0) { 1286 EXPECT_CALL(*gl_, GetFloatv(_, _)).Times(0); 1287 SpecializedSetup<cmds::GetFloatv, 0>(false); 1288 cmds::GetFloatv::Result* result = 1289 static_cast<cmds::GetFloatv::Result*>(shared_memory_address_); 1290 result->size = 0; 1291 cmds::GetFloatv cmd; 1292 cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0); 1293 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1294 EXPECT_EQ(0u, result->size); 1295} 1296 1297TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs1_1) { 1298 EXPECT_CALL(*gl_, GetFloatv(_, _)).Times(0); 1299 SpecializedSetup<cmds::GetFloatv, 0>(false); 1300 cmds::GetFloatv::Result* result = 1301 static_cast<cmds::GetFloatv::Result*>(shared_memory_address_); 1302 result->size = 0; 1303 cmds::GetFloatv cmd; 1304 cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset); 1305 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1306 EXPECT_EQ(0u, result->size); 1307} 1308 1309TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivValidArgs) { 1310 EXPECT_CALL(*gl_, GetError()) 1311 .WillOnce(Return(GL_NO_ERROR)) 1312 .WillOnce(Return(GL_NO_ERROR)) 1313 .RetiresOnSaturation(); 1314 SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(true); 1315 typedef cmds::GetFramebufferAttachmentParameteriv::Result Result; 1316 Result* result = static_cast<Result*>(shared_memory_address_); 1317 EXPECT_CALL( 1318 *gl_, GetFramebufferAttachmentParameterivEXT( 1319 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1320 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, result->GetData())); 1321 result->size = 0; 1322 cmds::GetFramebufferAttachmentParameteriv cmd; 1323 cmd.Init( 1324 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1325 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, 1326 shared_memory_offset_); 1327 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1328 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1329 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE), 1330 result->GetNumResults()); 1331 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1332} 1333 1334TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_0) { 1335 EXPECT_CALL( 1336 *gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0); 1337 SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 1338 cmds::GetFramebufferAttachmentParameteriv::Result* result = 1339 static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 1340 shared_memory_address_); 1341 result->size = 0; 1342 cmds::GetFramebufferAttachmentParameteriv cmd; 1343 cmd.Init( 1344 GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1345 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, 1346 shared_memory_offset_); 1347 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1348 EXPECT_EQ(0u, result->size); 1349 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1350} 1351 1352TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_1) { 1353 EXPECT_CALL( 1354 *gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0); 1355 SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 1356 cmds::GetFramebufferAttachmentParameteriv::Result* result = 1357 static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 1358 shared_memory_address_); 1359 result->size = 0; 1360 cmds::GetFramebufferAttachmentParameteriv cmd; 1361 cmd.Init( 1362 GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1363 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, 1364 shared_memory_offset_); 1365 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1366 EXPECT_EQ(0u, result->size); 1367 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1368} 1369 1370TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_0) { 1371 EXPECT_CALL( 1372 *gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0); 1373 SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 1374 cmds::GetFramebufferAttachmentParameteriv::Result* result = 1375 static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 1376 shared_memory_address_); 1377 result->size = 0; 1378 cmds::GetFramebufferAttachmentParameteriv cmd; 1379 cmd.Init( 1380 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1381 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, kInvalidSharedMemoryId, 0); 1382 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1383 EXPECT_EQ(0u, result->size); 1384} 1385 1386TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_1) { 1387 EXPECT_CALL( 1388 *gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0); 1389 SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 1390 cmds::GetFramebufferAttachmentParameteriv::Result* result = 1391 static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 1392 shared_memory_address_); 1393 result->size = 0; 1394 cmds::GetFramebufferAttachmentParameteriv cmd; 1395 cmd.Init( 1396 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1397 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, 1398 kInvalidSharedMemoryOffset); 1399 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1400 EXPECT_EQ(0u, result->size); 1401} 1402 1403TEST_F(GLES2DecoderTest1, GetIntegervValidArgs) { 1404 EXPECT_CALL(*gl_, GetError()) 1405 .WillOnce(Return(GL_NO_ERROR)) 1406 .WillOnce(Return(GL_NO_ERROR)) 1407 .RetiresOnSaturation(); 1408 SpecializedSetup<cmds::GetIntegerv, 0>(true); 1409 typedef cmds::GetIntegerv::Result Result; 1410 Result* result = static_cast<Result*>(shared_memory_address_); 1411 EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, result->GetData())); 1412 result->size = 0; 1413 cmds::GetIntegerv cmd; 1414 cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_); 1415 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1416 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1417 GL_ACTIVE_TEXTURE), 1418 result->GetNumResults()); 1419 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1420} 1421 1422TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs0_0) { 1423 EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0); 1424 SpecializedSetup<cmds::GetIntegerv, 0>(false); 1425 cmds::GetIntegerv::Result* result = 1426 static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_); 1427 result->size = 0; 1428 cmds::GetIntegerv cmd; 1429 cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_); 1430 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1431 EXPECT_EQ(0u, result->size); 1432 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1433} 1434 1435TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs1_0) { 1436 EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0); 1437 SpecializedSetup<cmds::GetIntegerv, 0>(false); 1438 cmds::GetIntegerv::Result* result = 1439 static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_); 1440 result->size = 0; 1441 cmds::GetIntegerv cmd; 1442 cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0); 1443 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1444 EXPECT_EQ(0u, result->size); 1445} 1446 1447TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs1_1) { 1448 EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0); 1449 SpecializedSetup<cmds::GetIntegerv, 0>(false); 1450 cmds::GetIntegerv::Result* result = 1451 static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_); 1452 result->size = 0; 1453 cmds::GetIntegerv cmd; 1454 cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset); 1455 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1456 EXPECT_EQ(0u, result->size); 1457} 1458 1459TEST_F(GLES2DecoderTest1, GetProgramivValidArgs) { 1460 SpecializedSetup<cmds::GetProgramiv, 0>(true); 1461 typedef cmds::GetProgramiv::Result Result; 1462 Result* result = static_cast<Result*>(shared_memory_address_); 1463 result->size = 0; 1464 cmds::GetProgramiv cmd; 1465 cmd.Init( 1466 client_program_id_, GL_DELETE_STATUS, shared_memory_id_, 1467 shared_memory_offset_); 1468 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1469 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1470 GL_DELETE_STATUS), 1471 result->GetNumResults()); 1472 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1473} 1474 1475TEST_F(GLES2DecoderTest1, GetProgramivInvalidArgs2_0) { 1476 EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0); 1477 SpecializedSetup<cmds::GetProgramiv, 0>(false); 1478 cmds::GetProgramiv::Result* result = 1479 static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_); 1480 result->size = 0; 1481 cmds::GetProgramiv cmd; 1482 cmd.Init(client_program_id_, GL_DELETE_STATUS, kInvalidSharedMemoryId, 0); 1483 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1484 EXPECT_EQ(0u, result->size); 1485} 1486 1487TEST_F(GLES2DecoderTest1, GetProgramivInvalidArgs2_1) { 1488 EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0); 1489 SpecializedSetup<cmds::GetProgramiv, 0>(false); 1490 cmds::GetProgramiv::Result* result = 1491 static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_); 1492 result->size = 0; 1493 cmds::GetProgramiv cmd; 1494 cmd.Init( 1495 client_program_id_, GL_DELETE_STATUS, shared_memory_id_, 1496 kInvalidSharedMemoryOffset); 1497 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1498 EXPECT_EQ(0u, result->size); 1499} 1500 1501TEST_F(GLES2DecoderTest1, GetProgramInfoLogValidArgs) { 1502 const char* kInfo = "hello"; 1503 const uint32 kBucketId = 123; 1504 SpecializedSetup<cmds::GetProgramInfoLog, 0>(true); 1505 1506 cmds::GetProgramInfoLog cmd; 1507 cmd.Init(client_program_id_, kBucketId); 1508 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1509 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 1510 ASSERT_TRUE(bucket != NULL); 1511 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); 1512 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo, 1513 bucket->size())); 1514 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1515} 1516 1517TEST_F(GLES2DecoderTest1, GetProgramInfoLogInvalidArgs) { 1518 const uint32 kBucketId = 123; 1519 cmds::GetProgramInfoLog cmd; 1520 cmd.Init(kInvalidClientId, kBucketId); 1521 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1522 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1523} 1524 1525TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivValidArgs) { 1526 EXPECT_CALL(*gl_, GetError()) 1527 .WillOnce(Return(GL_NO_ERROR)) 1528 .WillOnce(Return(GL_NO_ERROR)) 1529 .RetiresOnSaturation(); 1530 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(true); 1531 typedef cmds::GetRenderbufferParameteriv::Result Result; 1532 Result* result = static_cast<Result*>(shared_memory_address_); 1533 EXPECT_CALL( 1534 *gl_, GetRenderbufferParameterivEXT( 1535 GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, result->GetData())); 1536 result->size = 0; 1537 cmds::GetRenderbufferParameteriv cmd; 1538 cmd.Init( 1539 GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_, 1540 shared_memory_offset_); 1541 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1542 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1543 GL_RENDERBUFFER_RED_SIZE), 1544 result->GetNumResults()); 1545 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1546} 1547 1548TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs0_0) { 1549 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0); 1550 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false); 1551 cmds::GetRenderbufferParameteriv::Result* result = 1552 static_cast<cmds::GetRenderbufferParameteriv::Result*>( 1553 shared_memory_address_); 1554 result->size = 0; 1555 cmds::GetRenderbufferParameteriv cmd; 1556 cmd.Init( 1557 GL_FRAMEBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_, 1558 shared_memory_offset_); 1559 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1560 EXPECT_EQ(0u, result->size); 1561 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1562} 1563 1564TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_0) { 1565 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0); 1566 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false); 1567 cmds::GetRenderbufferParameteriv::Result* result = 1568 static_cast<cmds::GetRenderbufferParameteriv::Result*>( 1569 shared_memory_address_); 1570 result->size = 0; 1571 cmds::GetRenderbufferParameteriv cmd; 1572 cmd.Init( 1573 GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, kInvalidSharedMemoryId, 0); 1574 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1575 EXPECT_EQ(0u, result->size); 1576} 1577 1578TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_1) { 1579 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0); 1580 SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false); 1581 cmds::GetRenderbufferParameteriv::Result* result = 1582 static_cast<cmds::GetRenderbufferParameteriv::Result*>( 1583 shared_memory_address_); 1584 result->size = 0; 1585 cmds::GetRenderbufferParameteriv cmd; 1586 cmd.Init( 1587 GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, shared_memory_id_, 1588 kInvalidSharedMemoryOffset); 1589 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1590 EXPECT_EQ(0u, result->size); 1591} 1592 1593TEST_F(GLES2DecoderTest1, GetShaderivValidArgs) { 1594 EXPECT_CALL(*gl_, GetError()) 1595 .WillOnce(Return(GL_NO_ERROR)) 1596 .WillOnce(Return(GL_NO_ERROR)) 1597 .RetiresOnSaturation(); 1598 SpecializedSetup<cmds::GetShaderiv, 0>(true); 1599 typedef cmds::GetShaderiv::Result Result; 1600 Result* result = static_cast<Result*>(shared_memory_address_); 1601 EXPECT_CALL( 1602 *gl_, GetShaderiv(kServiceShaderId, GL_SHADER_TYPE, result->GetData())); 1603 result->size = 0; 1604 cmds::GetShaderiv cmd; 1605 cmd.Init( 1606 client_shader_id_, GL_SHADER_TYPE, shared_memory_id_, 1607 shared_memory_offset_); 1608 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1609 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1610 GL_SHADER_TYPE), 1611 result->GetNumResults()); 1612 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1613} 1614 1615TEST_F(GLES2DecoderTest1, GetShaderivInvalidArgs2_0) { 1616 EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0); 1617 SpecializedSetup<cmds::GetShaderiv, 0>(false); 1618 cmds::GetShaderiv::Result* result = 1619 static_cast<cmds::GetShaderiv::Result*>(shared_memory_address_); 1620 result->size = 0; 1621 cmds::GetShaderiv cmd; 1622 cmd.Init(client_shader_id_, GL_SHADER_TYPE, kInvalidSharedMemoryId, 0); 1623 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1624 EXPECT_EQ(0u, result->size); 1625} 1626 1627TEST_F(GLES2DecoderTest1, GetShaderivInvalidArgs2_1) { 1628 EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0); 1629 SpecializedSetup<cmds::GetShaderiv, 0>(false); 1630 cmds::GetShaderiv::Result* result = 1631 static_cast<cmds::GetShaderiv::Result*>(shared_memory_address_); 1632 result->size = 0; 1633 cmds::GetShaderiv cmd; 1634 cmd.Init( 1635 client_shader_id_, GL_SHADER_TYPE, shared_memory_id_, 1636 kInvalidSharedMemoryOffset); 1637 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1638 EXPECT_EQ(0u, result->size); 1639} 1640// TODO(gman): GetShaderInfoLog 1641// TODO(gman): GetShaderPrecisionFormat 1642 1643// TODO(gman): GetShaderSource 1644// TODO(gman): GetString 1645 1646 1647TEST_F(GLES2DecoderTest1, GetTexParameterfvValidArgs) { 1648 EXPECT_CALL(*gl_, GetError()) 1649 .WillOnce(Return(GL_NO_ERROR)) 1650 .WillOnce(Return(GL_NO_ERROR)) 1651 .RetiresOnSaturation(); 1652 SpecializedSetup<cmds::GetTexParameterfv, 0>(true); 1653 typedef cmds::GetTexParameterfv::Result Result; 1654 Result* result = static_cast<Result*>(shared_memory_address_); 1655 EXPECT_CALL( 1656 *gl_, GetTexParameterfv( 1657 GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData())); 1658 result->size = 0; 1659 cmds::GetTexParameterfv cmd; 1660 cmd.Init( 1661 GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, 1662 shared_memory_offset_); 1663 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1664 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1665 GL_TEXTURE_MAG_FILTER), 1666 result->GetNumResults()); 1667 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1668} 1669 1670TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs0_0) { 1671 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 1672 SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 1673 cmds::GetTexParameterfv::Result* result = 1674 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 1675 result->size = 0; 1676 cmds::GetTexParameterfv cmd; 1677 cmd.Init( 1678 GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_, 1679 shared_memory_offset_); 1680 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1681 EXPECT_EQ(0u, result->size); 1682 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1683} 1684 1685TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs1_0) { 1686 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 1687 SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 1688 cmds::GetTexParameterfv::Result* result = 1689 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 1690 result->size = 0; 1691 cmds::GetTexParameterfv cmd; 1692 cmd.Init( 1693 GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_, 1694 shared_memory_offset_); 1695 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1696 EXPECT_EQ(0u, result->size); 1697 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1698} 1699 1700TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_0) { 1701 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 1702 SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 1703 cmds::GetTexParameterfv::Result* result = 1704 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 1705 result->size = 0; 1706 cmds::GetTexParameterfv cmd; 1707 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0); 1708 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1709 EXPECT_EQ(0u, result->size); 1710} 1711 1712TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_1) { 1713 EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 1714 SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 1715 cmds::GetTexParameterfv::Result* result = 1716 static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 1717 result->size = 0; 1718 cmds::GetTexParameterfv cmd; 1719 cmd.Init( 1720 GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, 1721 kInvalidSharedMemoryOffset); 1722 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1723 EXPECT_EQ(0u, result->size); 1724} 1725 1726TEST_F(GLES2DecoderTest1, GetTexParameterivValidArgs) { 1727 EXPECT_CALL(*gl_, GetError()) 1728 .WillOnce(Return(GL_NO_ERROR)) 1729 .WillOnce(Return(GL_NO_ERROR)) 1730 .RetiresOnSaturation(); 1731 SpecializedSetup<cmds::GetTexParameteriv, 0>(true); 1732 typedef cmds::GetTexParameteriv::Result Result; 1733 Result* result = static_cast<Result*>(shared_memory_address_); 1734 EXPECT_CALL( 1735 *gl_, GetTexParameteriv( 1736 GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData())); 1737 result->size = 0; 1738 cmds::GetTexParameteriv cmd; 1739 cmd.Init( 1740 GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, 1741 shared_memory_offset_); 1742 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1743 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1744 GL_TEXTURE_MAG_FILTER), 1745 result->GetNumResults()); 1746 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1747} 1748 1749TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs0_0) { 1750 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 1751 SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 1752 cmds::GetTexParameteriv::Result* result = 1753 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 1754 result->size = 0; 1755 cmds::GetTexParameteriv cmd; 1756 cmd.Init( 1757 GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, shared_memory_id_, 1758 shared_memory_offset_); 1759 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1760 EXPECT_EQ(0u, result->size); 1761 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1762} 1763 1764TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs1_0) { 1765 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 1766 SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 1767 cmds::GetTexParameteriv::Result* result = 1768 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 1769 result->size = 0; 1770 cmds::GetTexParameteriv cmd; 1771 cmd.Init( 1772 GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_, 1773 shared_memory_offset_); 1774 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1775 EXPECT_EQ(0u, result->size); 1776 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1777} 1778 1779TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_0) { 1780 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 1781 SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 1782 cmds::GetTexParameteriv::Result* result = 1783 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 1784 result->size = 0; 1785 cmds::GetTexParameteriv cmd; 1786 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0); 1787 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1788 EXPECT_EQ(0u, result->size); 1789} 1790 1791TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_1) { 1792 EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 1793 SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 1794 cmds::GetTexParameteriv::Result* result = 1795 static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 1796 result->size = 0; 1797 cmds::GetTexParameteriv cmd; 1798 cmd.Init( 1799 GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_, 1800 kInvalidSharedMemoryOffset); 1801 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1802 EXPECT_EQ(0u, result->size); 1803} 1804// TODO(gman): GetUniformfv 1805 1806// TODO(gman): GetUniformiv 1807 1808// TODO(gman): GetUniformLocation 1809 1810// TODO(gman): GetUniformLocationBucket 1811 1812 1813TEST_F(GLES2DecoderTest1, GetVertexAttribfvValidArgs) { 1814 SpecializedSetup<cmds::GetVertexAttribfv, 0>(true); 1815 typedef cmds::GetVertexAttribfv::Result Result; 1816 Result* result = static_cast<Result*>(shared_memory_address_); 1817 result->size = 0; 1818 cmds::GetVertexAttribfv cmd; 1819 cmd.Init( 1820 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, 1821 shared_memory_offset_); 1822 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1823 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1824 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED), 1825 result->GetNumResults()); 1826 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1827} 1828 1829TEST_F(GLES2DecoderTest1, GetVertexAttribfvInvalidArgs2_0) { 1830 EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0); 1831 SpecializedSetup<cmds::GetVertexAttribfv, 0>(false); 1832 cmds::GetVertexAttribfv::Result* result = 1833 static_cast<cmds::GetVertexAttribfv::Result*>(shared_memory_address_); 1834 result->size = 0; 1835 cmds::GetVertexAttribfv cmd; 1836 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0); 1837 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1838 EXPECT_EQ(0u, result->size); 1839} 1840 1841TEST_F(GLES2DecoderTest1, GetVertexAttribfvInvalidArgs2_1) { 1842 EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0); 1843 SpecializedSetup<cmds::GetVertexAttribfv, 0>(false); 1844 cmds::GetVertexAttribfv::Result* result = 1845 static_cast<cmds::GetVertexAttribfv::Result*>(shared_memory_address_); 1846 result->size = 0; 1847 cmds::GetVertexAttribfv cmd; 1848 cmd.Init( 1849 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, 1850 kInvalidSharedMemoryOffset); 1851 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1852 EXPECT_EQ(0u, result->size); 1853} 1854 1855TEST_F(GLES2DecoderTest1, GetVertexAttribivValidArgs) { 1856 SpecializedSetup<cmds::GetVertexAttribiv, 0>(true); 1857 typedef cmds::GetVertexAttribiv::Result Result; 1858 Result* result = static_cast<Result*>(shared_memory_address_); 1859 result->size = 0; 1860 cmds::GetVertexAttribiv cmd; 1861 cmd.Init( 1862 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, 1863 shared_memory_offset_); 1864 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1865 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 1866 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED), 1867 result->GetNumResults()); 1868 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1869} 1870 1871TEST_F(GLES2DecoderTest1, GetVertexAttribivInvalidArgs2_0) { 1872 EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0); 1873 SpecializedSetup<cmds::GetVertexAttribiv, 0>(false); 1874 cmds::GetVertexAttribiv::Result* result = 1875 static_cast<cmds::GetVertexAttribiv::Result*>(shared_memory_address_); 1876 result->size = 0; 1877 cmds::GetVertexAttribiv cmd; 1878 cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0); 1879 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1880 EXPECT_EQ(0u, result->size); 1881} 1882 1883TEST_F(GLES2DecoderTest1, GetVertexAttribivInvalidArgs2_1) { 1884 EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0); 1885 SpecializedSetup<cmds::GetVertexAttribiv, 0>(false); 1886 cmds::GetVertexAttribiv::Result* result = 1887 static_cast<cmds::GetVertexAttribiv::Result*>(shared_memory_address_); 1888 result->size = 0; 1889 cmds::GetVertexAttribiv cmd; 1890 cmd.Init( 1891 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_, 1892 kInvalidSharedMemoryOffset); 1893 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1894 EXPECT_EQ(0u, result->size); 1895} 1896// TODO(gman): GetVertexAttribPointerv 1897 1898 1899TEST_F(GLES2DecoderTest1, HintValidArgs) { 1900 EXPECT_CALL(*gl_, Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST)); 1901 SpecializedSetup<cmds::Hint, 0>(true); 1902 cmds::Hint cmd; 1903 cmd.Init(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); 1904 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1905 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1906} 1907 1908TEST_F(GLES2DecoderTest1, HintInvalidArgs0_0) { 1909 EXPECT_CALL(*gl_, Hint(_, _)).Times(0); 1910 SpecializedSetup<cmds::Hint, 0>(false); 1911 cmds::Hint cmd; 1912 cmd.Init(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); 1913 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1914 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1915} 1916 1917TEST_F(GLES2DecoderTest1, IsBufferValidArgs) { 1918 SpecializedSetup<cmds::IsBuffer, 0>(true); 1919 cmds::IsBuffer cmd; 1920 cmd.Init(client_buffer_id_, shared_memory_id_, shared_memory_offset_); 1921 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1922 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1923} 1924 1925TEST_F(GLES2DecoderTest1, IsBufferInvalidArgsBadSharedMemoryId) { 1926 SpecializedSetup<cmds::IsBuffer, 0>(false); 1927 cmds::IsBuffer cmd; 1928 cmd.Init(client_buffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); 1929 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1930 cmd.Init(client_buffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 1931 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1932} 1933 1934TEST_F(GLES2DecoderTest1, IsEnabledValidArgs) { 1935 SpecializedSetup<cmds::IsEnabled, 0>(true); 1936 cmds::IsEnabled cmd; 1937 cmd.Init(GL_BLEND, shared_memory_id_, shared_memory_offset_); 1938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1939 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1940} 1941 1942TEST_F(GLES2DecoderTest1, IsEnabledInvalidArgs0_0) { 1943 EXPECT_CALL(*gl_, IsEnabled(_)).Times(0); 1944 SpecializedSetup<cmds::IsEnabled, 0>(false); 1945 cmds::IsEnabled cmd; 1946 cmd.Init(GL_CLIP_PLANE0, shared_memory_id_, shared_memory_offset_); 1947 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1948 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1949} 1950 1951TEST_F(GLES2DecoderTest1, IsEnabledInvalidArgs0_1) { 1952 EXPECT_CALL(*gl_, IsEnabled(_)).Times(0); 1953 SpecializedSetup<cmds::IsEnabled, 0>(false); 1954 cmds::IsEnabled cmd; 1955 cmd.Init(GL_POINT_SPRITE, shared_memory_id_, shared_memory_offset_); 1956 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1957 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1958} 1959 1960TEST_F(GLES2DecoderTest1, IsEnabledInvalidArgsBadSharedMemoryId) { 1961 SpecializedSetup<cmds::IsEnabled, 0>(false); 1962 cmds::IsEnabled cmd; 1963 cmd.Init(GL_BLEND, kInvalidSharedMemoryId, shared_memory_offset_); 1964 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1965 cmd.Init(GL_BLEND, shared_memory_id_, kInvalidSharedMemoryOffset); 1966 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1967} 1968 1969TEST_F(GLES2DecoderTest1, IsFramebufferValidArgs) { 1970 SpecializedSetup<cmds::IsFramebuffer, 0>(true); 1971 cmds::IsFramebuffer cmd; 1972 cmd.Init(client_framebuffer_id_, shared_memory_id_, shared_memory_offset_); 1973 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1974 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1975} 1976 1977TEST_F(GLES2DecoderTest1, IsFramebufferInvalidArgsBadSharedMemoryId) { 1978 SpecializedSetup<cmds::IsFramebuffer, 0>(false); 1979 cmds::IsFramebuffer cmd; 1980 cmd.Init( 1981 client_framebuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); 1982 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1983 cmd.Init( 1984 client_framebuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 1985 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1986} 1987 1988TEST_F(GLES2DecoderTest1, IsProgramValidArgs) { 1989 SpecializedSetup<cmds::IsProgram, 0>(true); 1990 cmds::IsProgram cmd; 1991 cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_); 1992 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1993 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1994} 1995 1996TEST_F(GLES2DecoderTest1, IsProgramInvalidArgsBadSharedMemoryId) { 1997 SpecializedSetup<cmds::IsProgram, 0>(false); 1998 cmds::IsProgram cmd; 1999 cmd.Init(client_program_id_, kInvalidSharedMemoryId, shared_memory_offset_); 2000 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 2001 cmd.Init(client_program_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 2002 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 2003} 2004#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_ 2005 2006