OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "gpu/command_buffer/service/buffer_manager.h" | 5 #include "gpu/command_buffer/service/buffer_manager.h" |
| 6 #include "app/gfx/gl/gl_mock.h" |
6 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
7 | 8 |
8 namespace gpu { | 9 namespace gpu { |
9 namespace gles2 { | 10 namespace gles2 { |
10 | 11 |
11 class BufferManagerTest : public testing::Test { | 12 class BufferManagerTest : public testing::Test { |
12 public: | 13 public: |
13 BufferManagerTest() { | 14 BufferManagerTest() { |
14 } | 15 } |
| 16 ~BufferManagerTest() { |
| 17 manager_.Destroy(false); |
| 18 } |
15 | 19 |
16 protected: | 20 protected: |
17 virtual void SetUp() { | 21 virtual void SetUp() { |
| 22 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); |
| 23 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
18 } | 24 } |
19 | 25 |
20 virtual void TearDown() { | 26 virtual void TearDown() { |
| 27 ::gfx::GLInterface::SetGLInterface(NULL); |
| 28 gl_.reset(); |
21 } | 29 } |
22 | 30 |
23 GLenum GetTarget(const BufferManager::BufferInfo* info) const { | 31 GLenum GetTarget(const BufferManager::BufferInfo* info) const { |
24 return info->target(); | 32 return info->target(); |
25 } | 33 } |
26 | 34 |
| 35 // Use StrictMock to make 100% sure we know how GL will be called. |
| 36 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; |
27 BufferManager manager_; | 37 BufferManager manager_; |
28 }; | 38 }; |
29 | 39 |
30 TEST_F(BufferManagerTest, Basic) { | 40 TEST_F(BufferManagerTest, Basic) { |
31 const GLuint kClientBuffer1Id = 1; | 41 const GLuint kClientBuffer1Id = 1; |
32 const GLuint kServiceBuffer1Id = 11; | 42 const GLuint kServiceBuffer1Id = 11; |
33 const GLsizeiptr kBuffer1Size = 123; | 43 const GLsizeiptr kBuffer1Size = 123; |
34 const GLuint kClientBuffer2Id = 2; | 44 const GLuint kClientBuffer2Id = 2; |
35 // Check we can create buffer. | 45 // Check we can create buffer. |
36 manager_.CreateBufferInfo(kClientBuffer1Id, kServiceBuffer1Id); | 46 manager_.CreateBufferInfo(kClientBuffer1Id, kServiceBuffer1Id); |
(...skipping 14 matching lines...) Expand all Loading... |
51 EXPECT_EQ(kBuffer1Size, info1->size()); | 61 EXPECT_EQ(kBuffer1Size, info1->size()); |
52 // Check we get nothing for a non-existent buffer. | 62 // Check we get nothing for a non-existent buffer. |
53 EXPECT_TRUE(manager_.GetBufferInfo(kClientBuffer2Id) == NULL); | 63 EXPECT_TRUE(manager_.GetBufferInfo(kClientBuffer2Id) == NULL); |
54 // Check trying to a remove non-existent buffers does not crash. | 64 // Check trying to a remove non-existent buffers does not crash. |
55 manager_.RemoveBufferInfo(kClientBuffer2Id); | 65 manager_.RemoveBufferInfo(kClientBuffer2Id); |
56 // Check we can't get the buffer after we remove it. | 66 // Check we can't get the buffer after we remove it. |
57 manager_.RemoveBufferInfo(kClientBuffer1Id); | 67 manager_.RemoveBufferInfo(kClientBuffer1Id); |
58 EXPECT_TRUE(manager_.GetBufferInfo(kClientBuffer1Id) == NULL); | 68 EXPECT_TRUE(manager_.GetBufferInfo(kClientBuffer1Id) == NULL); |
59 } | 69 } |
60 | 70 |
| 71 TEST_F(BufferManagerTest, Destroy) { |
| 72 const GLuint kClient1Id = 1; |
| 73 const GLuint kService1Id = 11; |
| 74 // Check we can create buffer. |
| 75 manager_.CreateBufferInfo(kClient1Id, kService1Id); |
| 76 // Check buffer got created. |
| 77 BufferManager::BufferInfo* info1 = |
| 78 manager_.GetBufferInfo(kClient1Id); |
| 79 ASSERT_TRUE(info1 != NULL); |
| 80 EXPECT_CALL(*gl_, DeleteBuffersARB(1, ::testing::Pointee(kService1Id))) |
| 81 .Times(1) |
| 82 .RetiresOnSaturation(); |
| 83 manager_.Destroy(true); |
| 84 // Check the resources were released. |
| 85 info1 = manager_.GetBufferInfo(kClient1Id); |
| 86 ASSERT_TRUE(info1 == NULL); |
| 87 } |
| 88 |
61 TEST_F(BufferManagerTest, SetRange) { | 89 TEST_F(BufferManagerTest, SetRange) { |
62 const GLuint kClientBufferId = 1; | 90 const GLuint kClientBufferId = 1; |
63 const GLuint kServiceBufferId = 11; | 91 const GLuint kServiceBufferId = 11; |
64 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; | 92 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; |
65 manager_.CreateBufferInfo(kClientBufferId, kServiceBufferId); | 93 manager_.CreateBufferInfo(kClientBufferId, kServiceBufferId); |
66 BufferManager::BufferInfo* info = manager_.GetBufferInfo(kClientBufferId); | 94 BufferManager::BufferInfo* info = manager_.GetBufferInfo(kClientBufferId); |
67 ASSERT_TRUE(info != NULL); | 95 ASSERT_TRUE(info != NULL); |
68 manager_.SetTarget(info, GL_ELEMENT_ARRAY_BUFFER); | 96 manager_.SetTarget(info, GL_ELEMENT_ARRAY_BUFFER); |
69 manager_.SetSize(info, sizeof(data)); | 97 manager_.SetSize(info, sizeof(data)); |
70 EXPECT_TRUE(info->SetRange(0, sizeof(data), data)); | 98 EXPECT_TRUE(info->SetRange(0, sizeof(data), data)); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 EXPECT_EQ(120u, max_value); | 194 EXPECT_EQ(120u, max_value); |
167 // Check out of range fails. | 195 // Check out of range fails. |
168 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_INT, &max_value)); | 196 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_INT, &max_value)); |
169 EXPECT_FALSE(info->GetMaxValueForRange(40, 1, GL_UNSIGNED_INT, &max_value)); | 197 EXPECT_FALSE(info->GetMaxValueForRange(40, 1, GL_UNSIGNED_INT, &max_value)); |
170 } | 198 } |
171 | 199 |
172 } // namespace gles2 | 200 } // namespace gles2 |
173 } // namespace gpu | 201 } // namespace gpu |
174 | 202 |
175 | 203 |
OLD | NEW |