14ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is auto-generated from 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// gpu/command_buffer/build_gles2_cmd_buffer.py 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// It's formatted by clang-format using chromium coding style: 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// clang-format -i -style=chromium filename 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DO NOT EDIT! 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// It is included by gles2_cmd_decoder_unittest_1.cc 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_ 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_ 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): ActiveTexture 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, AttachShaderValidArgs) { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, AttachShader(kServiceProgramId, kServiceShaderId)); 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::AttachShader, 0>(true); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::AttachShader cmd; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(client_program_id_, client_shader_id_); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): BindAttribLocationBucket 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindBufferValidArgs) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kServiceBufferId)); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindBuffer, 0>(true); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindBuffer cmd; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ARRAY_BUFFER, client_buffer_id_); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindBufferValidArgsNewId) { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kNewServiceId)); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenBuffersARB(1, _)) 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindBuffer, 0>(true); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindBuffer cmd; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ARRAY_BUFFER, kNewClientId); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetBuffer(kNewClientId) != NULL); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindBufferInvalidArgs0_0) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindBuffer(_, _)).Times(0); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindBuffer, 0>(false); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindBuffer cmd; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, client_buffer_id_); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindFramebufferValidArgs) { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kServiceFramebufferId)); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindFramebuffer, 0>(true); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindFramebuffer cmd; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, client_framebuffer_id_); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 66010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindFramebufferValidArgsNewId) { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kNewServiceId)); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _)) 69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindFramebuffer, 0>(true); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindFramebuffer cmd; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, kNewClientId); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetFramebuffer(kNewClientId) != NULL); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindFramebufferInvalidArgs0_0) { 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindFramebufferEXT(_, _)).Times(0); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindFramebuffer, 0>(false); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindFramebuffer cmd; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_DRAW_FRAMEBUFFER, client_framebuffer_id_); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindFramebufferInvalidArgs0_1) { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindFramebufferEXT(_, _)).Times(0); 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindFramebuffer, 0>(false); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindFramebuffer cmd; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_READ_FRAMEBUFFER, client_framebuffer_id_); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindRenderbufferValidArgs) { 97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) BindRenderbufferEXT(GL_RENDERBUFFER, kServiceRenderbufferId)); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindRenderbuffer, 0>(true); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindRenderbuffer cmd; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, client_renderbuffer_id_); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindRenderbufferValidArgsNewId) { 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindRenderbufferEXT(GL_RENDERBUFFER, kNewServiceId)); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _)) 109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindRenderbuffer, 0>(true); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindRenderbuffer cmd; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, kNewClientId); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetRenderbuffer(kNewClientId) != NULL); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 118010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindRenderbufferInvalidArgs0_0) { 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindRenderbufferEXT(_, _)).Times(0); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindRenderbuffer, 0>(false); 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindRenderbuffer cmd; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, client_renderbuffer_id_); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 127010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindTextureValidArgs) { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceTextureId)); 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindTexture, 0>(true); 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindTexture cmd; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, client_texture_id_); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 136010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindTextureValidArgsNewId) { 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kNewServiceId)); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenTextures(1, _)) 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindTexture, 0>(true); 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindTexture cmd; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, kNewClientId); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetTexture(kNewClientId) != NULL); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 148010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindTextureInvalidArgs0_0) { 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindTexture(_, _)).Times(0); 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindTexture, 0>(false); 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindTexture cmd; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_1D, client_texture_id_); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 157010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BindTextureInvalidArgs0_1) { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BindTexture(_, _)).Times(0); 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BindTexture, 0>(false); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BindTexture cmd; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_3D, client_texture_id_); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 166010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendColorValidArgs) { 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendColor(1, 2, 3, 4)); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendColor, 0>(true); 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendColor cmd; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, 2, 3, 4); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationValidArgs) { 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*gl_, BlendEquation(GL_FUNC_SUBTRACT)); 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquation, 0>(true); 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquation cmd; 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmd.Init(GL_FUNC_SUBTRACT); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 184010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationInvalidArgs0_0) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendEquation(_)).Times(0); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquation, 0>(false); 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquation cmd; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_MIN); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 193010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationInvalidArgs0_1) { 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendEquation(_)).Times(0); 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquation, 0>(false); 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquation cmd; 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_MAX); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 202010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationSeparateValidArgs) { 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*gl_, BlendEquationSeparate(GL_FUNC_SUBTRACT, GL_FUNC_ADD)); 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquationSeparate, 0>(true); 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquationSeparate cmd; 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmd.Init(GL_FUNC_SUBTRACT, GL_FUNC_ADD); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 211010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_0) { 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquationSeparate cmd; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_MIN, GL_FUNC_ADD); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 220010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_1) { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquationSeparate cmd; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_MAX, GL_FUNC_ADD); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 229010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_0) { 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquationSeparate cmd; 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmd.Init(GL_FUNC_SUBTRACT, GL_MIN); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 238010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_1) { 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0); 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendEquationSeparate, 0>(false); 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendEquationSeparate cmd; 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmd.Init(GL_FUNC_SUBTRACT, GL_MAX); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 247010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendFuncValidArgs) { 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendFunc(GL_ZERO, GL_ZERO)); 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendFunc, 0>(true); 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendFunc cmd; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ZERO, GL_ZERO); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 256010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, BlendFuncSeparateValidArgs) { 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, BlendFuncSeparate(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO)); 2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::BlendFuncSeparate, 0>(true); 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::BlendFuncSeparate cmd; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): BufferData 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): BufferSubData 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 268010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CheckFramebufferStatusValidArgs) { 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)); 2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CheckFramebufferStatus, 0>(true); 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CheckFramebufferStatus cmd; 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 277010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_0) { 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0); 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false); 2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CheckFramebufferStatus cmd; 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_DRAW_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 286010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_1) { 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0); 2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false); 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CheckFramebufferStatus cmd; 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_READ_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgsBadSharedMemoryId) { 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)).Times(0); 2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CheckFramebufferStatus, 0>(false); 2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CheckFramebufferStatus cmd; 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, kInvalidSharedMemoryId, shared_memory_offset_); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, kInvalidSharedMemoryOffset); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, ClearValidArgs) { 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*gl_, Clear(1)); 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Clear, 0>(true); 3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Clear cmd; 3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmd.Init(1); 3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 314010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, ClearColorValidArgs) { 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, ClearColor(1, 2, 3, 4)); 3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::ClearColor, 0>(true); 3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::ClearColor cmd; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, 2, 3, 4); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 323010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, ClearDepthfValidArgs) { 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*gl_, ClearDepth(0.5f)); 3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::ClearDepthf, 0>(true); 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::ClearDepthf cmd; 3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmd.Init(0.5f); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 332010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, ClearStencilValidArgs) { 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, ClearStencil(1)); 3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::ClearStencil, 0>(true); 3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::ClearStencil cmd; 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 341010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, ColorMaskValidArgs) { 3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::ColorMask, 0>(true); 3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::ColorMask cmd; 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(true, true, true, true); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): CompileShader 349f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// TODO(gman): CompressedTexImage2DBucket 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): CompressedTexImage2D 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 352f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// TODO(gman): CompressedTexSubImage2DBucket 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): CompressedTexSubImage2D 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): CopyTexImage2D 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 357010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CopyTexSubImage2DValidArgs) { 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8)); 3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CopyTexSubImage2D, 0>(true); 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CopyTexSubImage2D cmd; 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 366010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs0_0) { 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0); 3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false); 3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CopyTexSubImage2D cmd; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, 2, 3, 4, 5, 6, 7, 8); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs6_0) { 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0); 3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false); 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CopyTexSubImage2D cmd; 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, -1, 8); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 384010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs7_0) { 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0); 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CopyTexSubImage2D, 0>(false); 3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CopyTexSubImage2D cmd; 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, -1); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 393010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CreateProgramValidArgs) { 394a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, CreateProgram()).WillOnce(Return(kNewServiceId)); 3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CreateProgram, 0>(true); 3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CreateProgram cmd; 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(kNewClientId); 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetProgram(kNewClientId) != NULL); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 403010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CreateShaderValidArgs) { 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CreateShader(GL_VERTEX_SHADER)) 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(kNewServiceId)); 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CreateShader, 0>(true); 4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CreateShader cmd; 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_VERTEX_SHADER, kNewClientId); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetShader(kNewClientId) != NULL); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 414010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CreateShaderInvalidArgs0_0) { 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CreateShader(_)).Times(0); 4162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CreateShader, 0>(false); 4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CreateShader cmd; 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_GEOMETRY_SHADER, kNewClientId); 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 423010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, CullFaceValidArgs) { 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, CullFace(GL_FRONT)); 4252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::CullFace, 0>(true); 4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::CullFace cmd; 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FRONT); 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 432010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteBuffersImmediateValidArgs) { 433a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, DeleteBuffersARB(1, Pointee(kServiceBufferId))).Times(1); 4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteBuffersImmediate& cmd = 4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteBuffersImmediate>(); 4362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteBuffersImmediate, 0>(true); 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &client_buffer_id_); 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(cmd, sizeof(client_buffer_id_))); 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 441a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(GetBuffer(client_buffer_id_) == NULL); 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 444010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteBuffersImmediateInvalidArgs) { 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteBuffersImmediate& cmd = 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteBuffersImmediate>(); 4472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteBuffersImmediate, 0>(false); 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kInvalidClientId; 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &temp); 450a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 453010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteFramebuffersImmediateValidArgs) { 454a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, Pointee(kServiceFramebufferId))) 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .Times(1); 4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteFramebuffersImmediate& cmd = 4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteFramebuffersImmediate>(); 4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteFramebuffersImmediate, 0>(true); 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &client_framebuffer_id_); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(cmd, sizeof(client_framebuffer_id_))); 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(GetFramebuffer(client_framebuffer_id_) == NULL); 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 466010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteFramebuffersImmediateInvalidArgs) { 4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteFramebuffersImmediate& cmd = 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteFramebuffersImmediate>(); 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteFramebuffersImmediate, 0>(false); 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kInvalidClientId; 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &temp); 472a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteProgramValidArgs) { 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)); 4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteProgram, 0>(true); 4782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteProgram cmd; 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(client_program_id_); 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 484010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteRenderbuffersImmediateValidArgs) { 485a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, Pointee(kServiceRenderbufferId))) 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .Times(1); 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteRenderbuffersImmediate& cmd = 4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteRenderbuffersImmediate>(); 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteRenderbuffersImmediate, 0>(true); 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &client_renderbuffer_id_); 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(cmd, sizeof(client_renderbuffer_id_))); 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 494a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(GetRenderbuffer(client_renderbuffer_id_) == NULL); 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 497010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteRenderbuffersImmediateInvalidArgs) { 4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteRenderbuffersImmediate& cmd = 4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteRenderbuffersImmediate>(); 5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteRenderbuffersImmediate, 0>(false); 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kInvalidClientId; 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &temp); 503a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 506010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteShaderValidArgs) { 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, DeleteShader(kServiceShaderId)); 5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteShader, 0>(true); 5092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteShader cmd; 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(client_shader_id_); 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteTexturesImmediateValidArgs) { 516a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(kServiceTextureId))).Times(1); 5172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteTexturesImmediate& cmd = 5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteTexturesImmediate>(); 5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteTexturesImmediate, 0>(true); 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &client_texture_id_); 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(cmd, sizeof(client_texture_id_))); 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(GetTexture(client_texture_id_) == NULL); 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 527010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DeleteTexturesImmediateInvalidArgs) { 5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DeleteTexturesImmediate& cmd = 5292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *GetImmediateAs<cmds::DeleteTexturesImmediate>(); 5302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DeleteTexturesImmediate, 0>(false); 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kInvalidClientId; 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, &temp); 533a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 536010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DepthFuncValidArgs) { 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, DepthFunc(GL_NEVER)); 5382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DepthFunc, 0>(true); 5392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DepthFunc cmd; 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_NEVER); 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DepthMaskValidArgs) { 5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DepthMask, 0>(true); 5472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DepthMask cmd; 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(true); 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 553010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DepthRangefValidArgs) { 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, DepthRange(1, 2)); 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DepthRangef, 0>(true); 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DepthRangef cmd; 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, 2); 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 562010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DetachShaderValidArgs) { 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, DetachShader(kServiceProgramId, kServiceShaderId)); 5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DetachShader, 0>(true); 5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DetachShader cmd; 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(client_program_id_, client_shader_id_); 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 571010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DisableValidArgs) { 572010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExpectationsForEnableDisable(GL_BLEND, false); 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Disable, 0>(true); 5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Disable cmd; 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_BLEND); 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 580010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DisableInvalidArgs0_0) { 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, Disable(_)).Times(0); 5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Disable, 0>(false); 5832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Disable cmd; 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_CLIP_PLANE0); 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 589010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DisableInvalidArgs0_1) { 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, Disable(_)).Times(0); 5912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Disable, 0>(false); 5922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Disable cmd; 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_POINT_SPRITE); 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 598010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, DisableVertexAttribArrayValidArgs) { 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, DisableVertexAttribArray(1)); 6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::DisableVertexAttribArray, 0>(true); 6012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::DisableVertexAttribArray cmd; 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1); 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): DrawArrays 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): DrawElements 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 610010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, EnableValidArgs) { 611010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExpectationsForEnableDisable(GL_BLEND, true); 6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Enable, 0>(true); 6132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Enable cmd; 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_BLEND); 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 619010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, EnableInvalidArgs0_0) { 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, Enable(_)).Times(0); 6212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Enable, 0>(false); 6222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Enable cmd; 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_CLIP_PLANE0); 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 628010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, EnableInvalidArgs0_1) { 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, Enable(_)).Times(0); 6302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Enable, 0>(false); 6312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Enable cmd; 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_POINT_SPRITE); 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 637010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, EnableVertexAttribArrayValidArgs) { 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, EnableVertexAttribArray(1)); 6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::EnableVertexAttribArray, 0>(true); 6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::EnableVertexAttribArray cmd; 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1); 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 646010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FinishValidArgs) { 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, Finish()); 6482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Finish, 0>(true); 6492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Finish cmd; 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(); 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FlushValidArgs) { 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, Flush()); 6572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::Flush, 0>(true); 6582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::Flush cmd; 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(); 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 664010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) { 665a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, 666a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) FramebufferRenderbufferEXT(GL_FRAMEBUFFER, 667a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 668a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_RENDERBUFFER, 669a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kServiceRenderbufferId)); 6702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(true); 6712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferRenderbuffer cmd; 672a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, 673a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 674a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_RENDERBUFFER, 675a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) client_renderbuffer_id_); 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 680010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_0) { 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); 6822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false); 6832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferRenderbuffer cmd; 684a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_DRAW_FRAMEBUFFER, 685a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 686a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_RENDERBUFFER, 687a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) client_renderbuffer_id_); 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 692010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_1) { 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); 6942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false); 6952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferRenderbuffer cmd; 696a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_READ_FRAMEBUFFER, 697a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 698a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_RENDERBUFFER, 699a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) client_renderbuffer_id_); 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 704010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs2_0) { 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); 7062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferRenderbuffer, 0>(false); 7072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferRenderbuffer cmd; 708a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, 709a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 710a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER, 711a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) client_renderbuffer_id_); 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 716010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferTexture2DValidArgs) { 717a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, 718a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) FramebufferTexture2DEXT(GL_FRAMEBUFFER, 719a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 720a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_2D, 721a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kServiceTextureId, 722a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 0)); 7232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferTexture2D, 0>(true); 7242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferTexture2D cmd; 725cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init( 726cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_); 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 731010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_0) { 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 7332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferTexture2D, 0>(false); 7342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferTexture2D cmd; 735a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_DRAW_FRAMEBUFFER, 736a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 737a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_2D, 738cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) client_texture_id_); 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 743010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_1) { 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 7452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferTexture2D, 0>(false); 7462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferTexture2D cmd; 747a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_READ_FRAMEBUFFER, 748a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 749a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_2D, 750cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) client_texture_id_); 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs2_0) { 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 7572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FramebufferTexture2D, 0>(false); 7582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FramebufferTexture2D cmd; 759a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, 760a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 761a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_PROXY_TEXTURE_CUBE_MAP, 762cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) client_texture_id_); 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 767010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, FrontFaceValidArgs) { 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, FrontFace(GL_CW)); 7692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::FrontFace, 0>(true); 7702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::FrontFace cmd; 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_CW); 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 776010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenBuffersImmediateValidArgs) { 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenBuffersARB(1, _)) 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 7792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenBuffersImmediate* cmd = GetImmediateAs<cmds::GenBuffersImmediate>(); 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kNewClientId; 7812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenBuffersImmediate, 0>(true); 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &temp); 783a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp))); 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 7852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetBuffer(kNewClientId) != NULL); 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 788010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenBuffersImmediateInvalidArgs) { 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenBuffersARB(_, _)).Times(0); 7902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenBuffersImmediate* cmd = GetImmediateAs<cmds::GenBuffersImmediate>(); 7912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenBuffersImmediate, 0>(false); 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &client_buffer_id_); 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kInvalidArguments, 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(*cmd, sizeof(&client_buffer_id_))); 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 797010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenerateMipmapValidArgs) { 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)); 7992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenerateMipmap, 0>(true); 8002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenerateMipmap cmd; 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D); 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 806010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_0) { 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0); 8082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenerateMipmap, 0>(false); 8092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenerateMipmap cmd; 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_1D); 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_1) { 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0); 8172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenerateMipmap, 0>(false); 8182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenerateMipmap cmd; 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_3D); 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 824010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenFramebuffersImmediateValidArgs) { 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _)) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 8272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenFramebuffersImmediate* cmd = 8282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetImmediateAs<cmds::GenFramebuffersImmediate>(); 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kNewClientId; 8302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenFramebuffersImmediate, 0>(true); 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &temp); 832a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp))); 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetFramebuffer(kNewClientId) != NULL); 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 837010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenFramebuffersImmediateInvalidArgs) { 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)).Times(0); 8392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenFramebuffersImmediate* cmd = 8402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetImmediateAs<cmds::GenFramebuffersImmediate>(); 8412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenFramebuffersImmediate, 0>(false); 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &client_framebuffer_id_); 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kInvalidArguments, 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(*cmd, sizeof(&client_framebuffer_id_))); 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 847010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenRenderbuffersImmediateValidArgs) { 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _)) 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 8502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenRenderbuffersImmediate* cmd = 8512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetImmediateAs<cmds::GenRenderbuffersImmediate>(); 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kNewClientId; 8532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenRenderbuffersImmediate, 0>(true); 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &temp); 855a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp))); 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetRenderbuffer(kNewClientId) != NULL); 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 860010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenRenderbuffersImmediateInvalidArgs) { 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)).Times(0); 8622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenRenderbuffersImmediate* cmd = 8632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetImmediateAs<cmds::GenRenderbuffersImmediate>(); 8642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenRenderbuffersImmediate, 0>(false); 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &client_renderbuffer_id_); 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kInvalidArguments, 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(*cmd, sizeof(&client_renderbuffer_id_))); 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 870010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenTexturesImmediateValidArgs) { 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenTextures(1, _)) 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(SetArgumentPointee<1>(kNewServiceId)); 8732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenTexturesImmediate* cmd = 8742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetImmediateAs<cmds::GenTexturesImmediate>(); 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLuint temp = kNewClientId; 8762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenTexturesImmediate, 0>(true); 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &temp); 878a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(*cmd, sizeof(temp))); 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetTexture(kNewClientId) != NULL); 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 883010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GenTexturesImmediateInvalidArgs) { 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GenTextures(_, _)).Times(0); 8852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GenTexturesImmediate* cmd = 8862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetImmediateAs<cmds::GenTexturesImmediate>(); 8872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GenTexturesImmediate, 0>(false); 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd->Init(1, &client_texture_id_); 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kInvalidArguments, 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteImmediateCmd(*cmd, sizeof(&client_texture_id_))); 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetActiveAttrib 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetActiveUniform 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetAttachedShaders 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetAttribLocation 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 900010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBooleanvValidArgs) { 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 9052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBooleanv, 0>(true); 9062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetBooleanv::Result Result; 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBooleanv(GL_ACTIVE_TEXTURE, result->GetData())); 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 9102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBooleanv cmd; 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_); 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 913a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE), 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 918010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBooleanvInvalidArgs0_0) { 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBooleanv(_, _)).Times(0); 9202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBooleanv, 0>(false); 9212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBooleanv::Result* result = 9222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_); 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 9242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBooleanv cmd; 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 931010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBooleanvInvalidArgs1_0) { 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBooleanv(_, _)).Times(0); 9332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBooleanv, 0>(false); 9342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBooleanv::Result* result = 9352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_); 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 9372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBooleanv cmd; 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0); 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 943010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBooleanvInvalidArgs1_1) { 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBooleanv(_, _)).Times(0); 9452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBooleanv, 0>(false); 9462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBooleanv::Result* result = 9472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetBooleanv::Result*>(shared_memory_address_); 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 9492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBooleanv cmd; 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset); 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBufferParameterivValidArgs) { 9562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBufferParameteriv, 0>(true); 9572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetBufferParameteriv::Result Result; 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 9602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv cmd; 961a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_ARRAY_BUFFER, 962a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_BUFFER_SIZE, 963a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 964a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 966a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_BUFFER_SIZE), 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 971010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs0_0) { 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 9732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 9742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv::Result* result = 9752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 9772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv cmd; 978a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, 979a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_BUFFER_SIZE, 980a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 981a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 987010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs1_0) { 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 9892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 9902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv::Result* result = 9912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 9932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv cmd; 994a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_ARRAY_BUFFER, 995a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_PIXEL_PACK_BUFFER, 996a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 997a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1003010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_0) { 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 10052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 10062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv::Result* result = 10072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 10092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv cmd; 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, kInvalidSharedMemoryId, 0); 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_1) { 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0); 10172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetBufferParameteriv, 0>(false); 10182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv::Result* result = 10192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetBufferParameteriv::Result*>(shared_memory_address_); 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 10212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetBufferParameteriv cmd; 1022a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_ARRAY_BUFFER, 1023a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_BUFFER_SIZE, 1024a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1025a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1030010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetErrorValidArgs) { 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()); 10322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetError, 0>(true); 10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetError cmd; 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(shared_memory_id_, shared_memory_offset_); 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1039010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetErrorInvalidArgsBadSharedMemoryId) { 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()).Times(0); 10412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetError, 0>(false); 10422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetError cmd; 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(kInvalidSharedMemoryId, shared_memory_offset_); 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(shared_memory_id_, kInvalidSharedMemoryOffset); 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1049010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFloatvValidArgs) { 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 10542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFloatv, 0>(true); 10552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetFloatv::Result Result; 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetFloatv(GL_ACTIVE_TEXTURE, result->GetData())); 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 10592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFloatv cmd; 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_); 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1062a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE), 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1067010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFloatvInvalidArgs0_0) { 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetFloatv(_, _)).Times(0); 10692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFloatv, 0>(false); 10702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFloatv::Result* result = 10712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetFloatv::Result*>(shared_memory_address_); 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 10732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFloatv cmd; 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_); 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1080010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFloatvInvalidArgs1_0) { 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetFloatv(_, _)).Times(0); 10822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFloatv, 0>(false); 10832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFloatv::Result* result = 10842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetFloatv::Result*>(shared_memory_address_); 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 10862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFloatv cmd; 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0); 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1092010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFloatvInvalidArgs1_1) { 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetFloatv(_, _)).Times(0); 10942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFloatv, 0>(false); 10952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFloatv::Result* result = 10962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetFloatv::Result*>(shared_memory_address_); 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 10982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFloatv cmd; 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset); 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1104010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivValidArgs) { 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 11092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(true); 11102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetFramebufferAttachmentParameteriv::Result Result; 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 1112a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, 1113a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetFramebufferAttachmentParameterivEXT( 1114a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER, 1115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 1116a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 1117a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) result->GetData())); 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 11192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv cmd; 1120a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, 1121a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 1122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 1123a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1124a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE), 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1132010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_0) { 1133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) 1134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Times(0); 11352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 11362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv::Result* result = 11372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shared_memory_address_); 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 11402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv cmd; 1141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_DRAW_FRAMEBUFFER, 1142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 1143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 1144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_1) { 1152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) 1153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Times(0); 11542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 11552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv::Result* result = 11562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shared_memory_address_); 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 11592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv cmd; 1160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_READ_FRAMEBUFFER, 1161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 1162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 1163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1170010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_0) { 1171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) 1172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Times(0); 11732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 11742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv::Result* result = 11752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shared_memory_address_); 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 11782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv cmd; 1179a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, 1180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 1181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 1182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryId, 1183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 0); 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1188010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_1) { 1189a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) 1190a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) .Times(0); 11912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetFramebufferAttachmentParameteriv, 0>(false); 11922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv::Result* result = 11932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetFramebufferAttachmentParameteriv::Result*>( 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shared_memory_address_); 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 11962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetFramebufferAttachmentParameteriv cmd; 1197a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, 1198a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_COLOR_ATTACHMENT0, 1199a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 1200a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1201a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1206010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetIntegervValidArgs) { 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 12112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetIntegerv, 0>(true); 12122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetIntegerv::Result Result; 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, result->GetData())); 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 12162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetIntegerv cmd; 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_); 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1219a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE), 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1224010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetIntegervInvalidArgs0_0) { 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0); 12262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetIntegerv, 0>(false); 12272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetIntegerv::Result* result = 12282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_); 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 12302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetIntegerv cmd; 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_); 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1237010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetIntegervInvalidArgs1_0) { 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0); 12392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetIntegerv, 0>(false); 12402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetIntegerv::Result* result = 12412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_); 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 12432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetIntegerv cmd; 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0); 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1249010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetIntegervInvalidArgs1_1) { 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0); 12512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetIntegerv, 0>(false); 12522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetIntegerv::Result* result = 12532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_); 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 12552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetIntegerv cmd; 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset); 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1261010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetProgramivValidArgs) { 12622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetProgramiv, 0>(true); 12632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetProgramiv::Result Result; 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 12662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetProgramiv cmd; 1267a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(client_program_id_, 1268a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_DELETE_STATUS, 1269a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1270a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1272a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DELETE_STATUS), 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1277010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetProgramivInvalidArgs2_0) { 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0); 12792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetProgramiv, 0>(false); 12802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetProgramiv::Result* result = 12812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_); 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 12832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetProgramiv cmd; 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(client_program_id_, GL_DELETE_STATUS, kInvalidSharedMemoryId, 0); 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1289010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetProgramivInvalidArgs2_1) { 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0); 12912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetProgramiv, 0>(false); 12922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetProgramiv::Result* result = 12932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetProgramiv::Result*>(shared_memory_address_); 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 12952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetProgramiv cmd; 1296a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(client_program_id_, 1297a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_DELETE_STATUS, 1298a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1299a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1304010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetProgramInfoLogValidArgs) { 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* kInfo = "hello"; 1306010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const uint32_t kBucketId = 123; 13072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetProgramInfoLog, 0>(true); 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetProgramInfoLog cmd; 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(client_program_id_, kBucketId); 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(bucket != NULL); 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); 1315a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(0, 1316a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) memcmp(bucket->GetData(0, bucket->size()), kInfo, bucket->size())); 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1320010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetProgramInfoLogInvalidArgs) { 1321010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const uint32_t kBucketId = 123; 13222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetProgramInfoLog cmd; 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(kInvalidClientId, kBucketId); 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1328010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivValidArgs) { 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 13332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(true); 13342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetRenderbufferParameteriv::Result Result; 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL( 1337a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) *gl_, 1338a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetRenderbufferParameterivEXT( 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, result->GetData())); 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 13412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetRenderbufferParameteriv cmd; 1342a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, 1343a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_RENDERBUFFER_RED_SIZE, 1344a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1345a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RENDERBUFFER_RED_SIZE), 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1353010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs0_0) { 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0); 13552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false); 13562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetRenderbufferParameteriv::Result* result = 13572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetRenderbufferParameteriv::Result*>( 13582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shared_memory_address_); 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 13602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetRenderbufferParameteriv cmd; 1361a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, 1362a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_RENDERBUFFER_RED_SIZE, 1363a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1364a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1370010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_0) { 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0); 13722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false); 13732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetRenderbufferParameteriv::Result* result = 13742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetRenderbufferParameteriv::Result*>( 13752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shared_memory_address_); 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 13772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetRenderbufferParameteriv cmd; 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init( 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RENDERBUFFER, GL_RENDERBUFFER_RED_SIZE, kInvalidSharedMemoryId, 0); 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1384010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_1) { 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0); 13862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetRenderbufferParameteriv, 0>(false); 13872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetRenderbufferParameteriv::Result* result = 13882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetRenderbufferParameteriv::Result*>( 13892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shared_memory_address_); 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 13912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetRenderbufferParameteriv cmd; 1392a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, 1393a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_RENDERBUFFER_RED_SIZE, 1394a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1395a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1400010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetShaderivValidArgs) { 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 14052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetShaderiv, 0>(true); 14062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetShaderiv::Result Result; 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 1408a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, 1409a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetShaderiv(kServiceShaderId, GL_SHADER_TYPE, result->GetData())); 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 14112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetShaderiv cmd; 1412a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(client_shader_id_, 1413a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_SHADER_TYPE, 1414a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1415a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1417a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_SHADER_TYPE), 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1422010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetShaderivInvalidArgs2_0) { 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0); 14242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetShaderiv, 0>(false); 14252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetShaderiv::Result* result = 14262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetShaderiv::Result*>(shared_memory_address_); 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 14282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetShaderiv cmd; 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(client_shader_id_, GL_SHADER_TYPE, kInvalidSharedMemoryId, 0); 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1434010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetShaderivInvalidArgs2_1) { 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0); 14362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetShaderiv, 0>(false); 14372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetShaderiv::Result* result = 14382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetShaderiv::Result*>(shared_memory_address_); 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 14402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetShaderiv cmd; 1441a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(client_shader_id_, 1442a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_SHADER_TYPE, 1443a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1444a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetShaderInfoLog 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetShaderPrecisionFormat 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetShaderSource 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetString 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1454010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterfvValidArgs) { 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 14592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameterfv, 0>(true); 14602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetTexParameterfv::Result Result; 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 1462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, 1463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetTexParameterfv( 1464a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData())); 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 14662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv cmd; 1467a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 1468a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_MAG_FILTER, 1469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1470a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1472a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ( 1473a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER), 1474a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) result->GetNumResults()); 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1478010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterfvInvalidArgs0_0) { 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 14802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 14812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv::Result* result = 14822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 14842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv cmd; 1485a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, 1486a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_MAG_FILTER, 1487a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1488a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1494010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterfvInvalidArgs1_0) { 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 14962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 14972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv::Result* result = 14982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 15002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv cmd; 1501a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 1502a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_GENERATE_MIPMAP, 1503a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1504a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1510010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_0) { 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 15122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 15132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv::Result* result = 15142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 15162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv cmd; 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0); 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1522010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_1) { 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0); 15242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameterfv, 0>(false); 15252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv::Result* result = 15262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameterfv::Result*>(shared_memory_address_); 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 15282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameterfv cmd; 1529a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 1530a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_MAG_FILTER, 1531a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1532a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1537010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterivValidArgs) { 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetError()) 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(Return(GL_NO_ERROR)) 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .RetiresOnSaturation(); 15422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameteriv, 0>(true); 15432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetTexParameteriv::Result Result; 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 1545a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_CALL(*gl_, 1546a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetTexParameteriv( 1547a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, result->GetData())); 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 15492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv cmd; 1550a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 1551a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_MAG_FILTER, 1552a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1553a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1555a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ( 1556a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER), 1557a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) result->GetNumResults()); 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1561010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterivInvalidArgs0_0) { 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 15632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 15642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv::Result* result = 15652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 15672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv cmd; 1568a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, 1569a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_MAG_FILTER, 1570a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1571a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1577010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterivInvalidArgs1_0) { 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 15792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 15802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv::Result* result = 15812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 15832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv cmd; 1584a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 1585a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_GENERATE_MIPMAP, 1586a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1587a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1593010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_0) { 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 15952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 15962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv::Result* result = 15972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 15992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv cmd; 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0); 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_1) { 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0); 16072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetTexParameteriv, 0>(false); 16082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv::Result* result = 16092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetTexParameteriv::Result*>(shared_memory_address_); 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 16112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetTexParameteriv cmd; 1612a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(GL_TEXTURE_2D, 1613a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_TEXTURE_MAG_FILTER, 1614a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1615a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetUniformfv 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetUniformiv 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(gman): GetUniformLocation 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetVertexAttribfvValidArgs) { 16262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetVertexAttribfv, 0>(true); 16272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef cmds::GetVertexAttribfv::Result Result; 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 16302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetVertexAttribfv cmd; 1631a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(1, 1632a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, 1633a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1634a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_VERTEX_ATTRIB_ARRAY_NORMALIZED), 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->GetNumResults()); 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1642010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetVertexAttribfvInvalidArgs2_0) { 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0); 16442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetVertexAttribfv, 0>(false); 16452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetVertexAttribfv::Result* result = 16462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetVertexAttribfv::Result*>(shared_memory_address_); 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 16482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetVertexAttribfv cmd; 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0); 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1654010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetVertexAttribfvInvalidArgs2_1) { 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0); 16562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SpecializedSetup<cmds::GetVertexAttribfv, 0>(false); 16572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetVertexAttribfv::Result* result = 16582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<cmds::GetVertexAttribfv::Result*>(shared_memory_address_); 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->size = 0; 16602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmds::GetVertexAttribfv cmd; 1661a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(1, 1662a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, 1663a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1664a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, result->size); 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1669010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetVertexAttribivValidArgs) { 16704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SpecializedSetup<cmds::GetVertexAttribiv, 0>(true); 16714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) typedef cmds::GetVertexAttribiv::Result Result; 16724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) Result* result = static_cast<Result*>(shared_memory_address_); 16734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result->size = 0; 16744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::GetVertexAttribiv cmd; 1675a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(1, 1676a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, 1677a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1678a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_offset_); 16794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 16804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( 16814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) GL_VERTEX_ATTRIB_ARRAY_NORMALIZED), 16824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result->GetNumResults()); 16834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 16844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 16854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1686010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetVertexAttribivInvalidArgs2_0) { 16874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0); 16884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SpecializedSetup<cmds::GetVertexAttribiv, 0>(false); 16894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::GetVertexAttribiv::Result* result = 16904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static_cast<cmds::GetVertexAttribiv::Result*>(shared_memory_address_); 16914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result->size = 0; 16924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::GetVertexAttribiv cmd; 16934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0); 16944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 16954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(0u, result->size); 16964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 16974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1698010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, GetVertexAttribivInvalidArgs2_1) { 16994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0); 17004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SpecializedSetup<cmds::GetVertexAttribiv, 0>(false); 17014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::GetVertexAttribiv::Result* result = 17024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static_cast<cmds::GetVertexAttribiv::Result*>(shared_memory_address_); 17034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) result->size = 0; 17044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::GetVertexAttribiv cmd; 1705a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) cmd.Init(1, 1706a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, 1707a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shared_memory_id_, 1708a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) kInvalidSharedMemoryOffset); 17094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 17104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(0u, result->size); 17114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 17124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// TODO(gman): GetVertexAttribPointerv 17134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1714010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, HintValidArgs) { 17154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_CALL(*gl_, Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST)); 17164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SpecializedSetup<cmds::Hint, 0>(true); 17174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::Hint cmd; 17184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmd.Init(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); 17194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 17204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 17214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 17224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1723010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, HintInvalidArgs0_0) { 17244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_CALL(*gl_, Hint(_, _)).Times(0); 17254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SpecializedSetup<cmds::Hint, 0>(false); 17264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::Hint cmd; 17274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmd.Init(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); 17284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 17294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 17304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 17314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1732010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsBufferValidArgs) { 17334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SpecializedSetup<cmds::IsBuffer, 0>(true); 17344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::IsBuffer cmd; 17354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmd.Init(client_buffer_id_, shared_memory_id_, shared_memory_offset_); 17364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 17374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 17384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 17394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1740010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsBufferInvalidArgsBadSharedMemoryId) { 17414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) SpecializedSetup<cmds::IsBuffer, 0>(false); 17424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmds::IsBuffer cmd; 17434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmd.Init(client_buffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); 17444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 17454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cmd.Init(client_buffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 17464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 17474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 17488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1749010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsEnabledValidArgs) { 17508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsEnabled, 0>(true); 17518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsEnabled cmd; 17528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(GL_BLEND, shared_memory_id_, shared_memory_offset_); 17538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 17548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 17558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 17568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1757010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsEnabledInvalidArgs0_0) { 17588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_CALL(*gl_, IsEnabled(_)).Times(0); 17598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsEnabled, 0>(false); 17608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsEnabled cmd; 17618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(GL_CLIP_PLANE0, shared_memory_id_, shared_memory_offset_); 17628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 17638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 17648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 17658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1766010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsEnabledInvalidArgs0_1) { 17678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_CALL(*gl_, IsEnabled(_)).Times(0); 17688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsEnabled, 0>(false); 17698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsEnabled cmd; 17708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(GL_POINT_SPRITE, shared_memory_id_, shared_memory_offset_); 17718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 17728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 17738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 17748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1775010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsEnabledInvalidArgsBadSharedMemoryId) { 17768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsEnabled, 0>(false); 17778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsEnabled cmd; 17788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(GL_BLEND, kInvalidSharedMemoryId, shared_memory_offset_); 17798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 17808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(GL_BLEND, shared_memory_id_, kInvalidSharedMemoryOffset); 17818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 17828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 17838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1784010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsFramebufferValidArgs) { 17858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsFramebuffer, 0>(true); 17868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsFramebuffer cmd; 17878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(client_framebuffer_id_, shared_memory_id_, shared_memory_offset_); 17888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 17898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 17908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 17918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1792010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsFramebufferInvalidArgsBadSharedMemoryId) { 17938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsFramebuffer, 0>(false); 17948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsFramebuffer cmd; 17958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init( 17968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) client_framebuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); 17978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 17988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init( 17998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) client_framebuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 18008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 18018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 18028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1803010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsProgramValidArgs) { 18048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsProgram, 0>(true); 18058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsProgram cmd; 18068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_); 18078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 18088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 18098bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 18108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1811010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_P(GLES2DecoderTest1, IsProgramInvalidArgsBadSharedMemoryId) { 18128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SpecializedSetup<cmds::IsProgram, 0>(false); 18138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmds::IsProgram cmd; 18148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(client_program_id_, kInvalidSharedMemoryId, shared_memory_offset_); 18158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 18168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) cmd.Init(client_program_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 18178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 18188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 1819cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1820cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, IsRenderbufferValidArgs) { 1821cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::IsRenderbuffer, 0>(true); 1822cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::IsRenderbuffer cmd; 1823cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_renderbuffer_id_, shared_memory_id_, shared_memory_offset_); 1824cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1825cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1826cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1827cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1828cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, IsRenderbufferInvalidArgsBadSharedMemoryId) { 1829cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::IsRenderbuffer, 0>(false); 1830cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::IsRenderbuffer cmd; 1831cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init( 1832cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) client_renderbuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_); 1833cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1834cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init( 1835cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) client_renderbuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 1836cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1837cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1838cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1839cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, IsShaderValidArgs) { 1840cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::IsShader, 0>(true); 1841cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::IsShader cmd; 1842cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_shader_id_, shared_memory_id_, shared_memory_offset_); 1843cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1844cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1845cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1846cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1847cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, IsShaderInvalidArgsBadSharedMemoryId) { 1848cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::IsShader, 0>(false); 1849cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::IsShader cmd; 1850cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_shader_id_, kInvalidSharedMemoryId, shared_memory_offset_); 1851cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1852cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_shader_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 1853cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1854cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1855cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1856cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, IsTextureValidArgs) { 1857cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::IsTexture, 0>(true); 1858cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::IsTexture cmd; 1859cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_texture_id_, shared_memory_id_, shared_memory_offset_); 1860cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1861cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1862cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1863cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1864cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, IsTextureInvalidArgsBadSharedMemoryId) { 1865cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::IsTexture, 0>(false); 1866cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::IsTexture cmd; 1867cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_texture_id_, kInvalidSharedMemoryId, shared_memory_offset_); 1868cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1869cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_texture_id_, shared_memory_id_, kInvalidSharedMemoryOffset); 1870cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 1871cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1872cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1873cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, LineWidthValidArgs) { 1874cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_CALL(*gl_, LineWidth(0.5f)); 1875cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::LineWidth, 0>(true); 1876cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::LineWidth cmd; 1877cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(0.5f); 1878cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1879cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1880cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1881cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1882cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, LineWidthInvalidValue0_0) { 1883cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::LineWidth, 0>(false); 1884cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::LineWidth cmd; 1885cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(0.0f); 1886cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1887cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1888cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1889cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 18906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_P(GLES2DecoderTest1, LineWidthNaNValue0) { 18916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SpecializedSetup<cmds::LineWidth, 0>(false); 18926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) cmds::LineWidth cmd; 18936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) cmd.Init(nanf("")); 18946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 18956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 18966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 18976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1898cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, LinkProgramValidArgs) { 1899cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_CALL(*gl_, LinkProgram(kServiceProgramId)); 1900cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::LinkProgram, 0>(true); 1901cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::LinkProgram cmd; 1902cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(client_program_id_); 1903cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1904cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1905cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1906cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// TODO(gman): PixelStorei 1907cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1908cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(GLES2DecoderTest1, PolygonOffsetValidArgs) { 1909cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_CALL(*gl_, PolygonOffset(1, 2)); 1910cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpecializedSetup<cmds::PolygonOffset, 0>(true); 1911cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmds::PolygonOffset cmd; 1912cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) cmd.Init(1, 2); 1913cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1914cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1915cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1916cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// TODO(gman): ReadPixels 1917cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1918f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// TODO(gman): ReleaseShaderCompiler 1919f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1920f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_P(GLES2DecoderTest1, RenderbufferStorageValidArgs) { 1921f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SpecializedSetup<cmds::RenderbufferStorage, 0>(true); 1922f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmds::RenderbufferStorage cmd; 1923f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4); 1924f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1925f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1926f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 1927f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1928f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_P(GLES2DecoderTest1, RenderbufferStorageInvalidArgs0_0) { 1929f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0); 1930f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SpecializedSetup<cmds::RenderbufferStorage, 0>(false); 1931f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmds::RenderbufferStorage cmd; 1932f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmd.Init(GL_FRAMEBUFFER, GL_RGBA4, 3, 4); 1933f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1934f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1935f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 1936f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1937f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_P(GLES2DecoderTest1, RenderbufferStorageInvalidArgs2_0) { 1938f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0); 1939f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SpecializedSetup<cmds::RenderbufferStorage, 0>(false); 1940f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmds::RenderbufferStorage cmd; 1941f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, GL_RGBA4, -1, 4); 1942f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1943f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1944f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 1945f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1946f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_P(GLES2DecoderTest1, RenderbufferStorageInvalidArgs3_0) { 1947f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0); 1948f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SpecializedSetup<cmds::RenderbufferStorage, 0>(false); 1949f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmds::RenderbufferStorage cmd; 1950f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, -1); 1951f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1952f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1953f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 1954f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1955f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_P(GLES2DecoderTest1, SampleCoverageValidArgs) { 1956f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_CALL(*gl_, SampleCoverage(1, true)); 1957f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SpecializedSetup<cmds::SampleCoverage, 0>(true); 1958f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmds::SampleCoverage cmd; 1959f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cmd.Init(1, true); 1960f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1961f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1962f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_ 1964