Reland "Move webrtc/{base => rtc_base}" (https://codereview.webrtc.org/2877023002)
Reland the base->rtc_base without adding stub headers (will be done in follow-up CL). This preserves git blame history of all files. BUG=webrtc:7634 NOTRY=True TBR=kwiberg@webrtc.org Change-Id: Iea3bb6f3f67b8374c96337b63e8f5aa3e6181012 Reviewed-on: https://chromium-review.googlesource.com/554611 Reviewed-by: Henrik Kjellander <kjellander@webrtc.org> Cr-Commit-Position: refs/heads/master@{#18821}
This commit is contained in:
91
webrtc/rtc_base/refcountedobject_unittest.cc
Normal file
91
webrtc/rtc_base/refcountedobject_unittest.cc
Normal file
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright 2016 The WebRTC Project Authors. All rights reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "webrtc/base/gunit.h"
|
||||
#include "webrtc/base/refcount.h"
|
||||
|
||||
namespace rtc {
|
||||
|
||||
namespace {
|
||||
|
||||
class A {
|
||||
public:
|
||||
A() {}
|
||||
|
||||
private:
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(A);
|
||||
};
|
||||
|
||||
class RefClass : public RefCountInterface {
|
||||
public:
|
||||
RefClass() {}
|
||||
|
||||
protected:
|
||||
~RefClass() override {}
|
||||
};
|
||||
|
||||
class RefClassWithRvalue : public RefCountInterface {
|
||||
public:
|
||||
explicit RefClassWithRvalue(std::unique_ptr<A> a) : a_(std::move(a)) {}
|
||||
|
||||
protected:
|
||||
~RefClassWithRvalue() override {}
|
||||
|
||||
public:
|
||||
std::unique_ptr<A> a_;
|
||||
};
|
||||
|
||||
class RefClassWithMixedValues : public RefCountInterface {
|
||||
public:
|
||||
RefClassWithMixedValues(std::unique_ptr<A> a, int b, const std::string& c)
|
||||
: a_(std::move(a)), b_(b), c_(c) {}
|
||||
|
||||
protected:
|
||||
~RefClassWithMixedValues() override {}
|
||||
|
||||
public:
|
||||
std::unique_ptr<A> a_;
|
||||
int b_;
|
||||
std::string c_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST(RefCountedObject, Basic) {
|
||||
scoped_refptr<RefCountedObject<RefClass>> aref(
|
||||
new RefCountedObject<RefClass>());
|
||||
EXPECT_TRUE(aref->HasOneRef());
|
||||
EXPECT_EQ(2, aref->AddRef());
|
||||
EXPECT_EQ(1, aref->Release());
|
||||
}
|
||||
|
||||
TEST(RefCountedObject, SupportRValuesInCtor) {
|
||||
std::unique_ptr<A> a(new A());
|
||||
scoped_refptr<RefClassWithRvalue> ref(
|
||||
new RefCountedObject<RefClassWithRvalue>(std::move(a)));
|
||||
EXPECT_TRUE(ref->a_.get() != nullptr);
|
||||
EXPECT_TRUE(a.get() == nullptr);
|
||||
}
|
||||
|
||||
TEST(RefCountedObject, SupportMixedTypesInCtor) {
|
||||
std::unique_ptr<A> a(new A());
|
||||
int b = 9;
|
||||
std::string c = "hello";
|
||||
scoped_refptr<RefClassWithMixedValues> ref(
|
||||
new RefCountedObject<RefClassWithMixedValues>(std::move(a), b, c));
|
||||
EXPECT_TRUE(ref->a_.get() != nullptr);
|
||||
EXPECT_TRUE(a.get() == nullptr);
|
||||
EXPECT_EQ(b, ref->b_);
|
||||
EXPECT_EQ(c, ref->c_);
|
||||
}
|
||||
|
||||
} // namespace rtc
|
||||
Reference in New Issue
Block a user