OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 #include <stddef.h> |
| 6 #include <stdint.h> |
| 7 |
5 #include "base/bind.h" | 8 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
7 #include "base/threading/thread.h" | 10 #include "base/threading/thread.h" |
8 #include "gpu/command_buffer/common/cmd_buffer_common.h" | 11 #include "gpu/command_buffer/common/cmd_buffer_common.h" |
9 #include "gpu/command_buffer/service/command_buffer_service.h" | 12 #include "gpu/command_buffer/service/command_buffer_service.h" |
10 #include "gpu/command_buffer/service/transfer_buffer_manager.h" | 13 #include "gpu/command_buffer/service/transfer_buffer_manager.h" |
| 14 #include "testing/gmock/include/gmock/gmock.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | |
13 | 16 |
14 using base::SharedMemory; | 17 using base::SharedMemory; |
15 using testing::_; | 18 using testing::_; |
16 using testing::DoAll; | 19 using testing::DoAll; |
17 using testing::Return; | 20 using testing::Return; |
18 using testing::SetArgumentPointee; | 21 using testing::SetArgumentPointee; |
19 using testing::StrictMock; | 22 using testing::StrictMock; |
20 | 23 |
21 namespace gpu { | 24 namespace gpu { |
22 | 25 |
23 class CommandBufferServiceTest : public testing::Test { | 26 class CommandBufferServiceTest : public testing::Test { |
24 protected: | 27 protected: |
25 void SetUp() override { | 28 void SetUp() override { |
26 { | 29 { |
27 TransferBufferManager* manager = new TransferBufferManager(nullptr); | 30 TransferBufferManager* manager = new TransferBufferManager(nullptr); |
28 transfer_buffer_manager_ = manager; | 31 transfer_buffer_manager_ = manager; |
29 EXPECT_TRUE(manager->Initialize()); | 32 EXPECT_TRUE(manager->Initialize()); |
30 } | 33 } |
31 command_buffer_.reset( | 34 command_buffer_.reset( |
32 new CommandBufferService(transfer_buffer_manager_.get())); | 35 new CommandBufferService(transfer_buffer_manager_.get())); |
33 EXPECT_TRUE(command_buffer_->Initialize()); | 36 EXPECT_TRUE(command_buffer_->Initialize()); |
34 } | 37 } |
35 | 38 |
36 int32 GetGetOffset() { | 39 int32_t GetGetOffset() { return command_buffer_->GetLastState().get_offset; } |
37 return command_buffer_->GetLastState().get_offset; | |
38 } | |
39 | 40 |
40 int32 GetPutOffset() { | 41 int32_t GetPutOffset() { return command_buffer_->GetPutOffset(); } |
41 return command_buffer_->GetPutOffset(); | |
42 } | |
43 | 42 |
44 int32 GetToken() { | 43 int32_t GetToken() { return command_buffer_->GetLastState().token; } |
45 return command_buffer_->GetLastState().token; | |
46 } | |
47 | 44 |
48 int32 GetError() { | 45 int32_t GetError() { return command_buffer_->GetLastState().error; } |
49 return command_buffer_->GetLastState().error; | |
50 } | |
51 | 46 |
52 bool Initialize(size_t size) { | 47 bool Initialize(size_t size) { |
53 int32 id; | 48 int32_t id; |
54 command_buffer_->CreateTransferBuffer(size, &id); | 49 command_buffer_->CreateTransferBuffer(size, &id); |
55 EXPECT_GT(id, 0); | 50 EXPECT_GT(id, 0); |
56 command_buffer_->SetGetBuffer(id); | 51 command_buffer_->SetGetBuffer(id); |
57 return true; | 52 return true; |
58 } | 53 } |
59 | 54 |
60 scoped_refptr<TransferBufferManagerInterface> transfer_buffer_manager_; | 55 scoped_refptr<TransferBufferManagerInterface> transfer_buffer_manager_; |
61 scoped_ptr<CommandBufferService> command_buffer_; | 56 scoped_ptr<CommandBufferService> command_buffer_; |
62 }; | 57 }; |
63 | 58 |
64 TEST_F(CommandBufferServiceTest, InitializesCommandBuffer) { | 59 TEST_F(CommandBufferServiceTest, InitializesCommandBuffer) { |
65 EXPECT_TRUE(Initialize(1024)); | 60 EXPECT_TRUE(Initialize(1024)); |
66 CommandBuffer::State state = command_buffer_->GetLastState(); | 61 CommandBuffer::State state = command_buffer_->GetLastState(); |
67 EXPECT_EQ(0, state.get_offset); | 62 EXPECT_EQ(0, state.get_offset); |
68 EXPECT_EQ(0, command_buffer_->GetPutOffset()); | 63 EXPECT_EQ(0, command_buffer_->GetPutOffset()); |
69 EXPECT_EQ(0, state.token); | 64 EXPECT_EQ(0, state.token); |
70 EXPECT_EQ(error::kNoError, state.error); | 65 EXPECT_EQ(error::kNoError, state.error); |
71 } | 66 } |
72 | 67 |
73 namespace { | 68 namespace { |
74 | 69 |
75 class CallbackTest { | 70 class CallbackTest { |
76 public: | 71 public: |
77 virtual void PutOffsetChanged() = 0; | 72 virtual void PutOffsetChanged() = 0; |
78 virtual bool GetBufferChanged(int32 id) = 0; | 73 virtual bool GetBufferChanged(int32_t id) = 0; |
79 }; | 74 }; |
80 | 75 |
81 class MockCallbackTest : public CallbackTest { | 76 class MockCallbackTest : public CallbackTest { |
82 public: | 77 public: |
83 MOCK_METHOD0(PutOffsetChanged, void()); | 78 MOCK_METHOD0(PutOffsetChanged, void()); |
84 MOCK_METHOD1(GetBufferChanged, bool(int32)); | 79 MOCK_METHOD1(GetBufferChanged, bool(int32_t)); |
85 }; | 80 }; |
86 | 81 |
87 } // anonymous namespace | 82 } // anonymous namespace |
88 | 83 |
89 TEST_F(CommandBufferServiceTest, CanSyncGetAndPutOffset) { | 84 TEST_F(CommandBufferServiceTest, CanSyncGetAndPutOffset) { |
90 Initialize(1024); | 85 Initialize(1024); |
91 | 86 |
92 scoped_ptr<StrictMock<MockCallbackTest> > change_callback( | 87 scoped_ptr<StrictMock<MockCallbackTest> > change_callback( |
93 new StrictMock<MockCallbackTest>); | 88 new StrictMock<MockCallbackTest>); |
94 command_buffer_->SetPutOffsetChangeCallback( | 89 command_buffer_->SetPutOffsetChangeCallback( |
(...skipping 16 matching lines...) Expand all Loading... |
111 EXPECT_CALL(*change_callback, PutOffsetChanged()); | 106 EXPECT_CALL(*change_callback, PutOffsetChanged()); |
112 command_buffer_->Flush(6); | 107 command_buffer_->Flush(6); |
113 | 108 |
114 command_buffer_->Flush(-1); | 109 command_buffer_->Flush(-1); |
115 EXPECT_NE(error::kNoError, GetError()); | 110 EXPECT_NE(error::kNoError, GetError()); |
116 command_buffer_->Flush(1024); | 111 command_buffer_->Flush(1024); |
117 EXPECT_NE(error::kNoError, GetError()); | 112 EXPECT_NE(error::kNoError, GetError()); |
118 } | 113 } |
119 | 114 |
120 TEST_F(CommandBufferServiceTest, SetGetBuffer) { | 115 TEST_F(CommandBufferServiceTest, SetGetBuffer) { |
121 int32 ring_buffer_id; | 116 int32_t ring_buffer_id; |
122 command_buffer_->CreateTransferBuffer(1024, &ring_buffer_id); | 117 command_buffer_->CreateTransferBuffer(1024, &ring_buffer_id); |
123 EXPECT_GT(ring_buffer_id, 0); | 118 EXPECT_GT(ring_buffer_id, 0); |
124 | 119 |
125 scoped_ptr<StrictMock<MockCallbackTest> > change_callback( | 120 scoped_ptr<StrictMock<MockCallbackTest> > change_callback( |
126 new StrictMock<MockCallbackTest>); | 121 new StrictMock<MockCallbackTest>); |
127 command_buffer_->SetGetBufferChangeCallback( | 122 command_buffer_->SetGetBufferChangeCallback( |
128 base::Bind( | 123 base::Bind( |
129 &CallbackTest::GetBufferChanged, | 124 &CallbackTest::GetBufferChanged, |
130 base::Unretained(change_callback.get()))); | 125 base::Unretained(change_callback.get()))); |
131 | 126 |
(...skipping 15 matching lines...) Expand all Loading... |
147 | 142 |
148 TEST_F(CommandBufferServiceTest, DefaultParseErrorIsNoError) { | 143 TEST_F(CommandBufferServiceTest, DefaultParseErrorIsNoError) { |
149 EXPECT_EQ(0, GetError()); | 144 EXPECT_EQ(0, GetError()); |
150 } | 145 } |
151 | 146 |
152 TEST_F(CommandBufferServiceTest, CanSetParseError) { | 147 TEST_F(CommandBufferServiceTest, CanSetParseError) { |
153 command_buffer_->SetParseError(error::kInvalidSize); | 148 command_buffer_->SetParseError(error::kInvalidSize); |
154 EXPECT_EQ(1, GetError()); | 149 EXPECT_EQ(1, GetError()); |
155 } | 150 } |
156 } // namespace gpu | 151 } // namespace gpu |
OLD | NEW |