Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
index f7b7fb565dfd872ae364144f2aae3b84798e7d84..bcfeb1bff2ebf872c3c244f59babb0dde5ba9c20 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
@@ -875,6 +875,58 @@ TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) { |
EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
} |
+TEST_P(GLES2DecoderWithShaderTest, GetFragDataLocation) { |
+ const uint32 kBucketId = 123; |
+ const GLint kLocation = 10; |
+ const char* kName = "color"; |
+ typedef GetFragDataLocation::Result Result; |
+ Result* result = GetSharedMemoryAs<Result*>(); |
+ SetBucketAsCString(kBucketId, kName); |
+ *result = -1; |
+ GetFragDataLocation cmd; |
+ cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
+ EXPECT_CALL(*gl_, GetFragDataLocation(kServiceProgramId, StrEq(kName))) |
+ .WillOnce(Return(kLocation)) |
+ .RetiresOnSaturation(); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(kLocation, *result); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, GetFragDataLocationInvalidArgs) { |
+ const uint32 kBucketId = 123; |
+ typedef GetFragDataLocation::Result Result; |
+ Result* result = GetSharedMemoryAs<Result*>(); |
+ *result = -1; |
+ GetFragDataLocation cmd; |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ // Check no bucket |
+ cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
+ EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(-1, *result); |
+ // Check bad program id. |
+ const char* kName = "color"; |
+ SetBucketAsCString(kBucketId, kName); |
+ cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
+ *result = -1; |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(-1, *result); |
+ EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
no sievers
2015/01/27 00:17:20
Is this error set from the client?
Zhenyao Mo
2015/01/27 00:36:46
It's set by decoder in GetProgramInfoNotShader().
|
+ // Check bad memory |
+ cmd.Init(client_program_id_, |
+ kBucketId, |
+ kInvalidSharedMemoryId, |
+ kSharedMemoryOffset); |
+ EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
+ cmd.Init(client_program_id_, |
+ kBucketId, |
+ kSharedMemoryId, |
+ kInvalidSharedMemoryOffset); |
+ EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
+} |
+ |
TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) { |
const uint32 kBucketId = 123; |
const char* kNonExistentName = "foobar"; |