summaryrefslogtreecommitdiff
path: root/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WTF/Ref.cpp')
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/Ref.cpp57
1 files changed, 36 insertions, 21 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp b/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp
index 1b9eef67a..c35606e23 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp
@@ -26,7 +26,6 @@
#include "config.h"
#include "RefLogger.h"
-#include <wtf/PassRef.h>
#include <wtf/Ref.h>
#include <wtf/RefPtr.h>
@@ -38,14 +37,14 @@ TEST(WTF_Ref, Basic)
{
Ref<RefLogger> ptr(a);
- ASSERT_EQ(&a, &ptr.get());
+ ASSERT_EQ(&a, ptr.ptr());
ASSERT_EQ(&a.name, &ptr->name);
}
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
Ref<RefLogger> ptr(adoptRef(a));
- ASSERT_EQ(&a, &ptr.get());
+ ASSERT_EQ(&a, ptr.ptr());
ASSERT_EQ(&a.name, &ptr->name);
}
ASSERT_STREQ("deref(a) ", takeLogStr().c_str());
@@ -59,51 +58,51 @@ TEST(WTF_Ref, Assignment)
{
Ref<RefLogger> ptr(a);
- ASSERT_EQ(&a, &ptr.get());
+ ASSERT_EQ(&a, ptr.ptr());
log() << "| ";
ptr = b;
- ASSERT_EQ(&b, &ptr.get());
+ ASSERT_EQ(&b, ptr.ptr());
log() << "| ";
}
ASSERT_STREQ("ref(a) | ref(b) deref(a) | deref(b) ", takeLogStr().c_str());
{
Ref<RefLogger> ptr(a);
- ASSERT_EQ(&a, &ptr.get());
+ ASSERT_EQ(&a, ptr.ptr());
log() << "| ";
ptr = c;
- ASSERT_EQ(&c, &ptr.get());
+ ASSERT_EQ(&c, ptr.ptr());
log() << "| ";
}
ASSERT_STREQ("ref(a) | ref(c) deref(a) | deref(c) ", takeLogStr().c_str());
{
Ref<RefLogger> ptr(a);
- ASSERT_EQ(&a, &ptr.get());
+ ASSERT_EQ(&a, ptr.ptr());
log() << "| ";
ptr = adoptRef(b);
- ASSERT_EQ(&b, &ptr.get());
+ ASSERT_EQ(&b, ptr.ptr());
log() << "| ";
}
ASSERT_STREQ("ref(a) | deref(a) | deref(b) ", takeLogStr().c_str());
{
Ref<RefLogger> ptr(a);
- ASSERT_EQ(&a, &ptr.get());
+ ASSERT_EQ(&a, ptr.ptr());
log() << "| ";
ptr = adoptRef(c);
- ASSERT_EQ(&c, &ptr.get());
+ ASSERT_EQ(&c, ptr.ptr());
log() << "| ";
}
ASSERT_STREQ("ref(a) | deref(a) | deref(c) ", takeLogStr().c_str());
}
-PassRef<RefLogger> passWithPassRef(PassRef<RefLogger> reference)
+static Ref<RefLogger> passWithRef(Ref<RefLogger>&& reference)
{
- return reference;
+ return WTFMove(reference);
}
-RefPtr<RefLogger> passWithPassRefPtr(PassRefPtr<RefLogger> reference)
+static RefPtr<RefLogger> passWithPassRefPtr(PassRefPtr<RefLogger> reference)
{
return reference;
}
@@ -115,32 +114,48 @@ TEST(WTF_Ref, ReturnValue)
DerivedRefLogger c("c");
{
- Ref<RefLogger> ptr(passWithPassRef(a));
- ASSERT_EQ(&a, &ptr.get());
+ Ref<RefLogger> ptr(passWithRef(Ref<RefLogger>(a)));
+ ASSERT_EQ(&a, ptr.ptr());
}
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
Ref<RefLogger> ptr(a);
- ASSERT_EQ(&a, &ptr.get());
+ ASSERT_EQ(&a, ptr.ptr());
log() << "| ";
- ptr = passWithPassRef(b);
- ASSERT_EQ(&b, &ptr.get());
+ ptr = passWithRef(b);
+ ASSERT_EQ(&b, ptr.ptr());
log() << "| ";
}
ASSERT_STREQ("ref(a) | ref(b) deref(a) | deref(b) ", takeLogStr().c_str());
{
- RefPtr<RefLogger> ptr(passWithPassRef(a));
+ RefPtr<RefLogger> ptr(passWithRef(a));
ASSERT_EQ(&a, ptr.get());
}
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
{
- RefPtr<RefLogger> ptr(passWithPassRefPtr(passWithPassRef(a)));
+ RefPtr<RefLogger> ptr(passWithPassRefPtr(passWithRef(a)));
ASSERT_EQ(&a, ptr.get());
}
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<DerivedRefLogger> ptr(&a);
+ RefPtr<RefLogger> ptr2(WTFMove(ptr));
+ ASSERT_EQ(nullptr, ptr.get());
+ ASSERT_EQ(&a, ptr2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ Ref<DerivedRefLogger> derivedReference(a);
+ Ref<RefLogger> baseReference(passWithRef(derivedReference.copyRef()));
+ ASSERT_EQ(&a, derivedReference.ptr());
+ ASSERT_EQ(&a, baseReference.ptr());
+ }
+ ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
}
} // namespace TestWebKitAPI