OLD | NEW |
(Empty) | |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "base/basictypes.h" |
| 6 #include "base/ios/weak_nsobject.h" |
| 7 #include "base/mac/scoped_nsobject.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 |
| 10 using base::WeakNSObject; |
| 11 |
| 12 namespace { |
| 13 |
| 14 TEST(WeakNSObjectTest, WeakNSObject) { |
| 15 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 16 WeakNSObject<NSObject> w1(p1); |
| 17 EXPECT_TRUE(w1); |
| 18 p1.reset(); |
| 19 EXPECT_FALSE(w1); |
| 20 } |
| 21 |
| 22 TEST(WeakNSObjectTest, MultipleWeakNSObject) { |
| 23 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 24 WeakNSObject<NSObject> w1(p1); |
| 25 WeakNSObject<NSObject> w2(w1); |
| 26 EXPECT_TRUE(w1); |
| 27 EXPECT_TRUE(w2); |
| 28 EXPECT_TRUE(w1.get() == w2.get()); |
| 29 p1.reset(); |
| 30 EXPECT_FALSE(w1); |
| 31 EXPECT_FALSE(w2); |
| 32 } |
| 33 |
| 34 TEST(WeakNSObjectTest, WeakNSObjectDies) { |
| 35 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 36 { |
| 37 WeakNSObject<NSObject> w1(p1); |
| 38 EXPECT_TRUE(w1); |
| 39 } |
| 40 } |
| 41 |
| 42 TEST(WeakNSObjectTest, WeakNSObjectReset) { |
| 43 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 44 WeakNSObject<NSObject> w1(p1); |
| 45 EXPECT_TRUE(w1); |
| 46 w1.reset(); |
| 47 EXPECT_FALSE(w1); |
| 48 EXPECT_TRUE(p1); |
| 49 EXPECT_TRUE([p1 description]); |
| 50 } |
| 51 |
| 52 TEST(WeakNSObjectTest, WeakNSObjectResetWithObject) { |
| 53 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 54 base::scoped_nsobject<NSObject> p2([[NSObject alloc] init]); |
| 55 WeakNSObject<NSObject> w1(p1); |
| 56 EXPECT_TRUE(w1); |
| 57 w1.reset(p2); |
| 58 EXPECT_TRUE(w1); |
| 59 EXPECT_TRUE([p1 description]); |
| 60 EXPECT_TRUE([p2 description]); |
| 61 } |
| 62 |
| 63 TEST(WeakNSObjectTest, WeakNSObjectEmpty) { |
| 64 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 65 WeakNSObject<NSObject> w1; |
| 66 EXPECT_FALSE(w1); |
| 67 w1.reset(p1); |
| 68 EXPECT_TRUE(w1); |
| 69 p1.reset(); |
| 70 EXPECT_FALSE(w1); |
| 71 } |
| 72 |
| 73 TEST(WeakNSObjectTest, WeakNSObjectCopy) { |
| 74 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 75 WeakNSObject<NSObject> w1(p1); |
| 76 WeakNSObject<NSObject> w2(w1); |
| 77 EXPECT_TRUE(w1); |
| 78 EXPECT_TRUE(w2); |
| 79 p1.reset(); |
| 80 EXPECT_FALSE(w1); |
| 81 EXPECT_FALSE(w2); |
| 82 } |
| 83 |
| 84 TEST(WeakNSObjectTest, WeakNSObjectAssignment) { |
| 85 base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); |
| 86 WeakNSObject<NSObject> w1(p1); |
| 87 WeakNSObject<NSObject> w2; |
| 88 EXPECT_FALSE(w2); |
| 89 w2 = w1; |
| 90 EXPECT_TRUE(w1); |
| 91 EXPECT_TRUE(w2); |
| 92 p1.reset(); |
| 93 EXPECT_FALSE(w1); |
| 94 EXPECT_FALSE(w2); |
| 95 } |
| 96 |
| 97 } // namespace |
OLD | NEW |