Diff
Modified: trunk/Tools/ChangeLog (217937 => 217938)
--- trunk/Tools/ChangeLog 2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/ChangeLog 2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,3 +1,15 @@
+2017-06-08 Darin Adler <[email protected]>
+
+ WTF tests have incorrect RefLogger lifetimes making it impossible to test with Address Sanitizer
+ https://bugs.webkit.org/show_bug.cgi?id=173106
+
+ Reviewed by Sam Weinig.
+
+ * TestWebKitAPI/Tests/WTF/HashCountedSet.cpp: Define RefLogger objects first, so they are
+ destroyed last.
+ * TestWebKitAPI/Tests/WTF/HashMap.cpp: Ditto.
+ * TestWebKitAPI/Tests/WTF/HashSet.cpp: Ditto.
+
2017-06-07 Dan Bernstein <[email protected]>
[Cocoa] additionalReadAccessAllowedURLs doesn’t preserve non-Latin1 paths
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp (217937 => 217938)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp 2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp 2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
* Copyright (C) 2011 Google Inc. All rights reserved.
+ * Copyright (C) 2016-2017 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -34,7 +34,7 @@
#include <wtf/text/StringHash.h>
namespace TestWebKitAPI {
-
+
typedef WTF::HashCountedSet<int> IntHashCountedSet;
TEST(WTF_HashCountedSet, HashTableIteratorComparison)
@@ -43,7 +43,7 @@
hashCountedSet.add(1);
ASSERT_TRUE(hashCountedSet.begin() != hashCountedSet.end());
ASSERT_FALSE(hashCountedSet.begin() == hashCountedSet.end());
-
+
IntHashCountedSet::const_iterator begin = hashCountedSet.begin();
ASSERT_TRUE(begin == hashCountedSet.begin());
ASSERT_TRUE(hashCountedSet.begin() == begin);
@@ -74,9 +74,9 @@
const double clobberKey = 6;
const double zeroKey = 0;
const double negativeZeroKey = -zeroKey;
-
+
DoubleHashCountedSet hashCountedSet;
-
+
hashCountedSet.add(clobberKey);
ASSERT_EQ(hashCountedSet.count(clobberKey), 1u);
@@ -85,7 +85,7 @@
hashCountedSet.add(zeroKey);
hashCountedSet.add(negativeZeroKey);
-
+
ASSERT_EQ(bucketForKey(clobberKey), bucketForKey(negativeZeroKey));
ASSERT_EQ(hashCountedSet.count(clobberKey), 1u);
ASSERT_EQ(hashCountedSet.count(zeroKey), 1u);
@@ -94,7 +94,7 @@
hashCountedSet.add(clobberKey);
hashCountedSet.add(zeroKey);
hashCountedSet.add(negativeZeroKey);
-
+
ASSERT_EQ(hashCountedSet.count(clobberKey), 2u);
ASSERT_EQ(hashCountedSet.count(zeroKey), 2u);
ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 2u);
@@ -102,7 +102,7 @@
hashCountedSet.add(clobberKey, 12);
hashCountedSet.add(zeroKey, 15);
hashCountedSet.add(negativeZeroKey, 17);
-
+
ASSERT_EQ(hashCountedSet.count(clobberKey), 14u);
ASSERT_EQ(hashCountedSet.count(zeroKey), 17u);
ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 19u);
@@ -116,27 +116,27 @@
const double clobberKey = 6;
const double zeroKey = 0;
const double negativeZeroKey = -zeroKey;
-
+
DoubleHashCountedSet hashCountedSet;
-
+
hashCountedSet.add(clobberKey, 5);
-
+
ASSERT_EQ(hashCountedSet.count(clobberKey), 5u);
ASSERT_EQ(hashCountedSet.count(zeroKey), 0u);
ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 0u);
-
+
hashCountedSet.add(zeroKey, 22);
hashCountedSet.add(negativeZeroKey, 0);
-
+
ASSERT_EQ(bucketForKey(clobberKey), bucketForKey(negativeZeroKey));
ASSERT_EQ(hashCountedSet.count(clobberKey), 5u);
ASSERT_EQ(hashCountedSet.count(zeroKey), 22u);
ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 0u);
-
+
hashCountedSet.add(clobberKey);
hashCountedSet.add(zeroKey);
hashCountedSet.add(negativeZeroKey);
-
+
ASSERT_EQ(hashCountedSet.count(clobberKey), 6u);
ASSERT_EQ(hashCountedSet.count(zeroKey), 23u);
ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 1u);
@@ -146,21 +146,21 @@
TEST(WTF_HashCountedSet, MoveOnlyKeys)
{
HashCountedSet<MoveOnly> moveOnlyKeys;
-
+
for (size_t i = 0; i < 100; ++i) {
MoveOnly moveOnly(i + 1);
moveOnlyKeys.add(WTFMove(moveOnly));
}
-
+
for (size_t i = 0; i < 100; ++i) {
auto it = moveOnlyKeys.find(MoveOnly(i + 1));
ASSERT_FALSE(it == moveOnlyKeys.end());
ASSERT_EQ(it->value, 1u);
}
-
+
for (size_t i = 0; i < 100; ++i)
ASSERT_FALSE(moveOnlyKeys.add(MoveOnly(i + 1)).isNewEntry);
-
+
for (size_t i = 0; i < 100; ++i)
ASSERT_FALSE(moveOnlyKeys.remove(MoveOnly(i + 1)));
@@ -173,24 +173,24 @@
TEST(WTF_HashCountedSet, MoveOnlyKeysInitialCount)
{
HashCountedSet<MoveOnly> moveOnlyKeys;
-
+
for (size_t i = 0; i < 100; ++i) {
MoveOnly moveOnly(i + 1);
moveOnlyKeys.add(WTFMove(moveOnly), i + 1);
}
-
+
for (size_t i = 0; i < 100; ++i) {
auto it = moveOnlyKeys.find(MoveOnly(i + 1));
ASSERT_FALSE(it == moveOnlyKeys.end());
ASSERT_EQ(it->value, i + 1);
}
-
+
for (size_t i = 0; i < 100; ++i)
ASSERT_FALSE(moveOnlyKeys.add(MoveOnly(i + 1)).isNewEntry);
-
+
for (size_t i = 0; i < 100; ++i)
ASSERT_EQ(moveOnlyKeys.count(MoveOnly(i + 1)), i + 2);
-
+
for (size_t i = 0; i < 100; ++i)
ASSERT_FALSE(moveOnlyKeys.remove(MoveOnly(i + 1)));
@@ -209,9 +209,9 @@
"four",
"four",
};
-
+
EXPECT_EQ(4u, hashCountedSet.size());
-
+
EXPECT_EQ(hashCountedSet.count("one"), 1u);
EXPECT_EQ(hashCountedSet.count("two"), 1u);
EXPECT_EQ(hashCountedSet.count("three"), 1u);
@@ -226,9 +226,9 @@
{ String("three"), 3u },
{ String("four"), 4u },
};
-
+
EXPECT_EQ(4u, hashCountedSet.size());
-
+
EXPECT_EQ(hashCountedSet.count("one"), 1u);
EXPECT_EQ(hashCountedSet.count("two"), 2u);
EXPECT_EQ(hashCountedSet.count("three"), 3u);
@@ -238,17 +238,17 @@
TEST(WTF_HashCountedSet, UniquePtrKey)
{
ConstructorDestructorCounter::TestingScope scope;
-
+
HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
-
+
auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
hashCountedSet.add(WTFMove(uniquePtr));
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-
+
hashCountedSet.clear();
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
}
@@ -256,17 +256,17 @@
TEST(WTF_HashCountedSet, UniquePtrKeyInitialCount)
{
ConstructorDestructorCounter::TestingScope scope;
-
+
HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
-
+
auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
hashCountedSet.add(WTFMove(uniquePtr), 12);
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-
+
hashCountedSet.clear();
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
}
@@ -275,22 +275,22 @@
{
ConstructorDestructorCounter::TestingScope constructorDestructorCounterScope;
DeleterCounter<ConstructorDestructorCounter>::TestingScope deleterCounterScope;
-
+
HashCountedSet<std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>>> hashCountedSet;
-
+
std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>> uniquePtr(new ConstructorDestructorCounter(), DeleterCounter<ConstructorDestructorCounter>());
hashCountedSet.add(WTFMove(uniquePtr));
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-
+
EXPECT_EQ(0u, DeleterCounter<ConstructorDestructorCounter>::deleterCount());
-
+
hashCountedSet.clear();
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
-
+
EXPECT_EQ(1u, DeleterCounter<ConstructorDestructorCounter>::deleterCount());
}
@@ -297,11 +297,11 @@
TEST(WTF_HashCountedSet, UniquePtrKey_FindUsingRawPointer)
{
HashCountedSet<std::unique_ptr<int>> hashCountedSet;
-
+
auto uniquePtr = std::make_unique<int>(5);
int* ptr = uniquePtr.get();
hashCountedSet.add(WTFMove(uniquePtr));
-
+
auto it = hashCountedSet.find(ptr);
ASSERT_TRUE(it != hashCountedSet.end());
EXPECT_EQ(ptr, it->key.get());
@@ -311,11 +311,11 @@
TEST(WTF_HashCountedSet, UniquePtrKey_ContainsUsingRawPointer)
{
HashCountedSet<std::unique_ptr<int>> hashCountedSet;
-
+
auto uniquePtr = std::make_unique<int>(5);
int* ptr = uniquePtr.get();
hashCountedSet.add(WTFMove(uniquePtr));
-
+
EXPECT_EQ(true, hashCountedSet.contains(ptr));
}
@@ -322,11 +322,11 @@
TEST(WTF_HashCountedSet, UniquePtrKey_GetUsingRawPointer)
{
HashCountedSet<std::unique_ptr<int>> hashCountedSet;
-
+
auto uniquePtr = std::make_unique<int>(5);
int* ptr = uniquePtr.get();
hashCountedSet.add(WTFMove(uniquePtr));
-
+
int value = hashCountedSet.count(ptr);
EXPECT_EQ(1, value);
}
@@ -334,19 +334,19 @@
TEST(WTF_HashCountedSet, UniquePtrKey_RemoveUsingRawPointer)
{
ConstructorDestructorCounter::TestingScope scope;
-
+
HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
-
+
auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
ConstructorDestructorCounter* ptr = uniquePtr.get();
hashCountedSet.add(WTFMove(uniquePtr));
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-
+
bool result = hashCountedSet.remove(ptr);
EXPECT_EQ(true, result);
-
+
EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
}
@@ -353,12 +353,13 @@
TEST(WTF_HashCountedSet, RefPtrKey_Add)
{
+ DerivedRefLogger a("a");
+
HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-
- DerivedRefLogger a("a");
+
RefPtr<RefLogger> ptr(&a);
hashCountedSet.add(ptr);
-
+
ASSERT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
EXPECT_EQ(1U, hashCountedSet.count(ptr));
EXPECT_EQ(1U, hashCountedSet.count(ptr.get()));
@@ -366,34 +367,37 @@
TEST(WTF_HashCountedSet, RefPtrKey_AddUsingRelease)
{
+ DerivedRefLogger a("a");
+
HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-
- DerivedRefLogger a("a");
+
RefPtr<RefLogger> ptr(&a);
hashCountedSet.add(WTFMove(ptr));
-
+
EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
}
TEST(WTF_HashCountedSet, RefPtrKey_AddUsingMove)
{
+ DerivedRefLogger a("a");
+
HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-
- DerivedRefLogger a("a");
+
RefPtr<RefLogger> ptr(&a);
hashCountedSet.add(WTFMove(ptr));
-
+
EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
}
TEST(WTF_HashCountedSet, RefPtrKey_AddUsingRaw)
{
+ DerivedRefLogger a("a");
+
HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-
- DerivedRefLogger a("a");
+
RefPtr<RefLogger> ptr(&a);
hashCountedSet.add(ptr.get());
-
+
EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
EXPECT_EQ(1U, hashCountedSet.count(ptr));
EXPECT_EQ(1U, hashCountedSet.count(ptr.get()));
@@ -401,68 +405,68 @@
TEST(WTF_HashCountedSet, RefPtrKey_AddKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-
- DerivedRefLogger a("a");
-
+
{
RefPtr<RefLogger> ptr(&a);
hashCountedSet.add(ptr);
}
-
+
EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
-
+
{
RefPtr<RefLogger> ptr2(&a);
auto addResult = hashCountedSet.add(ptr2);
EXPECT_FALSE(addResult.isNewEntry);
}
-
+
EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
}
TEST(WTF_HashCountedSet, RefPtrKey_AddUsingReleaseKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-
- DerivedRefLogger a("a");
-
+
{
RefPtr<RefLogger> ptr(&a);
hashCountedSet.add(ptr);
}
-
+
EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
-
+
{
RefPtr<RefLogger> ptr2(&a);
auto addResult = hashCountedSet.add(WTFMove(ptr2));
EXPECT_FALSE(addResult.isNewEntry);
}
-
+
EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
}
TEST(WTF_HashCountedSet, RefPtrKey_AddUsingMoveKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-
- DerivedRefLogger a("a");
-
+
{
RefPtr<RefLogger> ptr(&a);
hashCountedSet.add(ptr);
}
-
+
EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
-
+
{
RefPtr<RefLogger> ptr2(&a);
auto addResult = hashCountedSet.add(WTFMove(ptr2));
EXPECT_FALSE(addResult.isNewEntry);
}
-
+
EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
}
-
+
} // namespace TestWebKitAPI
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp (217937 => 217938)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp 2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp 2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2011 Google Inc. All rights reserved.
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -295,9 +296,10 @@
TEST(WTF_HashMap, RefPtrKey_Add)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.add(ptr, 0);
@@ -306,9 +308,10 @@
TEST(WTF_HashMap, RefPtrKey_AddUsingRelease)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.add(WTFMove(ptr), 0);
@@ -317,9 +320,10 @@
TEST(WTF_HashMap, RefPtrKey_AddUsingMove)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.add(WTFMove(ptr), 0);
@@ -328,9 +332,10 @@
TEST(WTF_HashMap, RefPtrKey_AddUsingRaw)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.add(ptr.get(), 0);
@@ -339,10 +344,10 @@
TEST(WTF_HashMap, RefPtrKey_AddKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
-
{
RefPtr<RefLogger> ptr(&a);
map.add(ptr, 0);
@@ -361,10 +366,10 @@
TEST(WTF_HashMap, RefPtrKey_AddUsingReleaseKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
-
{
RefPtr<RefLogger> ptr(&a);
map.add(ptr, 0);
@@ -383,10 +388,10 @@
TEST(WTF_HashMap, RefPtrKey_AddUsingMoveKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
-
{
RefPtr<RefLogger> ptr(&a);
map.add(ptr, 0);
@@ -405,9 +410,10 @@
TEST(WTF_HashMap, RefPtrKey_Set)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.set(ptr, 0);
@@ -416,9 +422,10 @@
TEST(WTF_HashMap, RefPtrKey_SetUsingRelease)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.set(WTFMove(ptr), 0);
@@ -428,9 +435,10 @@
TEST(WTF_HashMap, RefPtrKey_SetUsingMove)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.set(WTFMove(ptr), 0);
@@ -439,9 +447,10 @@
TEST(WTF_HashMap, RefPtrKey_SetUsingRaw)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
RefPtr<RefLogger> ptr(&a);
map.set(ptr.get(), 0);
@@ -450,10 +459,10 @@
TEST(WTF_HashMap, RefPtrKey_SetKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
-
RefPtr<RefLogger> ptr(&a);
map.set(ptr, 0);
@@ -471,10 +480,10 @@
TEST(WTF_HashMap, RefPtrKey_SetUsingReleaseKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
-
RefPtr<RefLogger> ptr(&a);
map.set(ptr, 0);
@@ -492,10 +501,10 @@
TEST(WTF_HashMap, RefPtrKey_SetUsingMoveKeyAlreadyPresent)
{
+ DerivedRefLogger a("a");
+
HashMap<RefPtr<RefLogger>, int> map;
- DerivedRefLogger a("a");
-
RefPtr<RefLogger> ptr(&a);
map.set(ptr, 0);
@@ -560,17 +569,15 @@
TEST(WTF_HashMap, Ensure_RefPtr)
{
+ DerivedRefLogger a("a");
+
HashMap<unsigned, RefPtr<RefLogger>> map;
- {
- DerivedRefLogger a("a");
+ map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
- map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
- EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
-
- map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
- EXPECT_STREQ("", takeLogStr().c_str());
- }
+ map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
+ EXPECT_STREQ("", takeLogStr().c_str());
}
class ObjectWithRefLogger {
@@ -705,9 +712,10 @@
TEST(WTF_HashMap, Ref_Key)
{
{
+ RefLogger a("a");
+
HashMap<Ref<RefLogger>, int> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(WTFMove(ref), 1);
}
@@ -715,9 +723,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<Ref<RefLogger>, int> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.set(WTFMove(ref), 1);
}
@@ -725,9 +734,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<Ref<RefLogger>, int> map;
- RefLogger a("a");
Ref<RefLogger> refA(a);
map.add(WTFMove(refA), 1);
@@ -738,9 +748,10 @@
ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<Ref<RefLogger>, int> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.ensure(WTFMove(ref), []() {
return 1;
@@ -750,9 +761,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<Ref<RefLogger>, int> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(WTFMove(ref), 1);
@@ -766,9 +778,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<Ref<RefLogger>, int> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(WTFMove(ref), 1);
@@ -778,9 +791,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<Ref<RefLogger>, int> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(WTFMove(ref), 1);
@@ -793,6 +807,7 @@
{
HashMap<Ref<RefLogger>, int> map;
for (int i = 0; i < 64; ++i) {
+ // FIXME: All of these RefLogger objects leak. No big deal for a test I guess.
Ref<RefLogger> ref = adoptRef(*new RefLogger("a"));
auto* pointer = ref.ptr();
map.add(WTFMove(ref), i + 1);
@@ -806,9 +821,10 @@
TEST(WTF_HashMap, Ref_Value)
{
{
+ RefLogger a("a");
+
HashMap<int, Ref<RefLogger>> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(1, WTFMove(ref));
}
@@ -816,9 +832,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<int, Ref<RefLogger>> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.set(1, WTFMove(ref));
}
@@ -826,13 +843,14 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+ RefLogger b("b");
+
HashMap<int, Ref<RefLogger>> map;
- RefLogger a("a");
Ref<RefLogger> refA(a);
map.add(1, WTFMove(refA));
- RefLogger b("b");
Ref<RefLogger> refB(b);
map.set(1, WTFMove(refB));
}
@@ -840,9 +858,10 @@
ASSERT_STREQ("ref(a) ref(b) deref(a) deref(b) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<int, Ref<RefLogger>> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(1, WTFMove(ref));
@@ -860,9 +879,10 @@
}
{
+ RefLogger a("a");
+
HashMap<int, Ref<RefLogger>> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(1, WTFMove(ref));
@@ -881,9 +901,10 @@
}
{
+ RefLogger a("a");
+
HashMap<int, Ref<RefLogger>> map;
- RefLogger a("a");
Ref<RefLogger> ref(a);
map.add(1, WTFMove(ref));
map.remove(1);
@@ -892,9 +913,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashMap<int, Ref<RefLogger>> map;
- RefLogger a("a");
map.ensure(1, [&]() mutable {
Ref<RefLogger> ref(a);
return ref;
@@ -906,6 +928,7 @@
{
HashMap<int, Ref<RefLogger>> map;
for (int i = 0; i < 64; ++i) {
+ // FIXME: All of these RefLogger objects leak. No big deal for a test I guess.
Ref<RefLogger> ref = adoptRef(*new RefLogger("a"));
map.add(i + 1, WTFMove(ref));
ASSERT_TRUE(map.contains(i + 1));
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp (217937 => 217938)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp 2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp 2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2012-2017 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -353,9 +353,10 @@
TEST(WTF_HashSet, Ref)
{
{
+ RefLogger a("a");
+
HashSet<Ref<RefLogger>> set;
- RefLogger a("a");
Ref<RefLogger> ref(a);
set.add(WTFMove(ref));
}
@@ -363,9 +364,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashSet<Ref<RefLogger>> set;
- RefLogger a("a");
Ref<RefLogger> ref(a);
set.add(ref.copyRef());
}
@@ -373,9 +375,10 @@
ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashSet<Ref<RefLogger>> set;
- RefLogger a("a");
Ref<RefLogger> ref(a);
set.add(WTFMove(ref));
set.remove(&a);
@@ -384,9 +387,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashSet<Ref<RefLogger>> set;
- RefLogger a("a");
Ref<RefLogger> ref(a);
set.add(WTFMove(ref));
@@ -398,9 +402,10 @@
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
+ RefLogger a("a");
+
HashSet<Ref<RefLogger>> set;
- RefLogger a("a");
Ref<RefLogger> ref(a);
set.add(WTFMove(ref));
@@ -418,9 +423,10 @@
}
{
+ RefLogger a("a");
+
HashSet<Ref<RefLogger>> set;
- RefLogger a("a");
Ref<RefLogger> ref(a);
set.add(WTFMove(ref));
@@ -432,6 +438,7 @@
{
HashSet<Ref<RefLogger>> set;
for (int i = 0; i < 64; ++i) {
+ // FIXME: All of these RefLogger objects leak. No big deal for a test I guess.
Ref<RefLogger> ref = adoptRef(*new RefLogger("a"));
auto* pointer = ref.ptr();
set.add(WTFMove(ref));