Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Side by Side Diff: gpu/command_buffer/service/buffer_manager_unittest.cc

Issue 2880013: Free the resources used by a context group. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/buffer_manager.cc ('k') | gpu/command_buffer/service/context_group.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698