Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
io
Handle.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 "
Handle.hpp
"
18
19
#include <boost/test/unit_test.hpp>
20
21
#include <iostream>
22
23
using namespace
std
;
24
using namespace
toolbox
;
25
26
namespace
{
27
int
last_closed
{};
28
29
struct
TestPolicy {
30
using
Id =
int
;
31
static
constexpr
int
invalid()
noexcept
{
return
-1; }
32
static
void
close(
int
id
)
noexcept
{
last_closed
= id; }
33
};
34
35
using
TestHandle
=
BasicHandle<TestPolicy>
;
36
37
ostream&
operator<<
(ostream& os,
const
TestHandle
& h)
38
{
39
return
os << h.
get
();
40
}
41
42
}
// namespace
43
44
BOOST_AUTO_TEST_SUITE
(
HandleSuite
)
45
46
BOOST_AUTO_TEST_CASE
(
HandleInvalidCase
)
47
{
48
last_closed
= 0;
49
50
BOOST_CHECK
(!
TestHandle
{});
51
BOOST_CHECK_EQUAL
(
TestHandle
{}.get(), -1);
52
BOOST_CHECK_EQUAL
(
last_closed
, 0);
53
54
BOOST_CHECK
(!
TestHandle
{
nullptr
});
55
BOOST_CHECK_EQUAL
(
TestHandle
{
nullptr
}.get(), -1);
56
BOOST_CHECK_EQUAL
(
last_closed
, 0);
57
}
58
59
BOOST_AUTO_TEST_CASE
(
HandleCloseCase
)
60
{
61
last_closed
= 0;
62
63
BOOST_CHECK
(
TestHandle
{1});
64
BOOST_CHECK_EQUAL
(
TestHandle
{1}.get(), 1);
65
BOOST_CHECK_EQUAL
(
last_closed
, 1);
66
}
67
68
BOOST_AUTO_TEST_CASE
(
HandleReleaseCase
)
69
{
70
last_closed
= 0;
71
72
BOOST_CHECK_EQUAL
(
TestHandle
{1}.release(), 1);
73
BOOST_CHECK_EQUAL
(
last_closed
, 0);
74
}
75
76
BOOST_AUTO_TEST_CASE
(
HandleResetCase
)
77
{
78
last_closed
= 0;
79
{
80
TestHandle
h{1};
81
h.reset(2);
82
BOOST_CHECK_EQUAL
(
last_closed
, 1);
83
}
84
BOOST_CHECK_EQUAL
(
last_closed
, 2);
85
}
86
87
BOOST_AUTO_TEST_CASE
(
HandleSwapCase
)
88
{
89
last_closed
= 0;
90
{
91
TestHandle
h{1};
92
TestHandle
{2}.swap(h);
93
BOOST_CHECK_EQUAL
(
last_closed
, 1);
94
}
95
BOOST_CHECK_EQUAL
(
last_closed
, 2);
96
}
97
98
BOOST_AUTO_TEST_CASE
(
HandleMoveCase
)
99
{
100
last_closed
= 0;
101
102
TestHandle
h{1};
103
TestHandle
{std::move(h)};
104
BOOST_CHECK_EQUAL
(
last_closed
, 1);
105
// NOLINTNEXTLINE(bugprone-use-after-move, clang-analyzer-cplusplus.Move)
106
BOOST_CHECK_EQUAL
(h.get(), -1);
107
108
h.reset(2);
109
{
110
TestHandle
tmp
;
111
tmp
= std::move(h);
112
}
113
BOOST_CHECK_EQUAL
(
last_closed
, 2);
114
// NOLINTNEXTLINE(bugprone-use-after-move, clang-analyzer-cplusplus.Move)
115
BOOST_CHECK_EQUAL
(h.get(), -1);
116
}
117
118
BOOST_AUTO_TEST_CASE
(
HandleEqualityCase
)
119
{
120
BOOST_CHECK_EQUAL
(
TestHandle
{1},
TestHandle
{1});
121
BOOST_CHECK_NE
(
TestHandle
{1},
TestHandle
{2});
122
}
123
124
BOOST_AUTO_TEST_SUITE_END
()
Handle.hpp
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(HandleInvalidCase)
Definition
Handle.ut.cpp:46
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(v.size(), 10U)
toolbox::BasicHandle
Definition
Handle.hpp:28
toolbox::io::BasicHandle::get
constexpr Id get() const noexcept
Definition
Handle.hpp:67
std
STL namespace.
toolbox::hdr::operator<<
ostream & operator<<(ostream &os, PutPercentiles pp)
Definition
Utility.cpp:96
toolbox::util::bind
constexpr auto bind() noexcept
Definition
Slot.hpp:92
toolbox
Definition
Benchmark.cpp:26
BOOST_CHECK
BOOST_CHECK(isnan(stod(""sv, numeric_limits< double >::quiet_NaN())))
Generated by
1.9.8