| OLD | NEW |
| 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 24 matching lines...) Expand all Loading... |
| 35 | 35 |
| 36 template<int initialCapacity> | 36 template<int initialCapacity> |
| 37 struct InitialCapacityTestHashTraits : public WTF::UnsignedWithZeroKeyHashTr
aits<int> { | 37 struct InitialCapacityTestHashTraits : public WTF::UnsignedWithZeroKeyHashTr
aits<int> { |
| 38 static const int minimumTableSize = initialCapacity; | 38 static const int minimumTableSize = initialCapacity; |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 template<unsigned size> | 41 template<unsigned size> |
| 42 void testInitialCapacity() | 42 void testInitialCapacity() |
| 43 { | 43 { |
| 44 const unsigned initialCapacity = WTF::HashTableCapacityForSize<size>::value; | 44 const unsigned initialCapacity = WTF::HashTableCapacityForSize<size>::value; |
| 45 HashSet<int, DefaultHash<int>::Hash, InitialCapacityTestHashTraits<initialCa
pacity> > testSet; | 45 HashSet<int, DefaultHash<int>::Hash, InitialCapacityTestHashTraits<initialCa
pacity>> testSet; |
| 46 | 46 |
| 47 // Initial capacity is null. | 47 // Initial capacity is null. |
| 48 EXPECT_EQ(0UL, testSet.capacity()); | 48 EXPECT_EQ(0UL, testSet.capacity()); |
| 49 | 49 |
| 50 // Adding items up to size should never change the capacity. | 50 // Adding items up to size should never change the capacity. |
| 51 for (size_t i = 0; i < size; ++i) { | 51 for (size_t i = 0; i < size; ++i) { |
| 52 testSet.add(i); | 52 testSet.add(i); |
| 53 EXPECT_EQ(initialCapacity, testSet.capacity()); | 53 EXPECT_EQ(initialCapacity, testSet.capacity()); |
| 54 } | 54 } |
| 55 | 55 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 deleted = true; | 88 deleted = true; |
| 89 } | 89 } |
| 90 | 90 |
| 91 bool& deleted; | 91 bool& deleted; |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 TEST(HashSetTest, HashSetOwnPtr) | 94 TEST(HashSetTest, HashSetOwnPtr) |
| 95 { | 95 { |
| 96 bool deleted1 = false, deleted2 = false; | 96 bool deleted1 = false, deleted2 = false; |
| 97 | 97 |
| 98 typedef HashSet<OwnPtr<Dummy> > OwnPtrSet; | 98 typedef HashSet<OwnPtr<Dummy>> OwnPtrSet; |
| 99 OwnPtrSet set; | 99 OwnPtrSet set; |
| 100 | 100 |
| 101 Dummy* ptr1 = new Dummy(deleted1); | 101 Dummy* ptr1 = new Dummy(deleted1); |
| 102 { | 102 { |
| 103 // AddResult in a separate scope to avoid assertion hit, | 103 // AddResult in a separate scope to avoid assertion hit, |
| 104 // since we modify the container further. | 104 // since we modify the container further. |
| 105 HashSet<OwnPtr<Dummy> >::AddResult res1 = set.add(adoptPtr(ptr1)); | 105 HashSet<OwnPtr<Dummy>>::AddResult res1 = set.add(adoptPtr(ptr1)); |
| 106 EXPECT_EQ(ptr1, res1.storedValue->get()); | 106 EXPECT_EQ(ptr1, res1.storedValue->get()); |
| 107 } | 107 } |
| 108 | 108 |
| 109 EXPECT_FALSE(deleted1); | 109 EXPECT_FALSE(deleted1); |
| 110 EXPECT_EQ(1UL, set.size()); | 110 EXPECT_EQ(1UL, set.size()); |
| 111 OwnPtrSet::iterator it1 = set.find(ptr1); | 111 OwnPtrSet::iterator it1 = set.find(ptr1); |
| 112 EXPECT_NE(set.end(), it1); | 112 EXPECT_NE(set.end(), it1); |
| 113 EXPECT_EQ(ptr1, (*it1)); | 113 EXPECT_EQ(ptr1, (*it1)); |
| 114 | 114 |
| 115 Dummy* ptr2 = new Dummy(deleted2); | 115 Dummy* ptr2 = new Dummy(deleted2); |
| 116 { | 116 { |
| 117 HashSet<OwnPtr<Dummy> >::AddResult res2 = set.add(adoptPtr(ptr2)); | 117 HashSet<OwnPtr<Dummy>>::AddResult res2 = set.add(adoptPtr(ptr2)); |
| 118 EXPECT_EQ(res2.storedValue->get(), ptr2); | 118 EXPECT_EQ(res2.storedValue->get(), ptr2); |
| 119 } | 119 } |
| 120 | 120 |
| 121 EXPECT_FALSE(deleted2); | 121 EXPECT_FALSE(deleted2); |
| 122 EXPECT_EQ(2UL, set.size()); | 122 EXPECT_EQ(2UL, set.size()); |
| 123 OwnPtrSet::iterator it2 = set.find(ptr2); | 123 OwnPtrSet::iterator it2 = set.find(ptr2); |
| 124 EXPECT_NE(set.end(), it2); | 124 EXPECT_NE(set.end(), it2); |
| 125 EXPECT_EQ(ptr2, (*it2)); | 125 EXPECT_EQ(ptr2, (*it2)); |
| 126 | 126 |
| 127 set.remove(ptr1); | 127 set.remove(ptr1); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 bool& m_isDeleted; | 180 bool& m_isDeleted; |
| 181 }; | 181 }; |
| 182 | 182 |
| 183 int DummyRefCounted::s_refInvokesCount = 0; | 183 int DummyRefCounted::s_refInvokesCount = 0; |
| 184 | 184 |
| 185 TEST(HashSetTest, HashSetRefPtr) | 185 TEST(HashSetTest, HashSetRefPtr) |
| 186 { | 186 { |
| 187 bool isDeleted = false; | 187 bool isDeleted = false; |
| 188 RefPtr<DummyRefCounted> ptr = adoptRef(new DummyRefCounted(isDeleted)); | 188 RefPtr<DummyRefCounted> ptr = adoptRef(new DummyRefCounted(isDeleted)); |
| 189 EXPECT_EQ(0, DummyRefCounted::s_refInvokesCount); | 189 EXPECT_EQ(0, DummyRefCounted::s_refInvokesCount); |
| 190 HashSet<RefPtr<DummyRefCounted> > set; | 190 HashSet<RefPtr<DummyRefCounted>> set; |
| 191 set.add(ptr); | 191 set.add(ptr); |
| 192 // Referenced only once (to store a copy in the container). | 192 // Referenced only once (to store a copy in the container). |
| 193 EXPECT_EQ(1, DummyRefCounted::s_refInvokesCount); | 193 EXPECT_EQ(1, DummyRefCounted::s_refInvokesCount); |
| 194 | 194 |
| 195 DummyRefCounted* rawPtr = ptr.get(); | 195 DummyRefCounted* rawPtr = ptr.get(); |
| 196 | 196 |
| 197 EXPECT_TRUE(set.contains(rawPtr)); | 197 EXPECT_TRUE(set.contains(rawPtr)); |
| 198 EXPECT_NE(set.end(), set.find(rawPtr)); | 198 EXPECT_NE(set.end(), set.find(rawPtr)); |
| 199 EXPECT_TRUE(set.contains(ptr)); | 199 EXPECT_TRUE(set.contains(ptr)); |
| 200 EXPECT_NE(set.end(), set.find(ptr)); | 200 EXPECT_NE(set.end(), set.find(ptr)); |
| 201 | 201 |
| 202 ptr.clear(); | 202 ptr.clear(); |
| 203 EXPECT_FALSE(isDeleted); | 203 EXPECT_FALSE(isDeleted); |
| 204 | 204 |
| 205 set.remove(rawPtr); | 205 set.remove(rawPtr); |
| 206 EXPECT_TRUE(isDeleted); | 206 EXPECT_TRUE(isDeleted); |
| 207 EXPECT_TRUE(set.isEmpty()); | 207 EXPECT_TRUE(set.isEmpty()); |
| 208 EXPECT_EQ(1, DummyRefCounted::s_refInvokesCount); | 208 EXPECT_EQ(1, DummyRefCounted::s_refInvokesCount); |
| 209 } | 209 } |
| 210 | 210 |
| 211 | 211 |
| 212 } // namespace | 212 } // namespace |
| OLD | NEW |