| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 }; | 172 }; |
| 173 | 173 |
| 174 template <typename OwnPtrDeque> | 174 template <typename OwnPtrDeque> |
| 175 void ownPtrTest() { | 175 void ownPtrTest() { |
| 176 int destructNumber = 0; | 176 int destructNumber = 0; |
| 177 OwnPtrDeque deque; | 177 OwnPtrDeque deque; |
| 178 deque.push_back(WTF::wrapUnique(new DestructCounter(0, &destructNumber))); | 178 deque.push_back(WTF::wrapUnique(new DestructCounter(0, &destructNumber))); |
| 179 deque.push_back(WTF::wrapUnique(new DestructCounter(1, &destructNumber))); | 179 deque.push_back(WTF::wrapUnique(new DestructCounter(1, &destructNumber))); |
| 180 EXPECT_EQ(2u, deque.size()); | 180 EXPECT_EQ(2u, deque.size()); |
| 181 | 181 |
| 182 std::unique_ptr<DestructCounter>& counter0 = deque.first(); | 182 std::unique_ptr<DestructCounter>& counter0 = deque.front(); |
| 183 EXPECT_EQ(0, counter0->get()); | 183 EXPECT_EQ(0, counter0->get()); |
| 184 int counter1 = deque.last()->get(); | 184 int counter1 = deque.last()->get(); |
| 185 EXPECT_EQ(1, counter1); | 185 EXPECT_EQ(1, counter1); |
| 186 EXPECT_EQ(0, destructNumber); | 186 EXPECT_EQ(0, destructNumber); |
| 187 | 187 |
| 188 size_t index = 0; | 188 size_t index = 0; |
| 189 for (auto iter = deque.begin(); iter != deque.end(); ++iter) { | 189 for (auto iter = deque.begin(); iter != deque.end(); ++iter) { |
| 190 std::unique_ptr<DestructCounter>& refCounter = *iter; | 190 std::unique_ptr<DestructCounter>& refCounter = *iter; |
| 191 EXPECT_EQ(index, static_cast<size_t>(refCounter->get())); | 191 EXPECT_EQ(index, static_cast<size_t>(refCounter->get())); |
| 192 EXPECT_EQ(index, static_cast<size_t>((*refCounter).get())); | 192 EXPECT_EQ(index, static_cast<size_t>((*refCounter).get())); |
| 193 index++; | 193 index++; |
| 194 } | 194 } |
| 195 EXPECT_EQ(0, destructNumber); | 195 EXPECT_EQ(0, destructNumber); |
| 196 | 196 |
| 197 auto it = deque.begin(); | 197 auto it = deque.begin(); |
| 198 for (index = 0; index < deque.size(); ++index) { | 198 for (index = 0; index < deque.size(); ++index) { |
| 199 std::unique_ptr<DestructCounter>& refCounter = *it; | 199 std::unique_ptr<DestructCounter>& refCounter = *it; |
| 200 EXPECT_EQ(index, static_cast<size_t>(refCounter->get())); | 200 EXPECT_EQ(index, static_cast<size_t>(refCounter->get())); |
| 201 index++; | 201 index++; |
| 202 ++it; | 202 ++it; |
| 203 } | 203 } |
| 204 EXPECT_EQ(0, destructNumber); | 204 EXPECT_EQ(0, destructNumber); |
| 205 | 205 |
| 206 EXPECT_EQ(0, deque.first()->get()); | 206 EXPECT_EQ(0, deque.front()->get()); |
| 207 deque.pop_front(); | 207 deque.pop_front(); |
| 208 EXPECT_EQ(1, deque.first()->get()); | 208 EXPECT_EQ(1, deque.front()->get()); |
| 209 EXPECT_EQ(1u, deque.size()); | 209 EXPECT_EQ(1u, deque.size()); |
| 210 EXPECT_EQ(1, destructNumber); | 210 EXPECT_EQ(1, destructNumber); |
| 211 | 211 |
| 212 std::unique_ptr<DestructCounter> ownCounter1 = std::move(deque.first()); | 212 std::unique_ptr<DestructCounter> ownCounter1 = std::move(deque.front()); |
| 213 deque.pop_front(); | 213 deque.pop_front(); |
| 214 EXPECT_EQ(counter1, ownCounter1->get()); | 214 EXPECT_EQ(counter1, ownCounter1->get()); |
| 215 EXPECT_EQ(0u, deque.size()); | 215 EXPECT_EQ(0u, deque.size()); |
| 216 EXPECT_EQ(1, destructNumber); | 216 EXPECT_EQ(1, destructNumber); |
| 217 | 217 |
| 218 ownCounter1.reset(); | 218 ownCounter1.reset(); |
| 219 EXPECT_EQ(2, destructNumber); | 219 EXPECT_EQ(2, destructNumber); |
| 220 | 220 |
| 221 size_t count = 1025; | 221 size_t count = 1025; |
| 222 destructNumber = 0; | 222 destructNumber = 0; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 WTF_MAKE_NONCOPYABLE(MoveOnly); | 262 WTF_MAKE_NONCOPYABLE(MoveOnly); |
| 263 int m_i; | 263 int m_i; |
| 264 }; | 264 }; |
| 265 | 265 |
| 266 TEST(DequeTest, MoveOnlyType) { | 266 TEST(DequeTest, MoveOnlyType) { |
| 267 Deque<MoveOnly> deque; | 267 Deque<MoveOnly> deque; |
| 268 deque.push_back(MoveOnly(1)); | 268 deque.push_back(MoveOnly(1)); |
| 269 deque.push_back(MoveOnly(2)); | 269 deque.push_back(MoveOnly(2)); |
| 270 EXPECT_EQ(2u, deque.size()); | 270 EXPECT_EQ(2u, deque.size()); |
| 271 | 271 |
| 272 ASSERT_EQ(1, deque.first().value()); | 272 ASSERT_EQ(1, deque.front().value()); |
| 273 ASSERT_EQ(2, deque.last().value()); | 273 ASSERT_EQ(2, deque.last().value()); |
| 274 | 274 |
| 275 MoveOnly oldFirst = deque.takeFirst(); | 275 MoveOnly oldFirst = deque.takeFirst(); |
| 276 ASSERT_EQ(1, oldFirst.value()); | 276 ASSERT_EQ(1, oldFirst.value()); |
| 277 EXPECT_EQ(1u, deque.size()); | 277 EXPECT_EQ(1u, deque.size()); |
| 278 | 278 |
| 279 Deque<MoveOnly> otherDeque; | 279 Deque<MoveOnly> otherDeque; |
| 280 deque.swap(otherDeque); | 280 deque.swap(otherDeque); |
| 281 EXPECT_EQ(1u, otherDeque.size()); | 281 EXPECT_EQ(1u, otherDeque.size()); |
| 282 EXPECT_EQ(0u, deque.size()); | 282 EXPECT_EQ(0u, deque.size()); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 void swapWithOrWithoutInlineCapacity() { | 318 void swapWithOrWithoutInlineCapacity() { |
| 319 Deque<WrappedInt, inlineCapacity> dequeA; | 319 Deque<WrappedInt, inlineCapacity> dequeA; |
| 320 dequeA.push_back(WrappedInt(1)); | 320 dequeA.push_back(WrappedInt(1)); |
| 321 Deque<WrappedInt, inlineCapacity> dequeB; | 321 Deque<WrappedInt, inlineCapacity> dequeB; |
| 322 dequeB.push_back(WrappedInt(2)); | 322 dequeB.push_back(WrappedInt(2)); |
| 323 | 323 |
| 324 ASSERT_EQ(dequeA.size(), dequeB.size()); | 324 ASSERT_EQ(dequeA.size(), dequeB.size()); |
| 325 dequeA.swap(dequeB); | 325 dequeA.swap(dequeB); |
| 326 | 326 |
| 327 ASSERT_EQ(1u, dequeA.size()); | 327 ASSERT_EQ(1u, dequeA.size()); |
| 328 EXPECT_EQ(2, dequeA.first().get()); | 328 EXPECT_EQ(2, dequeA.front().get()); |
| 329 ASSERT_EQ(1u, dequeB.size()); | 329 ASSERT_EQ(1u, dequeB.size()); |
| 330 EXPECT_EQ(1, dequeB.first().get()); | 330 EXPECT_EQ(1, dequeB.front().get()); |
| 331 | 331 |
| 332 dequeA.push_back(WrappedInt(3)); | 332 dequeA.push_back(WrappedInt(3)); |
| 333 | 333 |
| 334 ASSERT_GT(dequeA.size(), dequeB.size()); | 334 ASSERT_GT(dequeA.size(), dequeB.size()); |
| 335 dequeA.swap(dequeB); | 335 dequeA.swap(dequeB); |
| 336 | 336 |
| 337 ASSERT_EQ(1u, dequeA.size()); | 337 ASSERT_EQ(1u, dequeA.size()); |
| 338 EXPECT_EQ(1, dequeA.first().get()); | 338 EXPECT_EQ(1, dequeA.front().get()); |
| 339 ASSERT_EQ(2u, dequeB.size()); | 339 ASSERT_EQ(2u, dequeB.size()); |
| 340 EXPECT_EQ(2, dequeB.first().get()); | 340 EXPECT_EQ(2, dequeB.front().get()); |
| 341 | 341 |
| 342 ASSERT_LT(dequeA.size(), dequeB.size()); | 342 ASSERT_LT(dequeA.size(), dequeB.size()); |
| 343 dequeA.swap(dequeB); | 343 dequeA.swap(dequeB); |
| 344 | 344 |
| 345 ASSERT_EQ(2u, dequeA.size()); | 345 ASSERT_EQ(2u, dequeA.size()); |
| 346 EXPECT_EQ(2, dequeA.first().get()); | 346 EXPECT_EQ(2, dequeA.front().get()); |
| 347 ASSERT_EQ(1u, dequeB.size()); | 347 ASSERT_EQ(1u, dequeB.size()); |
| 348 EXPECT_EQ(1, dequeB.first().get()); | 348 EXPECT_EQ(1, dequeB.front().get()); |
| 349 | 349 |
| 350 dequeA.push_back(WrappedInt(4)); | 350 dequeA.push_back(WrappedInt(4)); |
| 351 dequeA.swap(dequeB); | 351 dequeA.swap(dequeB); |
| 352 | 352 |
| 353 ASSERT_EQ(1u, dequeA.size()); | 353 ASSERT_EQ(1u, dequeA.size()); |
| 354 EXPECT_EQ(1, dequeA.first().get()); | 354 EXPECT_EQ(1, dequeA.front().get()); |
| 355 ASSERT_EQ(3u, dequeB.size()); | 355 ASSERT_EQ(3u, dequeB.size()); |
| 356 EXPECT_EQ(2, dequeB.first().get()); | 356 EXPECT_EQ(2, dequeB.front().get()); |
| 357 | 357 |
| 358 dequeB.swap(dequeA); | 358 dequeB.swap(dequeA); |
| 359 } | 359 } |
| 360 | 360 |
| 361 TEST(DequeTest, SwapWithOrWithoutInlineCapacity) { | 361 TEST(DequeTest, SwapWithOrWithoutInlineCapacity) { |
| 362 swapWithOrWithoutInlineCapacity<0>(); | 362 swapWithOrWithoutInlineCapacity<0>(); |
| 363 swapWithOrWithoutInlineCapacity<2>(); | 363 swapWithOrWithoutInlineCapacity<2>(); |
| 364 } | 364 } |
| 365 | 365 |
| 366 class LivenessCounter { | 366 class LivenessCounter { |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 EXPECT_EQ(2u, deque.size()); | 629 EXPECT_EQ(2u, deque.size()); |
| 630 EXPECT_EQ(3, deque[0].value1); | 630 EXPECT_EQ(3, deque[0].value1); |
| 631 EXPECT_EQ(4, deque[0].value2); | 631 EXPECT_EQ(4, deque[0].value2); |
| 632 EXPECT_EQ(1, deque[1].value1); | 632 EXPECT_EQ(1, deque[1].value1); |
| 633 EXPECT_EQ(2, deque[1].value2); | 633 EXPECT_EQ(2, deque[1].value2); |
| 634 } | 634 } |
| 635 | 635 |
| 636 } // anonymous namespace | 636 } // anonymous namespace |
| 637 | 637 |
| 638 } // namespace WTF | 638 } // namespace WTF |
| OLD | NEW |