diff options
Diffstat (limited to 'gpu/command_buffer/client/client_test_helper.cc')
-rw-r--r-- | gpu/command_buffer/client/client_test_helper.cc | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/gpu/command_buffer/client/client_test_helper.cc b/gpu/command_buffer/client/client_test_helper.cc new file mode 100644 index 0000000..e6ddfad --- /dev/null +++ b/gpu/command_buffer/client/client_test_helper.cc @@ -0,0 +1,138 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Tests for GLES2Implementation. + +#include "gpu/command_buffer/client/client_test_helper.h" + +#include "gpu/command_buffer/common/command_buffer.h" +#include "gpu/command_buffer/client/cmd_buffer_helper.h" +#include "testing/gmock/include/gmock/gmock.h" + +using ::testing::_; +using ::testing::Invoke; + +namespace gpu { + +MockCommandBufferBase::~MockCommandBufferBase() { +} + +bool MockCommandBufferBase::Initialize() { + return true; +} + +CommandBuffer::State MockCommandBufferBase::GetState() { + return state_; +} + +CommandBuffer::State MockCommandBufferBase::GetLastState() { + return state_; +} + +void MockCommandBufferBase::Flush(int32 put_offset) { + state_.put_offset = put_offset; +} + +void MockCommandBufferBase::SetGetOffset(int32 get_offset) { + state_.get_offset = get_offset; +} + +CommandBuffer::State MockCommandBufferBase::FlushSync( + int32 put_offset, int32 last_known_get) { + state_.put_offset = put_offset; + state_.get_offset = put_offset; + OnFlush(); + return state_; +} + +void MockCommandBufferBase::SetGetBuffer(int transfer_buffer_id) { + ring_buffer_buffer_ = GetTransferBuffer(transfer_buffer_id); + ring_buffer_ = static_cast<CommandBufferEntry*>(ring_buffer_buffer_.ptr); + state_.num_entries = ring_buffer_buffer_.size / sizeof(ring_buffer_[0]); + state_.token = 10000; // All token checks in the tests should pass. +} + +// Get's the Id of the next transfer buffer that will be returned +// by CreateTransferBuffer. This is useful for testing expected ids. +int32 MockCommandBufferBase::GetNextFreeTransferBufferId() { + for (size_t ii = 0; ii < arraysize(transfer_buffers_); ++ii) { + if (!transfer_buffers_[ii].get()) { + return kTransferBufferBaseId + ii; + } + } + return -1; +} + +int32 MockCommandBufferBase::CreateTransferBuffer( + size_t size, int32 id_request) { + int32 id = GetNextFreeTransferBufferId(); + if (id >= 0) { + int32 ndx = id - kTransferBufferBaseId; + transfer_buffers_[ndx].reset(new int8[size]); + transfer_buffer_buffers_[ndx].ptr = transfer_buffers_[ndx].get(); + transfer_buffer_buffers_[ndx].size = size; + } + return id; +} + +void MockCommandBufferBase::DestroyTransferBufferHelper(int32 id) { + GPU_DCHECK_GE(id, kTransferBufferBaseId); + GPU_DCHECK_LT(id, kTransferBufferBaseId + kMaxTransferBuffers); + id -= kTransferBufferBaseId; + transfer_buffers_[id].reset(); + transfer_buffer_buffers_[id] = Buffer(); +} + +Buffer MockCommandBufferBase::GetTransferBuffer(int32 id) { + GPU_DCHECK_GE(id, kTransferBufferBaseId); + GPU_DCHECK_LT(id, kTransferBufferBaseId + kMaxTransferBuffers); + return transfer_buffer_buffers_[id - kTransferBufferBaseId]; +} + +int32 MockCommandBufferBase::RegisterTransferBuffer( + base::SharedMemory* shared_memory, + size_t size, + int32 id_request) { + GPU_NOTREACHED(); + return -1; +} + +void MockCommandBufferBase::SetToken(int32 token) { + GPU_NOTREACHED(); + state_.token = token; +} + +void MockCommandBufferBase::SetParseError(error::Error error) { + GPU_NOTREACHED(); + state_.error = error; +} + +void MockCommandBufferBase::SetContextLostReason( + error::ContextLostReason reason) { + GPU_NOTREACHED(); + state_.context_lost_reason = reason; +} + +// GCC requires these declarations, but MSVC requires they not be present +#ifndef _MSC_VER +const int32 MockCommandBufferBase::kTransferBufferBaseId; +const int32 MockCommandBufferBase::kMaxTransferBuffers; +#endif + +MockClientCommandBuffer::MockClientCommandBuffer() { + DelegateToFake(); +} + +MockClientCommandBuffer::~MockClientCommandBuffer() { +} + +void MockClientCommandBuffer::DelegateToFake() { + ON_CALL(*this, DestroyTransferBuffer(_)) + .WillByDefault(Invoke( + this, &MockCommandBufferBase::DestroyTransferBufferHelper)); +} + +} // namespace gpu + + |