OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 "wtf/RefPtr.h" | |
6 | |
7 #include "testing/gtest/include/gtest/gtest.h" | |
8 #include "wtf/RefCounted.h" | |
9 #include "wtf/text/StringImpl.h" | |
10 | |
11 namespace WTF { | |
12 | |
13 TEST(RefPtrTest, Basic) { | |
14 RefPtr<StringImpl> string; | |
15 EXPECT_TRUE(!string); | |
16 string = StringImpl::create("test"); | |
17 EXPECT_TRUE(!!string); | |
18 string.clear(); | |
19 EXPECT_TRUE(!string); | |
20 } | |
21 | |
22 TEST(RefPtrTest, LeakRef) { | |
23 RefPtr<StringImpl> string = StringImpl::create("test"); | |
24 EXPECT_TRUE(string); | |
25 EXPECT_TRUE(string->hasOneRef()); | |
26 StringImpl* raw = string.get(); | |
27 StringImpl* leaked = string.leakRef(); | |
28 EXPECT_TRUE(!string); | |
29 EXPECT_TRUE(leaked); | |
30 EXPECT_TRUE(leaked->hasOneRef()); | |
31 EXPECT_EQ(raw, leaked); | |
32 leaked->deref(); | |
33 } | |
34 | |
35 TEST(RefPtrTest, MoveAssignmentOperator) { | |
36 RefPtr<StringImpl> a = StringImpl::create("a"); | |
37 RefPtr<StringImpl> b = StringImpl::create("b"); | |
38 b = std::move(a); | |
39 EXPECT_TRUE(!!b); | |
40 EXPECT_TRUE(!a); | |
41 } | |
42 | |
43 class RefCountedClass : public RefCounted<RefCountedClass> {}; | |
44 | |
45 TEST(RefPtrTest, ConstObject) { | |
46 // This test is only to ensure we force the compilation of a const RefCounted | |
47 // object to ensure the generated code compiles. | |
48 RefPtr<const RefCountedClass> ptrToConst = adoptRef(new RefCountedClass()); | |
49 } | |
50 | |
51 } // namespace WTF | |
OLD | NEW |