Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
util
RefCount.ut.cpp
Go to the documentation of this file.
1
// The Reactive C++ Toolbox.
2
// Copyright (C) 2013-2019 Swirly Cloud Limited
3
// Copyright (C) 2021 Reactive Markets Limited
4
//
5
// Licensed under the Apache License, Version 2.0 (the "License");
6
// you may not use this file except in compliance with the License.
7
// You may obtain a copy of the License at
8
//
9
// http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing, software
12
// distributed under the License is distributed on an "AS IS" BASIS,
13
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
// See the License for the specific language governing permissions and
15
// limitations under the License.
16
17
#include "
RefCount.hpp
"
18
19
#include <boost/test/unit_test.hpp>
20
21
using namespace
std
;
22
using namespace
toolbox
;
23
24
namespace
{
25
class
Foo
:
public
RefCount
<Foo, ThreadUnsafePolicy> {
26
public
:
27
explicit
Foo
(
int
&
alive
)
noexcept
28
: alive_{
alive
}
29
{
30
++
alive
;
31
}
32
~Foo
() { --alive_; }
33
34
private
:
35
int
& alive_;
36
};
37
}
// namespace
38
39
BOOST_AUTO_TEST_SUITE
(
RefCountSuite
)
40
41
BOOST_AUTO_TEST_CASE
(
RefCountCase
)
42
{
43
int
alive
{0};
44
{
45
auto
ptr1
=
make_intrusive<Foo>
(
alive
);
46
BOOST_CHECK_EQUAL
(
alive
, 1);
47
BOOST_CHECK_EQUAL
(
ptr1
->ref_count(), 1);
48
{
49
auto
ptr2
=
ptr1
;
50
BOOST_CHECK_EQUAL
(
ptr1
->ref_count(), 2);
51
}
52
BOOST_CHECK_EQUAL
(
ptr1
->ref_count(), 1);
53
}
54
BOOST_CHECK_EQUAL
(
alive
, 0);
55
}
56
57
BOOST_AUTO_TEST_SUITE_END
()
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(v.size(), 10U)
RefCount.hpp
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(RefCountCase)
Definition
RefCount.ut.cpp:41
toolbox::RefCount
Base class for atomic referenced counted objects.
Definition
RefCount.hpp:61
std
STL namespace.
toolbox::util::bind
constexpr auto bind() noexcept
Definition
Slot.hpp:92
toolbox::util::Test::Foo
@ Foo
toolbox
Definition
Benchmark.cpp:26
Generated by
1.9.8