| Index: base/memory/scoped_ptr_unittest.cc
|
| diff --git a/base/memory/scoped_ptr_unittest.cc b/base/memory/scoped_ptr_unittest.cc
|
| index eb5bf000c48596d12ae97c59aad7c7eaf734ea06..de9fc14e5e14ee49eee4694544067b2739975370 100644
|
| --- a/base/memory/scoped_ptr_unittest.cc
|
| +++ b/base/memory/scoped_ptr_unittest.cc
|
| @@ -4,7 +4,9 @@
|
|
|
| #include "base/memory/scoped_ptr.h"
|
|
|
| +#include <memory>
|
| #include <sstream>
|
| +#include <utility>
|
|
|
| #include "base/basictypes.h"
|
| #include "base/bind.h"
|
| @@ -726,3 +728,82 @@ TEST(ScopedPtrTest, ReferenceCycle) {
|
| a->b->a.reset(a);
|
| a->~StructA();
|
| }
|
| +
|
| +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);
|
| +}
|
|
|