blob: 9e0975a3ecb94720d8068926820d4760c9361378 [file] [log] [blame]
Chromium+Blink automerger9764d302015-09-23 06:38:421// 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
Chromium+Blink automerger9764d302015-09-23 06:38:425#include "wtf/RefPtr.h"
6
tkent19e281f2015-11-18 02:07:437#include "testing/gtest/include/gtest/gtest.h"
leviw8ac04722016-03-26 01:19:538#include "wtf/RefCounted.h"
Chromium+Blink automerger9764d302015-09-23 06:38:429#include "wtf/text/StringImpl.h"
Chromium+Blink automerger9764d302015-09-23 06:38:4210
11namespace WTF {
12
Blink Reformatbfdda212016-10-01 00:25:3213TEST(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);
Chromium+Blink automerger9764d302015-09-23 06:38:4220}
21
bugsnashaccbc9b2017-02-20 20:38:2422TEST(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
Blink Reformatbfdda212016-10-01 00:25:3235TEST(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);
Chromium+Blink automerger9764d302015-09-23 06:38:4241}
42
Blink Reformatbfdda212016-10-01 00:25:3243class RefCountedClass : public RefCounted<RefCountedClass> {};
leviw8ac04722016-03-26 01:19:5344
Blink Reformatbfdda212016-10-01 00:25:3245TEST(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());
leviw8ac04722016-03-26 01:19:5349}
50
Blink Reformatbfdda212016-10-01 00:25:3251} // namespace WTF