| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 // This file has the unit tests for the IdAllocator class. | 5 // This file has the unit tests for the IdAllocator class. |
| 6 | 6 |
| 7 #include "gpu/command_buffer/common/id_allocator.h" | 7 #include "gpu/command_buffer/common/id_allocator.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 9 |
| 10 namespace gpu { | 10 namespace gpu { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 | 42 |
| 43 // Frees the other ID, check that it's not in use any more. | 43 // Frees the other ID, check that it's not in use any more. |
| 44 allocator->FreeID(id2); | 44 allocator->FreeID(id2); |
| 45 EXPECT_FALSE(allocator->InUse(id2)); | 45 EXPECT_FALSE(allocator->InUse(id2)); |
| 46 } | 46 } |
| 47 | 47 |
| 48 // Checks that the resource IDs are re-used after being freed. | 48 // Checks that the resource IDs are re-used after being freed. |
| 49 TEST_F(IdAllocatorTest, TestAdvanced) { | 49 TEST_F(IdAllocatorTest, TestAdvanced) { |
| 50 IdAllocator *allocator = id_allocator(); | 50 IdAllocator *allocator = id_allocator(); |
| 51 | 51 |
| 52 // Allocate the highest possible ID, to make life awkward. |
| 53 allocator->AllocateIDAtOrAbove(-1); |
| 54 |
| 52 // Allocate a significant number of resources. | 55 // Allocate a significant number of resources. |
| 53 const unsigned int kNumResources = 100; | 56 const unsigned int kNumResources = 100; |
| 54 ResourceId ids[kNumResources]; | 57 ResourceId ids[kNumResources]; |
| 55 for (unsigned int i = 0; i < kNumResources; ++i) { | 58 for (unsigned int i = 0; i < kNumResources; ++i) { |
| 56 ids[i] = allocator->AllocateID(); | 59 ids[i] = allocator->AllocateID(); |
| 57 EXPECT_TRUE(allocator->InUse(ids[i])); | 60 EXPECT_TRUE(allocator->InUse(ids[i])); |
| 58 } | 61 } |
| 59 | 62 |
| 60 // Check that a new allocation re-uses the resource we just freed. | 63 // Check that a new allocation re-uses the resource we just freed. |
| 61 ResourceId id1 = ids[kNumResources / 2]; | 64 ResourceId id1 = ids[kNumResources / 2]; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 88 const ResourceId kOffset = 123456; | 91 const ResourceId kOffset = 123456; |
| 89 IdAllocator* allocator = id_allocator(); | 92 IdAllocator* allocator = id_allocator(); |
| 90 ResourceId id1 = allocator->AllocateIDAtOrAbove(kOffset); | 93 ResourceId id1 = allocator->AllocateIDAtOrAbove(kOffset); |
| 91 EXPECT_EQ(kOffset, id1); | 94 EXPECT_EQ(kOffset, id1); |
| 92 ResourceId id2 = allocator->AllocateIDAtOrAbove(kOffset); | 95 ResourceId id2 = allocator->AllocateIDAtOrAbove(kOffset); |
| 93 EXPECT_GT(id2, kOffset); | 96 EXPECT_GT(id2, kOffset); |
| 94 ResourceId id3 = allocator->AllocateIDAtOrAbove(kOffset); | 97 ResourceId id3 = allocator->AllocateIDAtOrAbove(kOffset); |
| 95 EXPECT_GT(id3, kOffset); | 98 EXPECT_GT(id3, kOffset); |
| 96 } | 99 } |
| 97 | 100 |
| 101 // Checks that AllocateIdAtOrAbove wraps around at the maximum 32-bit value. |
| 102 TEST_F(IdAllocatorTest, AllocateIdAtOrAboveWrapsAround) { |
| 103 const ResourceId kMaxPossibleOffset = -1; |
| 104 IdAllocator* allocator = id_allocator(); |
| 105 ResourceId id1 = allocator->AllocateIDAtOrAbove(kMaxPossibleOffset); |
| 106 EXPECT_EQ(kMaxPossibleOffset, id1); |
| 107 ResourceId id2 = allocator->AllocateIDAtOrAbove(kMaxPossibleOffset); |
| 108 EXPECT_EQ(1u, id2); |
| 109 ResourceId id3 = allocator->AllocateIDAtOrAbove(kMaxPossibleOffset); |
| 110 EXPECT_EQ(2u, id3); |
| 111 } |
| 112 |
| 98 } // namespace gpu | 113 } // namespace gpu |
| OLD | NEW |