dmurph@chromium.org | 65dfc60 | 2012-07-23 20:39:39 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
apatrick@google.com | 1bee398 | 2009-12-17 23:15:28 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 4 | |
| 5 | // This file contains definitions for mock objects, used for testing. |
| 6 | |
gman@chromium.org | f57bb28 | 2010-11-12 00:51:34 | [diff] [blame] | 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. |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 9 | |
apatrick@google.com | a7a27ace | 2009-12-12 00:11:25 | [diff] [blame] | 10 | #ifndef GPU_COMMAND_BUFFER_SERVICE_MOCKS_H_ |
| 11 | #define GPU_COMMAND_BUFFER_SERVICE_MOCKS_H_ |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 12 | |
dsinclair@chromium.org | e3932abb | 2013-03-13 00:01:37 | [diff] [blame] | 13 | #include <string> |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 14 | #include <vector> |
apatrick@chromium.org | 20407e9 | 2010-09-08 18:31:08 | [diff] [blame] | 15 | |
| 16 | #include "base/logging.h" |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 17 | #include "gpu/command_buffer/service/cmd_parser.h" |
| 18 | #include "gpu/command_buffer/service/cmd_buffer_engine.h" |
gman@chromium.org | 739a06e | 2013-01-15 23:25:11 | [diff] [blame] | 19 | #include "gpu/command_buffer/service/memory_tracking.h" |
dmurph@chromium.org | 65dfc60 | 2012-07-23 20:39:39 | [diff] [blame] | 20 | #include "gpu/command_buffer/service/program_cache.h" |
gman@chromium.org | f57bb28 | 2010-11-12 00:51:34 | [diff] [blame] | 21 | #include "gpu/command_buffer/service/shader_translator.h" |
apatrick@chromium.org | 20407e9 | 2010-09-08 18:31:08 | [diff] [blame] | 22 | #include "testing/gmock/include/gmock/gmock.h" |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 23 | |
apatrick@google.com | a7a27ace | 2009-12-12 00:11:25 | [diff] [blame] | 24 | namespace gpu { |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 25 | |
| 26 | // Mocks an AsyncAPIInterface, using GMock. |
| 27 | class AsyncAPIMock : public AsyncAPIInterface { |
| 28 | public: |
vmiura | 8266ca7 | 2014-09-09 21:37:00 | [diff] [blame] | 29 | explicit AsyncAPIMock(bool default_do_commands); |
erg@google.com | 3339229 | 2011-01-05 17:56:39 | [diff] [blame] | 30 | virtual ~AsyncAPIMock(); |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 31 | |
vmiura | 8266ca7 | 2014-09-09 21:37:00 | [diff] [blame] | 32 | error::Error FakeDoCommands(unsigned int num_commands, |
| 33 | const void* buffer, |
| 34 | int num_entries, |
| 35 | int* entries_processed); |
| 36 | |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 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))) { |
| 43 | } |
| 44 | |
| 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; |
| 50 | } |
| 51 | return true; |
| 52 | } |
| 53 | |
| 54 | private: |
| 55 | unsigned int arg_count_; |
| 56 | CommandBufferEntry *args_; |
| 57 | }; |
| 58 | |
apatrick@chromium.org | f7a64ee | 2010-02-01 22:24:14 | [diff] [blame] | 59 | MOCK_METHOD3(DoCommand, error::Error( |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 60 | unsigned int command, |
| 61 | unsigned int arg_count, |
| 62 | const void* cmd_data)); |
| 63 | |
vmiura | 8266ca7 | 2014-09-09 21:37:00 | [diff] [blame] | 64 | MOCK_METHOD4(DoCommands, |
| 65 | error::Error(unsigned int num_commands, |
| 66 | const void* buffer, |
| 67 | int num_entries, |
| 68 | int* entries_processed)); |
| 69 | |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 70 | const char* GetCommandName(unsigned int command_id) const { |
| 71 | return ""; |
| 72 | }; |
| 73 | |
| 74 | // Sets the engine, to forward SetToken commands to it. |
| 75 | void set_engine(CommandBufferEngine *engine) { engine_ = engine; } |
| 76 | |
| 77 | // Forwards the SetToken commands to the engine. |
| 78 | void SetToken(unsigned int command, |
| 79 | unsigned int arg_count, |
erg@google.com | 3339229 | 2011-01-05 17:56:39 | [diff] [blame] | 80 | const void* _args); |
| 81 | |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 82 | private: |
| 83 | CommandBufferEngine *engine_; |
| 84 | }; |
| 85 | |
gman@chromium.org | f57bb28 | 2010-11-12 00:51:34 | [diff] [blame] | 86 | namespace gles2 { |
| 87 | |
| 88 | class MockShaderTranslator : public ShaderTranslatorInterface { |
| 89 | public: |
erg@google.com | 3339229 | 2011-01-05 17:56:39 | [diff] [blame] | 90 | MockShaderTranslator(); |
gman@chromium.org | f57bb28 | 2010-11-12 00:51:34 | [diff] [blame] | 91 | |
jmadill@chromium.org | 44c8cc8b | 2014-07-08 14:05:17 | [diff] [blame] | 92 | MOCK_METHOD5(Init, bool( |
| 93 | sh::GLenum shader_type, |
| 94 | ShShaderSpec shader_spec, |
| 95 | const ShBuiltInResources* resources, |
| 96 | GlslImplementationType glsl_implementation_type, |
| 97 | ShCompileOptions driver_bug_workarounds)); |
oetuaho | e6bdcf3 | 2015-05-07 16:45:25 | [diff] [blame] | 98 | MOCK_CONST_METHOD8(Translate, bool( |
zmo | 576a049 | 2014-09-13 01:12:32 | [diff] [blame] | 99 | const std::string& shader_source, |
| 100 | std::string* info_log, |
| 101 | std::string* translated_source, |
oetuaho | e6bdcf3 | 2015-05-07 16:45:25 | [diff] [blame] | 102 | int* shader_version, |
zmo | 88043c08 | 2014-10-09 20:38:55 | [diff] [blame] | 103 | AttributeMap* attrib_map, |
| 104 | UniformMap* uniform_map, |
| 105 | VaryingMap* varying_map, |
zmo | 576a049 | 2014-09-13 01:12:32 | [diff] [blame] | 106 | NameMap* name_map)); |
gman@chromium.org | ef2e2ab | 2013-05-17 19:51:09 | [diff] [blame] | 107 | MOCK_CONST_METHOD0( |
shannonwoods@chromium.org | 0f4dffbf | 2014-05-21 20:05:40 | [diff] [blame] | 108 | GetStringForOptionsThatWouldAffectCompilation, std::string()); |
dyen | 0ff9e440 | 2015-02-12 22:27:43 | [diff] [blame] | 109 | private: |
| 110 | ~MockShaderTranslator() override; |
gman@chromium.org | f57bb28 | 2010-11-12 00:51:34 | [diff] [blame] | 111 | }; |
| 112 | |
dmurph@chromium.org | 65dfc60 | 2012-07-23 20:39:39 | [diff] [blame] | 113 | class MockProgramCache : public ProgramCache { |
| 114 | public: |
| 115 | MockProgramCache(); |
| 116 | virtual ~MockProgramCache(); |
| 117 | |
bajones | 63ead73 | 2015-03-14 00:12:46 | [diff] [blame] | 118 | MOCK_METHOD7(LoadLinkedProgram, ProgramLoadResult( |
dmurph@chromium.org | 65dfc60 | 2012-07-23 20:39:39 | [diff] [blame] | 119 | GLuint program, |
gman@chromium.org | ed9f9cd | 2013-02-27 21:12:35 | [diff] [blame] | 120 | Shader* shader_a, |
gman@chromium.org | ed9f9cd | 2013-02-27 21:12:35 | [diff] [blame] | 121 | Shader* shader_b, |
dsinclair@chromium.org | f1f4dd5f | 2013-04-11 01:58:44 | [diff] [blame] | 122 | const LocationMap* bind_attrib_location_map, |
bajones | 63ead73 | 2015-03-14 00:12:46 | [diff] [blame] | 123 | const std::vector<std::string>& transform_feedback_varyings, |
| 124 | GLenum transform_feedback_buffer_mode, |
dsinclair@chromium.org | f1f4dd5f | 2013-04-11 01:58:44 | [diff] [blame] | 125 | const ShaderCacheCallback& callback)); |
dmurph@chromium.org | 65dfc60 | 2012-07-23 20:39:39 | [diff] [blame] | 126 | |
bajones | 63ead73 | 2015-03-14 00:12:46 | [diff] [blame] | 127 | MOCK_METHOD7(SaveLinkedProgram, void( |
dmurph@chromium.org | 65dfc60 | 2012-07-23 20:39:39 | [diff] [blame] | 128 | GLuint program, |
gman@chromium.org | ed9f9cd | 2013-02-27 21:12:35 | [diff] [blame] | 129 | const Shader* shader_a, |
gman@chromium.org | ed9f9cd | 2013-02-27 21:12:35 | [diff] [blame] | 130 | const Shader* shader_b, |
dsinclair@chromium.org | e3932abb | 2013-03-13 00:01:37 | [diff] [blame] | 131 | const LocationMap* bind_attrib_location_map, |
bajones | 63ead73 | 2015-03-14 00:12:46 | [diff] [blame] | 132 | const std::vector<std::string>& transform_feedback_varyings, |
| 133 | GLenum transform_feedback_buffer_mode, |
dsinclair@chromium.org | e3932abb | 2013-03-13 00:01:37 | [diff] [blame] | 134 | const ShaderCacheCallback& callback)); |
| 135 | MOCK_METHOD1(LoadProgram, void(const std::string&)); |
| 136 | |
dmurph@chromium.org | 65dfc60 | 2012-07-23 20:39:39 | [diff] [blame] | 137 | private: |
| 138 | MOCK_METHOD0(ClearBackend, void()); |
| 139 | }; |
| 140 | |
gman@chromium.org | 739a06e | 2013-01-15 23:25:11 | [diff] [blame] | 141 | class MockMemoryTracker : public MemoryTracker { |
| 142 | public: |
| 143 | MockMemoryTracker(); |
| 144 | |
| 145 | MOCK_METHOD3(TrackMemoryAllocatedChange, void( |
| 146 | size_t old_size, size_t new_size, Pool pool)); |
gman@chromium.org | 7989c9e | 2013-01-23 06:39:26 | [diff] [blame] | 147 | MOCK_METHOD1(EnsureGPUMemoryAvailable, bool(size_t size_needed)); |
ericrk | f08855b4 | 2015-08-06 00:20:22 | [diff] [blame^] | 148 | MOCK_CONST_METHOD0(ClientTracingId, uint64_t()); |
| 149 | MOCK_CONST_METHOD0(ClientId, int()); |
gman@chromium.org | 739a06e | 2013-01-15 23:25:11 | [diff] [blame] | 150 | |
| 151 | private: |
| 152 | friend class ::testing::StrictMock<MockMemoryTracker>; |
| 153 | friend class base::RefCounted< ::testing::StrictMock<MockMemoryTracker> >; |
| 154 | virtual ~MockMemoryTracker(); |
| 155 | }; |
| 156 | |
gman@chromium.org | f57bb28 | 2010-11-12 00:51:34 | [diff] [blame] | 157 | } // namespace gles2 |
apatrick@google.com | a7a27ace | 2009-12-12 00:11:25 | [diff] [blame] | 158 | } // namespace gpu |
apatrick@google.com | 96449d2c | 2009-11-25 00:01:32 | [diff] [blame] | 159 | |
apatrick@google.com | a7a27ace | 2009-12-12 00:11:25 | [diff] [blame] | 160 | #endif // GPU_COMMAND_BUFFER_SERVICE_MOCKS_H_ |