Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1461)

Side by Side Diff: third_party/WebKit/Source/wtf/ListHashSetTest.cpp

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/wtf/ListHashSet.h ('k') | third_party/WebKit/Source/wtf/OwnPtr.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 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 10 matching lines...) Expand all
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE. 23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #include "wtf/ListHashSet.h" 26 #include "wtf/ListHashSet.h"
27 27
28 #include "testing/gtest/include/gtest/gtest.h" 28 #include "testing/gtest/include/gtest/gtest.h"
29 #include "wtf/LinkedHashSet.h" 29 #include "wtf/LinkedHashSet.h"
30 #include "wtf/PassRefPtr.h" 30 #include "wtf/PassRefPtr.h"
31 #include "wtf/PtrUtil.h"
31 #include "wtf/RefCounted.h" 32 #include "wtf/RefCounted.h"
32 #include "wtf/RefPtr.h" 33 #include "wtf/RefPtr.h"
34 #include <memory>
33 #include <type_traits> 35 #include <type_traits>
34 36
35 namespace WTF { 37 namespace WTF {
36 38
37 namespace { 39 namespace {
38 40
39 template <typename Set> 41 template <typename Set>
40 class ListOrLinkedHashSetTest : public ::testing::Test { }; 42 class ListOrLinkedHashSetTest : public ::testing::Test { };
41 43
42 using SetTypes = ::testing::Types<ListHashSet<int>, ListHashSet<int, 1>, LinkedH ashSet<int>>; 44 using SetTypes = ::testing::Types<ListHashSet<int>, ListHashSet<int, 1>, LinkedH ashSet<int>>;
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 deleted = true; 547 deleted = true;
546 } 548 }
547 549
548 bool& deleted; 550 bool& deleted;
549 }; 551 };
550 552
551 TEST(ListHashSetTest, WithOwnPtr) 553 TEST(ListHashSetTest, WithOwnPtr)
552 { 554 {
553 bool deleted1 = false, deleted2 = false; 555 bool deleted1 = false, deleted2 = false;
554 556
555 typedef ListHashSet<OwnPtr<Dummy>> OwnPtrSet; 557 typedef ListHashSet<std::unique_ptr<Dummy>> OwnPtrSet;
556 OwnPtrSet set; 558 OwnPtrSet set;
557 559
558 Dummy* ptr1 = new Dummy(deleted1); 560 Dummy* ptr1 = new Dummy(deleted1);
559 { 561 {
560 // AddResult in a separate scope to avoid assertion hit, 562 // AddResult in a separate scope to avoid assertion hit,
561 // since we modify the container further. 563 // since we modify the container further.
562 OwnPtrSet::AddResult res1 = set.add(adoptPtr(ptr1)); 564 OwnPtrSet::AddResult res1 = set.add(wrapUnique(ptr1));
563 EXPECT_EQ(res1.storedValue->get(), ptr1); 565 EXPECT_EQ(res1.storedValue->get(), ptr1);
564 } 566 }
565 567
566 EXPECT_FALSE(deleted1); 568 EXPECT_FALSE(deleted1);
567 EXPECT_EQ(1UL, set.size()); 569 EXPECT_EQ(1UL, set.size());
568 OwnPtrSet::iterator it1 = set.find(ptr1); 570 OwnPtrSet::iterator it1 = set.find(ptr1);
569 EXPECT_NE(set.end(), it1); 571 EXPECT_NE(set.end(), it1);
570 EXPECT_EQ(ptr1, (*it1)); 572 EXPECT_EQ(ptr1, (*it1).get());
571 573
572 Dummy* ptr2 = new Dummy(deleted2); 574 Dummy* ptr2 = new Dummy(deleted2);
573 { 575 {
574 OwnPtrSet::AddResult res2 = set.add(adoptPtr(ptr2)); 576 OwnPtrSet::AddResult res2 = set.add(wrapUnique(ptr2));
575 EXPECT_EQ(res2.storedValue->get(), ptr2); 577 EXPECT_EQ(res2.storedValue->get(), ptr2);
576 } 578 }
577 579
578 EXPECT_FALSE(deleted2); 580 EXPECT_FALSE(deleted2);
579 EXPECT_EQ(2UL, set.size()); 581 EXPECT_EQ(2UL, set.size());
580 OwnPtrSet::iterator it2 = set.find(ptr2); 582 OwnPtrSet::iterator it2 = set.find(ptr2);
581 EXPECT_NE(set.end(), it2); 583 EXPECT_NE(set.end(), it2);
582 EXPECT_EQ(ptr2, (*it2)); 584 EXPECT_EQ(ptr2, (*it2).get());
583 585
584 set.remove(ptr1); 586 set.remove(ptr1);
585 EXPECT_TRUE(deleted1); 587 EXPECT_TRUE(deleted1);
586 588
587 set.clear(); 589 set.clear();
588 EXPECT_TRUE(deleted2); 590 EXPECT_TRUE(deleted2);
589 EXPECT_TRUE(set.isEmpty()); 591 EXPECT_TRUE(set.isEmpty());
590 592
591 deleted1 = false; 593 deleted1 = false;
592 deleted2 = false; 594 deleted2 = false;
593 { 595 {
594 OwnPtrSet set; 596 OwnPtrSet set;
595 set.add(adoptPtr(new Dummy(deleted1))); 597 set.add(wrapUnique(new Dummy(deleted1)));
596 set.add(adoptPtr(new Dummy(deleted2))); 598 set.add(wrapUnique(new Dummy(deleted2)));
597 } 599 }
598 EXPECT_TRUE(deleted1); 600 EXPECT_TRUE(deleted1);
599 EXPECT_TRUE(deleted2); 601 EXPECT_TRUE(deleted2);
600 602
601 603
602 deleted1 = false; 604 deleted1 = false;
603 deleted2 = false; 605 deleted2 = false;
604 OwnPtr<Dummy> ownPtr1; 606 std::unique_ptr<Dummy> ownPtr1;
605 OwnPtr<Dummy> ownPtr2; 607 std::unique_ptr<Dummy> ownPtr2;
606 ptr1 = new Dummy(deleted1); 608 ptr1 = new Dummy(deleted1);
607 ptr2 = new Dummy(deleted2); 609 ptr2 = new Dummy(deleted2);
608 { 610 {
609 OwnPtrSet set; 611 OwnPtrSet set;
610 set.add(adoptPtr(ptr1)); 612 set.add(wrapUnique(ptr1));
611 set.add(adoptPtr(ptr2)); 613 set.add(wrapUnique(ptr2));
612 ownPtr1 = set.takeFirst(); 614 ownPtr1 = set.takeFirst();
613 EXPECT_EQ(1UL, set.size()); 615 EXPECT_EQ(1UL, set.size());
614 ownPtr2 = set.take(ptr2); 616 ownPtr2 = set.take(ptr2);
615 EXPECT_TRUE(set.isEmpty()); 617 EXPECT_TRUE(set.isEmpty());
616 } 618 }
617 EXPECT_FALSE(deleted1); 619 EXPECT_FALSE(deleted1);
618 EXPECT_FALSE(deleted2); 620 EXPECT_FALSE(deleted2);
619 621
620 EXPECT_EQ(ptr1, ownPtr1); 622 EXPECT_EQ(ptr1, ownPtr1.get());
621 EXPECT_EQ(ptr2, ownPtr2); 623 EXPECT_EQ(ptr2, ownPtr2.get());
622 } 624 }
623 625
624 class CountCopy final { 626 class CountCopy final {
625 public: 627 public:
626 static int* const kDeletedValue; 628 static int* const kDeletedValue;
627 629
628 explicit CountCopy(int* counter = nullptr) : m_counter(counter) { } 630 explicit CountCopy(int* counter = nullptr) : m_counter(counter) { }
629 CountCopy(const CountCopy& other) : m_counter(other.m_counter) 631 CountCopy(const CountCopy& other) : m_counter(other.m_counter)
630 { 632 {
631 if (m_counter && m_counter != kDeletedValue) 633 if (m_counter && m_counter != kDeletedValue)
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 // ... but they don't have any pass-out (like take()) methods. 823 // ... but they don't have any pass-out (like take()) methods.
822 824
823 set.remove(MoveOnly(3)); 825 set.remove(MoveOnly(3));
824 set.clear(); 826 set.clear();
825 } 827 }
826 828
827 829
828 } // anonymous namespace 830 } // anonymous namespace
829 831
830 } // namespace WTF 832 } // namespace WTF
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/ListHashSet.h ('k') | third_party/WebKit/Source/wtf/OwnPtr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698