OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 namespace { | 9 namespace { |
10 | 10 |
(...skipping 27 matching lines...) Expand all Loading... |
38 | 38 |
39 void GrabAndDrop(scoped_ptr<ConDecLogger> logger) { | 39 void GrabAndDrop(scoped_ptr<ConDecLogger> logger) { |
40 } | 40 } |
41 | 41 |
42 // Do not delete this function! It's existence is to test that you can | 42 // Do not delete this function! It's existence is to test that you can |
43 // return a temporarily constructed version of the scoper. | 43 // return a temporarily constructed version of the scoper. |
44 scoped_ptr<ConDecLogger> TestReturnOfType(int* constructed) { | 44 scoped_ptr<ConDecLogger> TestReturnOfType(int* constructed) { |
45 return scoped_ptr<ConDecLogger>(new ConDecLogger(constructed)); | 45 return scoped_ptr<ConDecLogger>(new ConDecLogger(constructed)); |
46 } | 46 } |
47 | 47 |
| 48 scoped_ptr<ConDecLoggerParent> UpcastUsingPassAs( |
| 49 scoped_ptr<ConDecLogger> object) { |
| 50 return object.PassAs<ConDecLoggerParent>(); |
| 51 } |
| 52 |
48 } // namespace | 53 } // namespace |
49 | 54 |
50 TEST(ScopedPtrTest, ScopedPtr) { | 55 TEST(ScopedPtrTest, ScopedPtr) { |
51 int constructed = 0; | 56 int constructed = 0; |
52 | 57 |
53 { | 58 { |
54 scoped_ptr<ConDecLogger> scoper(new ConDecLogger(&constructed)); | 59 scoped_ptr<ConDecLogger> scoper(new ConDecLogger(&constructed)); |
55 EXPECT_EQ(1, constructed); | 60 EXPECT_EQ(1, constructed); |
56 EXPECT_TRUE(scoper.get()); | 61 EXPECT_TRUE(scoper.get()); |
57 | 62 |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 EXPECT_EQ(0, constructed); | 331 EXPECT_EQ(0, constructed); |
327 | 332 |
328 // Call TestReturnOfType() so the compiler doesn't warn for an unused | 333 // Call TestReturnOfType() so the compiler doesn't warn for an unused |
329 // function. | 334 // function. |
330 { | 335 { |
331 TestReturnOfType(&constructed); | 336 TestReturnOfType(&constructed); |
332 } | 337 } |
333 EXPECT_EQ(0, constructed); | 338 EXPECT_EQ(0, constructed); |
334 } | 339 } |
335 | 340 |
| 341 TEST(ScopedPtrTest, PassAs) { |
| 342 int constructed = 0; |
| 343 { |
| 344 scoped_ptr<ConDecLogger> scoper(new ConDecLogger(&constructed)); |
| 345 EXPECT_EQ(1, constructed); |
| 346 EXPECT_TRUE(scoper.get()); |
| 347 |
| 348 scoped_ptr<ConDecLoggerParent> scoper_parent; |
| 349 scoper_parent = UpcastUsingPassAs(scoper.Pass()); |
| 350 EXPECT_EQ(1, constructed); |
| 351 EXPECT_TRUE(scoper_parent.get()); |
| 352 EXPECT_FALSE(scoper.get()); |
| 353 } |
| 354 EXPECT_EQ(0, constructed); |
| 355 } |
| 356 |
336 // TODO scoped_ptr_malloc | 357 // TODO scoped_ptr_malloc |
OLD | NEW |