diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp')
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp | 58 |
1 files changed, 49 insertions, 9 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp index bc1e1e484..172efa762 100644 --- a/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp +++ b/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp @@ -26,6 +26,8 @@ #include "config.h" #include "RefLogger.h" +#include <wtf/NeverDestroyed.h> +#include <wtf/RefCounted.h> #include <wtf/RefPtr.h> namespace TestWebKitAPI { @@ -69,7 +71,7 @@ TEST(WTF_RefPtr, Basic) { RefPtr<RefLogger> p1 = &a; - RefPtr<RefLogger> p2 = std::move(p1); + RefPtr<RefLogger> p2 = WTFMove(p1); ASSERT_EQ(nullptr, p1.get()); ASSERT_EQ(&a, p2.get()); } @@ -77,7 +79,7 @@ TEST(WTF_RefPtr, Basic) { RefPtr<RefLogger> p1 = &a; - RefPtr<RefLogger> p2(std::move(p1)); + RefPtr<RefLogger> p2(WTFMove(p1)); ASSERT_EQ(nullptr, p1.get()); ASSERT_EQ(&a, p2.get()); } @@ -93,7 +95,7 @@ TEST(WTF_RefPtr, Basic) { RefPtr<DerivedRefLogger> p1 = &a; - RefPtr<RefLogger> p2 = std::move(p1); + RefPtr<RefLogger> p2 = WTFMove(p1); ASSERT_EQ(nullptr, p1.get()); ASSERT_EQ(&a, p2.get()); } @@ -102,7 +104,7 @@ TEST(WTF_RefPtr, Basic) { RefPtr<RefLogger> ptr(&a); ASSERT_EQ(&a, ptr.get()); - ptr.clear(); + ptr = nullptr; ASSERT_EQ(nullptr, ptr.get()); } ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str()); @@ -120,8 +122,8 @@ TEST(WTF_RefPtr, AssignPassRefToRefPtr) { DerivedRefLogger a("a"); { - PassRef<RefLogger> passRef(a); - RefPtr<RefLogger> ptr = std::move(passRef); + Ref<RefLogger> passRef(a); + RefPtr<RefLogger> ptr = WTFMove(passRef); ASSERT_EQ(&a, ptr.get()); ptr.release(); ASSERT_EQ(nullptr, ptr.get()); @@ -204,7 +206,7 @@ TEST(WTF_RefPtr, Assignment) ASSERT_EQ(&a, p1.get()); ASSERT_EQ(&b, p2.get()); log() << "| "; - p1 = std::move(p2); + p1 = WTFMove(p2); ASSERT_EQ(&b, p1.get()); ASSERT_EQ(nullptr, p2.get()); log() << "| "; @@ -250,7 +252,7 @@ TEST(WTF_RefPtr, Assignment) ASSERT_EQ(&a, p1.get()); ASSERT_EQ(&c, p2.get()); log() << "| "; - p1 = std::move(p2); + p1 = WTFMove(p2); ASSERT_EQ(&c, p1.get()); ASSERT_EQ(nullptr, p2.get()); log() << "| "; @@ -270,7 +272,15 @@ TEST(WTF_RefPtr, Assignment) { RefPtr<RefLogger> ptr(&a); ASSERT_EQ(&a, ptr.get()); - ptr = std::move(ptr); +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wself-move" +#endif + ptr = WTFMove(ptr); +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif ASSERT_EQ(&a, ptr.get()); } ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str()); @@ -395,4 +405,34 @@ TEST(WTF_RefPtr, ReturnValue) ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str()); } + +struct ConstRefCounted : RefCounted<ConstRefCounted> { + static Ref<ConstRefCounted> create() { return adoptRef(*new ConstRefCounted); } +}; + +const ConstRefCounted& returnConstRefCountedRef() +{ + static NeverDestroyed<ConstRefCounted> instance; + return instance.get(); +} +ConstRefCounted& returnRefCountedRef() +{ + static NeverDestroyed<ConstRefCounted> instance; + return instance.get(); +} + +TEST(WTF_RefPtr, Const) +{ + // This test passes if it compiles without an error. + auto a = ConstRefCounted::create(); + Ref<const ConstRefCounted> b = WTFMove(a); + RefPtr<const ConstRefCounted> c = b.ptr(); + Ref<const ConstRefCounted> d = returnConstRefCountedRef(); + RefPtr<const ConstRefCounted> e = &returnConstRefCountedRef(); + RefPtr<ConstRefCounted> f = ConstRefCounted::create(); + RefPtr<const ConstRefCounted> g = f; + RefPtr<const ConstRefCounted> h(f); + Ref<const ConstRefCounted> i(returnRefCountedRef()); +} + } // namespace TestWebKitAPI |