client_test_helper.cc revision 3551c9c881056c480085172ff9840cab31610854
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.
4
5// Tests for GLES2Implementation.
6
7#include "gpu/command_buffer/client/client_test_helper.h"
8
9#include "gpu/command_buffer/common/command_buffer.h"
10#include "gpu/command_buffer/client/cmd_buffer_helper.h"
11#include "testing/gmock/include/gmock/gmock.h"
12
13using ::testing::_;
14using ::testing::Invoke;
15
16namespace gpu {
17
18MockCommandBufferBase::~MockCommandBufferBase() {
19}
20
21bool MockCommandBufferBase::Initialize() {
22  return true;
23}
24
25CommandBuffer::State MockCommandBufferBase::GetState() {
26  return state_;
27}
28
29CommandBuffer::State MockCommandBufferBase::GetLastState() {
30  return state_;
31}
32
33int32 MockCommandBufferBase::GetLastToken() {
34  return state_.token;
35}
36
37void MockCommandBufferBase::SetGetOffset(int32 get_offset) {
38  state_.get_offset = get_offset;
39}
40
41CommandBuffer::State MockCommandBufferBase::FlushSync(
42    int32 put_offset, int32 last_known_get) {
43  state_.put_offset = put_offset;
44  state_.get_offset = put_offset;
45  OnFlush();
46  return state_;
47}
48
49void MockCommandBufferBase::SetGetBuffer(int transfer_buffer_id) {
50  ring_buffer_buffer_ = GetTransferBuffer(transfer_buffer_id);
51  ring_buffer_ = static_cast<CommandBufferEntry*>(ring_buffer_buffer_.ptr);
52  state_.num_entries = ring_buffer_buffer_.size / sizeof(ring_buffer_[0]);
53  state_.token = 10000;  // All token checks in the tests should pass.
54}
55
56// Get's the Id of the next transfer buffer that will be returned
57// by CreateTransferBuffer. This is useful for testing expected ids.
58int32 MockCommandBufferBase::GetNextFreeTransferBufferId() {
59  for (size_t ii = 0; ii < arraysize(transfer_buffers_); ++ii) {
60    if (!transfer_buffers_[ii].get()) {
61      return kTransferBufferBaseId + ii;
62    }
63  }
64  return -1;
65}
66
67Buffer MockCommandBufferBase::CreateTransferBuffer(size_t size, int32* id) {
68  *id = GetNextFreeTransferBufferId();
69  if (*id >= 0) {
70    int32 ndx = *id - kTransferBufferBaseId;
71    transfer_buffers_[ndx].reset(new int8[size]);
72    transfer_buffer_buffers_[ndx].ptr = transfer_buffers_[ndx].get();
73    transfer_buffer_buffers_[ndx].size = size;
74  }
75  return GetTransferBuffer(*id);
76}
77
78void MockCommandBufferBase::DestroyTransferBufferHelper(int32 id) {
79  GPU_DCHECK_GE(id, kTransferBufferBaseId);
80  GPU_DCHECK_LT(id, kTransferBufferBaseId + kMaxTransferBuffers);
81  id -= kTransferBufferBaseId;
82  transfer_buffers_[id].reset();
83  transfer_buffer_buffers_[id] = Buffer();
84}
85
86Buffer MockCommandBufferBase::GetTransferBuffer(int32 id) {
87  GPU_DCHECK_GE(id, kTransferBufferBaseId);
88  GPU_DCHECK_LT(id, kTransferBufferBaseId + kMaxTransferBuffers);
89  return transfer_buffer_buffers_[id - kTransferBufferBaseId];
90}
91
92void MockCommandBufferBase::FlushHelper(int32 put_offset) {
93  state_.put_offset = put_offset;
94}
95
96void MockCommandBufferBase::SetToken(int32 token) {
97  GPU_NOTREACHED();
98  state_.token = token;
99}
100
101void MockCommandBufferBase::SetParseError(error::Error error) {
102  GPU_NOTREACHED();
103  state_.error = error;
104}
105
106void MockCommandBufferBase::SetContextLostReason(
107    error::ContextLostReason reason) {
108  GPU_NOTREACHED();
109  state_.context_lost_reason = reason;
110}
111
112uint32 MockCommandBufferBase::InsertSyncPoint() {
113  GPU_NOTREACHED();
114  return 0;
115}
116
117// GCC requires these declarations, but MSVC requires they not be present
118#ifndef _MSC_VER
119const int32 MockCommandBufferBase::kTransferBufferBaseId;
120const int32 MockCommandBufferBase::kMaxTransferBuffers;
121#endif
122
123MockClientCommandBuffer::MockClientCommandBuffer() {
124  DelegateToFake();
125}
126
127MockClientCommandBuffer::~MockClientCommandBuffer() {
128}
129
130void MockClientCommandBuffer::Flush(int32 put_offset) {
131  FlushHelper(put_offset);
132}
133
134void MockClientCommandBuffer::DelegateToFake() {
135  ON_CALL(*this, DestroyTransferBuffer(_))
136      .WillByDefault(Invoke(
137          this, &MockCommandBufferBase::DestroyTransferBufferHelper));
138}
139
140MockClientCommandBufferMockFlush::MockClientCommandBufferMockFlush() {
141  DelegateToFake();
142}
143
144MockClientCommandBufferMockFlush::~MockClientCommandBufferMockFlush() {
145}
146
147void MockClientCommandBufferMockFlush::DelegateToFake() {
148  MockClientCommandBuffer::DelegateToFake();
149  ON_CALL(*this, Flush(_))
150      .WillByDefault(Invoke(
151          this, &MockCommandBufferBase::FlushHelper));
152}
153
154MockClientGpuControl::MockClientGpuControl() {
155}
156
157MockClientGpuControl::~MockClientGpuControl() {
158}
159
160}  // namespace gpu
161
162
163