| 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 |