diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 22:41:16 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 22:41:16 +0000 |
commit | d304cbdeccf3db7330c09cb218096a45a2bdc746 (patch) | |
tree | d0b939398f1fe3f4beb1def5fbede824d1dea94d /gpu/command_buffer/service/program_manager_unittest.cc | |
parent | e7f7509f4ab3672f61e6fc5ec6b5ce0b5eefb4a8 (diff) | |
download | chromium_src-d304cbdeccf3db7330c09cb218096a45a2bdc746.zip chromium_src-d304cbdeccf3db7330c09cb218096a45a2bdc746.tar.gz chromium_src-d304cbdeccf3db7330c09cb218096a45a2bdc746.tar.bz2 |
Free the resources used by a context group.
TEST=unit tests
BUG=none
Review URL: http://codereview.chromium.org/2880013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51441 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/program_manager_unittest.cc')
-rw-r--r-- | gpu/command_buffer/service/program_manager_unittest.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/program_manager_unittest.cc b/gpu/command_buffer/service/program_manager_unittest.cc index a3a47d9..3faf14e 100644 --- a/gpu/command_buffer/service/program_manager_unittest.cc +++ b/gpu/command_buffer/service/program_manager_unittest.cc @@ -26,14 +26,23 @@ namespace gles2 { class ProgramManagerTest : public testing::Test { public: ProgramManagerTest() { } + ~ProgramManagerTest() { + manager_.Destroy(false); + } protected: virtual void SetUp() { + gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); + ::gfx::GLInterface::SetGLInterface(gl_.get()); } virtual void TearDown() { + ::gfx::GLInterface::SetGLInterface(NULL); + gl_.reset(); } + // Use StrictMock to make 100% sure we know how GL will be called. + scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; ProgramManager manager_; }; @@ -61,12 +70,34 @@ TEST_F(ProgramManagerTest, Basic) { EXPECT_TRUE(manager_.GetProgramInfo(kClient1Id) == NULL); } +TEST_F(ProgramManagerTest, Destroy) { + const GLuint kClient1Id = 1; + const GLuint kService1Id = 11; + // Check we can create program. + manager_.CreateProgramInfo(kClient1Id, kService1Id); + // Check program got created. + ProgramManager::ProgramInfo* info1 = + manager_.GetProgramInfo(kClient1Id); + ASSERT_TRUE(info1 != NULL); + EXPECT_CALL(*gl_, DeleteProgram(kService1Id)) + .Times(1) + .RetiresOnSaturation(); + manager_.Destroy(true); + // Check the resources were released. + info1 = manager_.GetProgramInfo(kClient1Id); + ASSERT_TRUE(info1 == NULL); +} + class ProgramManagerWithShaderTest : public testing::Test { public: ProgramManagerWithShaderTest() : program_info_(NULL) { } + ~ProgramManagerWithShaderTest() { + manager_.Destroy(false); + } + static const GLint kNumVertexAttribs = 16; static const GLuint kClientProgramId = 123; @@ -410,6 +441,7 @@ TEST_F(ProgramManagerWithShaderTest, AttachDetachShader) { EXPECT_FALSE(program_info->CanLink()); fshader->SetStatus(true, ""); EXPECT_TRUE(program_info->CanLink()); + shader_manager.Destroy(false); } TEST_F(ProgramManagerWithShaderTest, GetUniformLocation) { |