| 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);
|
| +}
|
|
|