Index: base/memory/scoped_ptr_unittest.cc |
diff --git a/base/memory/scoped_ptr_unittest.cc b/base/memory/scoped_ptr_unittest.cc |
index 8bea43b972be67ce007b6be347f3e16a163a2efe..e1a33220f852582ecad372efdc49c24f3a97be8d 100644 |
--- a/base/memory/scoped_ptr_unittest.cc |
+++ b/base/memory/scoped_ptr_unittest.cc |
@@ -6,7 +6,9 @@ |
#include <stddef.h> |
+#include <memory> |
#include <sstream> |
+#include <utility> |
#include "base/bind.h" |
#include "base/callback.h" |
@@ -840,3 +842,82 @@ TEST(ScopedPtrTest, ArrayOperators) { |
EXPECT_TRUE(pnull <= nullptr); |
EXPECT_TRUE(nullptr <= pnull); |
} |
+ |
+TEST(ScopedPtrTest, UniquePtrToScopedPtr) { |
+ { |
+ std::unique_ptr<int> u(new int(8)); |
+ scoped_ptr<int> s(std::move(u)); |
+ EXPECT_EQ(8, *s); |
+ } |
+ |
+ { |
+ std::unique_ptr<int> u(new int(8)); |
+ scoped_ptr<int> s; |
+ s = std::move(u); |
+ EXPECT_EQ(8, *s); |
+ } |
+} |
+ |
+TEST(ScopedPtrTest, UniquePtrToScopedPtrWithCustomDeleter) { |
+ double dummy, dummy2; |
+ int deletes = 0; |
+ |
+ { |
+ std::unique_ptr<double, CountingDeleterChild> u( |
+ &dummy, CountingDeleterChild(&deletes)); |
+ scoped_ptr<double, CountingDeleter> s(std::move(u)); |
+ EXPECT_EQ(&dummy, s.get()); |
+ } |
+ EXPECT_EQ(1, deletes); |
+ |
+ int deletes2 = 0; |
+ { |
+ std::unique_ptr<double, CountingDeleterChild> u( |
+ &dummy, CountingDeleterChild(&deletes)); |
+ scoped_ptr<double, CountingDeleter> s(&dummy2, CountingDeleter(&deletes2)); |
+ s = std::move(u); |
+ EXPECT_EQ(&dummy, s.get()); |
+ } |
+ EXPECT_EQ(2, deletes); |
+ EXPECT_EQ(1, deletes2); |
+} |
+ |
+TEST(ScopedPtrTest, ScopedPtrToUniquePtr) { |
+ { |
+ scoped_ptr<int> s(new int(9)); |
+ std::unique_ptr<int> u(std::move(s)); |
+ EXPECT_EQ(9, *u); |
+ } |
+ |
+ { |
+ scoped_ptr<int> s(new int(9)); |
+ std::unique_ptr<int> u; |
+ u = std::move(s); |
+ EXPECT_EQ(9, *u); |
+ } |
+} |
+ |
+TEST(ScopedPtrTest, ScopedPtrToUniquePtrWithCustomDeleter) { |
+ double dummy, dummy2; |
+ int deletes = 0; |
+ |
+ { |
+ scoped_ptr<double, CountingDeleterChild> s(&dummy, |
+ CountingDeleterChild(&deletes)); |
+ std::unique_ptr<double, CountingDeleter> u(std::move(s)); |
+ EXPECT_EQ(&dummy, u.get()); |
+ } |
+ EXPECT_EQ(1, deletes); |
+ |
+ int deletes2 = 0; |
+ { |
+ scoped_ptr<double, CountingDeleterChild> s(&dummy, |
+ CountingDeleterChild(&deletes)); |
+ std::unique_ptr<double, CountingDeleter> u(&dummy2, |
+ CountingDeleter(&deletes2)); |
+ u = std::move(s); |
+ EXPECT_EQ(&dummy, u.get()); |
+ } |
+ EXPECT_EQ(2, deletes); |
+ EXPECT_EQ(1, deletes2); |
+} |