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