Index: content/common/discardable_shared_memory_heap_unittest.cc |
diff --git a/content/common/discardable_shared_memory_heap_unittest.cc b/content/common/discardable_shared_memory_heap_unittest.cc |
index a5e0861c73bf9383af6d29844c8ddbeeadc462c8..a13604f025ba16147d441a2650be37f50e830e01 100644 |
--- a/content/common/discardable_shared_memory_heap_unittest.cc |
+++ b/content/common/discardable_shared_memory_heap_unittest.cc |
@@ -105,6 +105,31 @@ TEST_F(DiscardableSharedMemoryHeapTest, SplitAndMerge) { |
heap.MergeIntoFreeList(large_span.Pass()); |
} |
+TEST_F(DiscardableSharedMemoryHeapTest, MergeSingleBlockSpan) { |
+ size_t block_size = base::GetPageSize(); |
+ DiscardableSharedMemoryHeap heap(block_size); |
+ |
+ const size_t kBlocks = 6; |
+ size_t memory_size = block_size * kBlocks; |
+ |
+ scoped_ptr<base::DiscardableSharedMemory> memory( |
+ new base::DiscardableSharedMemory); |
+ ASSERT_TRUE(memory->CreateAndMap(memory_size)); |
+ scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span( |
+ heap.Grow(memory.Pass(), memory_size)); |
+ |
+ // Split span into two. |
+ scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover = |
+ heap.Split(new_span.get(), 5); |
+ ASSERT_TRUE(leftover); |
+ |
+ // Merge |new_span| into free list. |
+ heap.MergeIntoFreeList(new_span.Pass()); |
+ |
+ // Merge |leftover| into free list. |
+ heap.MergeIntoFreeList(leftover.Pass()); |
+} |
+ |
TEST_F(DiscardableSharedMemoryHeapTest, Grow) { |
size_t block_size = base::GetPageSize(); |
DiscardableSharedMemoryHeap heap(block_size); |