Index: gpu/command_buffer/service/memory_program_cache_unittest.cc |
diff --git a/gpu/command_buffer/service/memory_program_cache_unittest.cc b/gpu/command_buffer/service/memory_program_cache_unittest.cc |
index a1d07fc069af9fd958b0e12acb3780482577bacb..b083552301b360669298385861fb86346a2aea8c 100644 |
--- a/gpu/command_buffer/service/memory_program_cache_unittest.cc |
+++ b/gpu/command_buffer/service/memory_program_cache_unittest.cc |
@@ -204,6 +204,37 @@ TEST_F(MemoryProgramCacheTest, CacheSave) { |
*vertex_shader_->deferred_compilation_source(), |
*fragment_shader_->deferred_compilation_source(), |
NULL)); |
+ EXPECT_EQ(1, shader_cache_count()); |
+} |
+ |
+TEST_F(MemoryProgramCacheTest, LoadProgram) { |
+ const GLenum kFormat = 1; |
+ const int kProgramId = 10; |
+ const int kBinaryLength = 20; |
+ char test_binary[kBinaryLength]; |
+ for (int i = 0; i < kBinaryLength; ++i) { |
+ test_binary[i] = i; |
+ } |
+ ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); |
+ |
+ SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); |
+ cache_->SaveLinkedProgram(kProgramId, vertex_shader_, fragment_shader_, NULL, |
+ base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
+ base::Unretained(this))); |
+ |
+ EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
+ *vertex_shader_->deferred_compilation_source(), |
+ *fragment_shader_->deferred_compilation_source(), |
+ NULL)); |
+ EXPECT_EQ(1, shader_cache_count()); |
+ |
+ cache_->Clear(); |
+ |
+ cache_->LoadProgram(shader_cache_shader()); |
+ EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
+ *vertex_shader_->deferred_compilation_source(), |
+ *fragment_shader_->deferred_compilation_source(), |
+ NULL)); |
} |
TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) { |
@@ -220,6 +251,7 @@ TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) { |
cache_->SaveLinkedProgram(kProgramId, vertex_shader_, fragment_shader_, NULL, |
base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
base::Unretained(this))); |
+ EXPECT_EQ(1, shader_cache_count()); |
VariableMap vertex_attrib_map = vertex_shader_->attrib_map(); |
VariableMap vertex_uniform_map = vertex_shader_->uniform_map(); |
@@ -265,6 +297,7 @@ TEST_F(MemoryProgramCacheTest, LoadProgramMatchesSave) { |
cache_->SaveLinkedProgram(kProgramId, vertex_shader_, fragment_shader_, NULL, |
base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
base::Unretained(this))); |
+ EXPECT_EQ(1, shader_cache_count()); |
VariableMap vertex_attrib_map = vertex_shader_->attrib_map(); |
VariableMap vertex_uniform_map = vertex_shader_->uniform_map(); |
@@ -278,6 +311,9 @@ TEST_F(MemoryProgramCacheTest, LoadProgramMatchesSave) { |
SetExpectationsForLoadLinkedProgram(kProgramId, &emulator); |
+ cache_->Clear(); |
+ cache_->LoadProgram(shader_cache_shader()); |
+ |
EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram( |
kProgramId, |
vertex_shader_, |