Handle account removal correctly on all platforms.
[chromium-blink-merge.git] / gpu / command_buffer / service / mocks.h
blob17c8401ff2c4d4af96d40183f1080b5d92cb6860
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file contains definitions for mock objects, used for testing.
7 // TODO(apatrick): This file "manually" defines some mock objects. Using gMock
8 // would be definitely preferable, unfortunately it doesn't work on Windows yet.
10 #ifndef GPU_COMMAND_BUFFER_SERVICE_MOCKS_H_
11 #define GPU_COMMAND_BUFFER_SERVICE_MOCKS_H_
13 #include <string>
14 #include <vector>
16 #include "base/logging.h"
17 #include "gpu/command_buffer/service/cmd_parser.h"
18 #include "gpu/command_buffer/service/cmd_buffer_engine.h"
19 #include "gpu/command_buffer/service/memory_tracking.h"
20 #include "gpu/command_buffer/service/program_cache.h"
21 #include "gpu/command_buffer/service/shader_translator.h"
22 #include "testing/gmock/include/gmock/gmock.h"
24 namespace gpu {
26 // Mocks an AsyncAPIInterface, using GMock.
27 class AsyncAPIMock : public AsyncAPIInterface {
28 public:
29 explicit AsyncAPIMock(bool default_do_commands);
30 virtual ~AsyncAPIMock();
32 error::Error FakeDoCommands(unsigned int num_commands,
33 const void* buffer,
34 int num_entries,
35 int* entries_processed);
37 // Predicate that matches args passed to DoCommand, by looking at the values.
38 class IsArgs {
39 public:
40 IsArgs(unsigned int arg_count, const void* args)
41 : arg_count_(arg_count),
42 args_(static_cast<CommandBufferEntry*>(const_cast<void*>(args))) {
45 bool operator() (const void* _args) const {
46 const CommandBufferEntry* args =
47 static_cast<const CommandBufferEntry*>(_args) + 1;
48 for (unsigned int i = 0; i < arg_count_; ++i) {
49 if (args[i].value_uint32 != args_[i].value_uint32) return false;
51 return true;
54 private:
55 unsigned int arg_count_;
56 CommandBufferEntry *args_;
59 MOCK_METHOD3(DoCommand, error::Error(
60 unsigned int command,
61 unsigned int arg_count,
62 const void* cmd_data));
64 MOCK_METHOD4(DoCommands,
65 error::Error(unsigned int num_commands,
66 const void* buffer,
67 int num_entries,
68 int* entries_processed));
70 const char* GetCommandName(unsigned int command_id) const {
71 return "";
74 // Sets the engine, to forward SetToken commands to it.
75 void set_engine(CommandBufferEngine *engine) { engine_ = engine; }
77 // Forwards the SetToken commands to the engine.
78 void SetToken(unsigned int command,
79 unsigned int arg_count,
80 const void* _args);
82 private:
83 CommandBufferEngine *engine_;
86 namespace gles2 {
88 class MockShaderTranslator : public ShaderTranslatorInterface {
89 public:
90 MockShaderTranslator();
91 virtual ~MockShaderTranslator();
93 MOCK_METHOD5(Init, bool(
94 sh::GLenum shader_type,
95 ShShaderSpec shader_spec,
96 const ShBuiltInResources* resources,
97 GlslImplementationType glsl_implementation_type,
98 ShCompileOptions driver_bug_workarounds));
99 MOCK_CONST_METHOD7(Translate, bool(
100 const std::string& shader_source,
101 std::string* info_log,
102 std::string* translated_source,
103 VariableMap* attrib_map,
104 VariableMap* uniform_map,
105 VariableMap* varying_map,
106 NameMap* name_map));
107 MOCK_CONST_METHOD0(
108 GetStringForOptionsThatWouldAffectCompilation, std::string());
111 class MockProgramCache : public ProgramCache {
112 public:
113 MockProgramCache();
114 virtual ~MockProgramCache();
116 MOCK_METHOD7(LoadLinkedProgram, ProgramLoadResult(
117 GLuint program,
118 Shader* shader_a,
119 const ShaderTranslatorInterface* translator_a,
120 Shader* shader_b,
121 const ShaderTranslatorInterface* translator_b,
122 const LocationMap* bind_attrib_location_map,
123 const ShaderCacheCallback& callback));
125 MOCK_METHOD7(SaveLinkedProgram, void(
126 GLuint program,
127 const Shader* shader_a,
128 const ShaderTranslatorInterface* translator_a,
129 const Shader* shader_b,
130 const ShaderTranslatorInterface* translator_b,
131 const LocationMap* bind_attrib_location_map,
132 const ShaderCacheCallback& callback));
133 MOCK_METHOD1(LoadProgram, void(const std::string&));
135 private:
136 MOCK_METHOD0(ClearBackend, void());
139 class MockMemoryTracker : public MemoryTracker {
140 public:
141 MockMemoryTracker();
143 MOCK_METHOD3(TrackMemoryAllocatedChange, void(
144 size_t old_size, size_t new_size, Pool pool));
145 MOCK_METHOD1(EnsureGPUMemoryAvailable, bool(size_t size_needed));
147 private:
148 friend class ::testing::StrictMock<MockMemoryTracker>;
149 friend class base::RefCounted< ::testing::StrictMock<MockMemoryTracker> >;
150 virtual ~MockMemoryTracker();
153 } // namespace gles2
154 } // namespace gpu
156 #endif // GPU_COMMAND_BUFFER_SERVICE_MOCKS_H_