OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 allocator->FreeID(1); | 158 allocator->FreeID(1); |
159 allocator->FreeID(15); | 159 allocator->FreeID(15); |
160 allocator->FreeIDRange(2, 107); | 160 allocator->FreeIDRange(2, 107); |
161 ResourceId id11 = allocator->AllocateIDRange(100); | 161 ResourceId id11 = allocator->AllocateIDRange(100); |
162 EXPECT_EQ(1u, id11); | 162 EXPECT_EQ(1u, id11); |
163 allocator->FreeID(kMaxPossibleOffset); | 163 allocator->FreeID(kMaxPossibleOffset); |
164 ResourceId id12 = allocator->AllocateIDRange(100); | 164 ResourceId id12 = allocator->AllocateIDRange(100); |
165 EXPECT_EQ(101u, id12); | 165 EXPECT_EQ(101u, id12); |
166 | 166 |
167 ResourceId id13 = allocator->AllocateIDAtOrAbove(kMaxPossibleOffset - 2u); | 167 ResourceId id13 = allocator->AllocateIDAtOrAbove(kMaxPossibleOffset - 2u); |
168 EXPECT_EQ(kMaxPossibleOffset, id13); | 168 EXPECT_EQ(kMaxPossibleOffset - 2u, id13); |
169 ResourceId id14 = allocator->AllocateIDRange(3); | 169 ResourceId id14 = allocator->AllocateIDRange(3); |
170 EXPECT_EQ(201u, id14); | 170 EXPECT_EQ(201u, id14); |
171 } | 171 } |
172 | 172 |
173 TEST_F(IdAllocatorTest, AllocateIDRangeNoWrapInRange) { | 173 TEST_F(IdAllocatorTest, AllocateIDRangeEndNoEffect) { |
174 const ResourceId kMaxPossibleOffset = ~static_cast<ResourceId>(0); | 174 const ResourceId kMaxPossibleOffset = ~static_cast<ResourceId>(0); |
175 | 175 |
176 IdAllocator* allocator = id_allocator(); | 176 IdAllocator* allocator = id_allocator(); |
177 ResourceId id1 = allocator->AllocateIDAtOrAbove(kMaxPossibleOffset - 2u); | 177 ResourceId id1 = allocator->AllocateIDAtOrAbove(kMaxPossibleOffset - 2u); |
178 EXPECT_EQ(kMaxPossibleOffset - 2u, id1); | 178 EXPECT_EQ(kMaxPossibleOffset - 2u, id1); |
179 ResourceId id3 = allocator->AllocateIDRange(3); | 179 ResourceId id3 = allocator->AllocateIDRange(3); |
180 EXPECT_EQ(1u, id3); | 180 EXPECT_EQ(1u, id3); |
181 ResourceId id2 = allocator->AllocateIDRange(2); | 181 ResourceId id2 = allocator->AllocateIDRange(2); |
182 EXPECT_EQ(kMaxPossibleOffset - 1, id2); | 182 EXPECT_EQ(4u, id2); |
| 183 } |
| 184 |
| 185 TEST_F(IdAllocatorTest, AllocateFullIDRange) { |
| 186 const uint32_t kMaxPossibleRange = ~static_cast<uint32_t>(0u); |
| 187 const ResourceId kFreedId = 555u; |
| 188 IdAllocator* allocator = id_allocator(); |
| 189 |
| 190 ResourceId id1 = allocator->AllocateIDRange(kMaxPossibleRange); |
| 191 EXPECT_EQ(1u, id1); |
| 192 ResourceId id2 = allocator->AllocateID(); |
| 193 EXPECT_EQ(0u, id2); |
| 194 allocator->FreeID(kFreedId); |
| 195 ResourceId id3 = allocator->AllocateID(); |
| 196 EXPECT_EQ(kFreedId, id3); |
| 197 ResourceId id4 = allocator->AllocateID(); |
| 198 EXPECT_EQ(0u, id4); |
| 199 allocator->FreeID(kFreedId + 1u); |
| 200 allocator->FreeID(kFreedId + 3u); |
| 201 allocator->FreeID(kFreedId + 2u); |
| 202 allocator->FreeID(kFreedId + 5u); |
| 203 allocator->FreeID(kFreedId + 4u); |
| 204 ResourceId id5 = allocator->AllocateIDRange(5); |
| 205 EXPECT_EQ(kFreedId + 1u, id5); |
| 206 } |
| 207 |
| 208 TEST_F(IdAllocatorTest, AllocateIDRangeNoWrapInRange) { |
| 209 const uint32_t kMaxPossibleRange = ~static_cast<uint32_t>(0u); |
| 210 const ResourceId kAllocId = 10u; |
| 211 IdAllocator* allocator = id_allocator(); |
| 212 |
| 213 ResourceId id1 = allocator->AllocateIDAtOrAbove(kAllocId); |
| 214 EXPECT_EQ(kAllocId, id1); |
| 215 ResourceId id2 = allocator->AllocateIDRange(kMaxPossibleRange - 5u); |
| 216 EXPECT_EQ(0u, id2); |
| 217 } |
| 218 TEST_F(IdAllocatorTest, AllocateIdMax) { |
| 219 IdAllocator* allocator = id_allocator(); |
| 220 ResourceId id = |
| 221 allocator->AllocateIDRange(std::numeric_limits<uint32_t>::max()); |
| 222 EXPECT_EQ(1u, id); |
| 223 allocator->FreeIDRange(id, std::numeric_limits<uint32_t>::max() - 1u); |
| 224 ResourceId id2 = |
| 225 allocator->AllocateIDRange(std::numeric_limits<uint32_t>::max()); |
| 226 EXPECT_EQ(0u, id2); |
| 227 allocator->FreeIDRange(id, std::numeric_limits<uint32_t>::max()); |
| 228 ResourceId id3 = |
| 229 allocator->AllocateIDRange(std::numeric_limits<uint32_t>::max()); |
| 230 EXPECT_EQ(1u, id3); |
183 } | 231 } |
184 | 232 |
185 } // namespace gpu | 233 } // namespace gpu |
OLD | NEW |