Index: gpu/command_buffer/service/test_helper.cc |
diff --git a/gpu/command_buffer/service/test_helper.cc b/gpu/command_buffer/service/test_helper.cc |
index 2323808391c12b90cfcaf6d0d25be4fe3507e193..2f0e9c995563697f342e6b647fd134a2d57262d2 100644 |
--- a/gpu/command_buffer/service/test_helper.cc |
+++ b/gpu/command_buffer/service/test_helper.cc |
@@ -13,6 +13,7 @@ |
#include "gpu/command_buffer/service/error_state_mock.h" |
#include "gpu/command_buffer/service/gl_utils.h" |
#include "gpu/command_buffer/service/gpu_switches.h" |
+#include "gpu/command_buffer/service/mocks.h" |
#include "gpu/command_buffer/service/program_manager.h" |
#include "gpu/command_buffer/service/texture_manager.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -23,6 +24,7 @@ using ::testing::DoAll; |
using ::testing::InSequence; |
using ::testing::MatcherCast; |
using ::testing::Pointee; |
+using ::testing::NotNull; |
using ::testing::Return; |
using ::testing::SetArrayArgument; |
using ::testing::SetArgumentPointee; |
@@ -640,6 +642,78 @@ void TestHelper::SetTexParameteriWithExpectations( |
manager->SetParameteri("", error_state, texture_ref, pname, value); |
} |
+// static |
+void TestHelper::SetShaderStates( |
+ ::gfx::MockGLInterface* gl, Shader* shader, |
+ bool expected_valid, |
+ const std::string* const expected_log_info, |
+ const std::string* const expected_translated_source, |
+ const ShaderTranslatorInterface::VariableMap* const expected_attrib_map, |
+ const ShaderTranslatorInterface::VariableMap* const expected_uniform_map, |
+ const ShaderTranslatorInterface::VariableMap* const expected_varying_map, |
+ const ShaderTranslatorInterface::NameMap* const expected_name_map) { |
+ const std::string empty_log_info; |
+ const std::string* log_info = (expected_log_info && !expected_valid) ? |
+ expected_log_info : &empty_log_info; |
+ const std::string empty_translated_source; |
+ const std::string* translated_source = |
+ (expected_translated_source && expected_valid) ? |
+ expected_translated_source : &empty_translated_source; |
+ const ShaderTranslatorInterface::VariableMap empty_attrib_map; |
+ const ShaderTranslatorInterface::VariableMap* attrib_map = |
+ (expected_attrib_map && expected_valid) ? |
+ expected_attrib_map : &empty_attrib_map; |
+ const ShaderTranslatorInterface::VariableMap empty_uniform_map; |
+ const ShaderTranslatorInterface::VariableMap* uniform_map = |
+ (expected_uniform_map && expected_valid) ? |
+ expected_uniform_map : &empty_uniform_map; |
+ const ShaderTranslatorInterface::VariableMap empty_varying_map; |
+ const ShaderTranslatorInterface::VariableMap* varying_map = |
+ (expected_varying_map && expected_valid) ? |
+ expected_varying_map : &empty_varying_map; |
+ const ShaderTranslatorInterface::NameMap empty_name_map; |
+ const ShaderTranslatorInterface::NameMap* name_map = |
+ (expected_name_map && expected_valid) ? |
+ expected_name_map : &empty_name_map; |
+ |
+ MockShaderTranslator translator; |
+ EXPECT_CALL(translator, Translate(_, |
+ NotNull(), // log_info |
+ NotNull(), // translated_source |
+ NotNull(), // attrib_map |
+ NotNull(), // uniform_map |
+ NotNull(), // varying_map |
+ NotNull())) // name_map |
+ .WillOnce(DoAll(SetArgumentPointee<1>(*log_info), |
+ SetArgumentPointee<2>(*translated_source), |
+ SetArgumentPointee<3>(*attrib_map), |
+ SetArgumentPointee<4>(*uniform_map), |
+ SetArgumentPointee<5>(*varying_map), |
+ SetArgumentPointee<6>(*name_map), |
+ Return(expected_valid))) |
+ .RetiresOnSaturation(); |
+ if (expected_valid) { |
+ EXPECT_CALL(*gl, ShaderSource(shader->service_id(), 1, _, NULL)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, CompileShader(shader->service_id())) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, GetShaderiv(shader->service_id(), |
+ GL_COMPILE_STATUS, |
+ NotNull())) // status |
+ .WillOnce(SetArgumentPointee<2>(GL_TRUE)) |
+ .RetiresOnSaturation(); |
+ } |
+ shader->DoCompile(&translator, Shader::kGL); |
+} |
+ |
+// static |
+void TestHelper::SetShaderStates( |
+ ::gfx::MockGLInterface* gl, Shader* shader, bool valid) { |
+ SetShaderStates(gl, shader, valid, NULL, NULL, NULL, NULL, NULL, NULL); |
+} |
+ |
ScopedGLImplementationSetter::ScopedGLImplementationSetter( |
gfx::GLImplementation implementation) |
: old_implementation_(gfx::GetGLImplementation()) { |