Index: gpu/command_buffer/client/fenced_allocator_test.cc |
diff --git a/gpu/command_buffer/client/fenced_allocator_test.cc b/gpu/command_buffer/client/fenced_allocator_test.cc |
index 381237bbe48fd4672a1d5c95cab5b7ea20f2cfba..abf8a7f32abadf40763416dd41607c7fa62e5e86 100644 |
--- a/gpu/command_buffer/client/fenced_allocator_test.cc |
+++ b/gpu/command_buffer/client/fenced_allocator_test.cc |
@@ -126,6 +126,54 @@ TEST_F(FencedAllocatorTest, TestBasic) { |
EXPECT_TRUE(allocator_->CheckConsistency()); |
} |
+TEST_F(FencedAllocatorTest, TestAllocZero) { |
+ allocator_->CheckConsistency(); |
+ EXPECT_FALSE(allocator_->InUse()); |
+ |
+ // Checks we can alloc size 0. |
+ FencedAllocator::Offset offset = allocator_->Alloc(0); |
+ EXPECT_FALSE(allocator_->InUse()); |
+ EXPECT_NE(FencedAllocator::kInvalidOffset, offset); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ |
+ // Checks 2 allocations of size 0 are not the same offset. |
+ FencedAllocator::Offset offset2 = allocator_->Alloc(0); |
+ EXPECT_FALSE(allocator_->InUse()); |
+ EXPECT_NE(FencedAllocator::kInvalidOffset, offset2); |
+ EXPECT_NE(offset, offset2); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ |
+ // Allocates all the memory. |
+ unsigned int size = allocator_->GetLargestFreeSize(); |
+ FencedAllocator::Offset offset3 = allocator_->Alloc(size); |
+ EXPECT_TRUE(allocator_->InUse()); |
+ EXPECT_NE(FencedAllocator::kInvalidOffset, offset3); |
+ |
+ // Checks there's no memory left |
+ size = allocator_->GetLargestFreeSize(); |
+ EXPECT_EQ(0u, size); |
+ |
+ // Checks allocations of size 0 still succeed. |
+ FencedAllocator::Offset offset4 = allocator_->Alloc(0); |
+ EXPECT_NE(FencedAllocator::kInvalidOffset, offset3); |
+ EXPECT_NE(offset, offset4); |
+ EXPECT_NE(offset2, offset4); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ |
+ allocator_->Free(offset); |
+ EXPECT_TRUE(allocator_->InUse()); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ allocator_->Free(offset2); |
+ EXPECT_TRUE(allocator_->InUse()); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ allocator_->Free(offset3); |
+ EXPECT_FALSE(allocator_->InUse()); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ allocator_->Free(offset4); |
+ EXPECT_FALSE(allocator_->InUse()); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+} |
+ |
// Checks out-of-memory condition. |
TEST_F(FencedAllocatorTest, TestOutOfMemory) { |
EXPECT_TRUE(allocator_->CheckConsistency()); |
@@ -446,6 +494,24 @@ TEST_F(FencedAllocatorWrapperTest, TestBasic) { |
allocator_->Free(pointer_uint); |
} |
+TEST_F(FencedAllocatorWrapperTest, TestAllocZero) { |
+ allocator_->CheckConsistency(); |
+ |
+ void* ptr = allocator_->Alloc(0); |
+ EXPECT_TRUE(ptr != NULL); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ |
+ void* ptr2 = allocator_->Alloc(0); |
+ EXPECT_TRUE(ptr2 != NULL); |
+ EXPECT_NE(ptr2, ptr); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ |
+ allocator_->Free(ptr); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+ allocator_->Free(ptr2); |
+ EXPECT_TRUE(allocator_->CheckConsistency()); |
+} |
+ |
// Checks out-of-memory condition. |
TEST_F(FencedAllocatorWrapperTest, TestOutOfMemory) { |
allocator_->CheckConsistency(); |