Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
util
RingBuffer.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 "
RingBuffer.hpp
"
18
19
#include <boost/test/unit_test.hpp>
20
21
using namespace
std
;
22
using namespace
toolbox
;
23
24
BOOST_AUTO_TEST_SUITE
(
RingBufferSuite
)
25
26
BOOST_AUTO_TEST_CASE
(
RingBufferCase
)
27
{
28
using
IntRingBuffer
=
RingBuffer<int>
;
29
30
IntRingBuffer
rb
{4};
31
BOOST_CHECK
(
rb
.empty());
32
BOOST_CHECK
(!
rb
.full());
33
BOOST_CHECK_EQUAL
(
rb
.size(), 0
U
);
34
35
rb
.write([](
int
&
val
) {
val
= 1; });
36
BOOST_CHECK
(!
rb
.empty());
37
BOOST_CHECK
(!
rb
.full());
38
BOOST_CHECK_EQUAL
(
rb
.size(), 1U);
39
40
rb
.clear();
41
BOOST_CHECK
(
rb
.empty());
42
BOOST_CHECK
(!
rb
.full());
43
BOOST_CHECK_EQUAL
(
rb
.size(), 0
U
);
44
45
rb
.push(1);
46
rb
.push(2);
47
rb
.push(3);
48
rb
.push(4);
49
BOOST_CHECK
(!
rb
.empty());
50
BOOST_CHECK
(
rb
.full());
51
BOOST_CHECK_EQUAL
(
rb
.size(), 4U);
52
53
rb
.push(5);
54
BOOST_CHECK
(!
rb
.empty());
55
BOOST_CHECK
(
rb
.full());
56
BOOST_CHECK_EQUAL
(
rb
.size(), 4U);
57
58
int
val
;
59
rb
.fetch([&
val
](
const
int
&
ref
) {
val
=
ref
; });
60
BOOST_CHECK
(2);
61
BOOST_CHECK
(!
rb
.empty());
62
BOOST_CHECK
(!
rb
.full());
63
BOOST_CHECK_EQUAL
(
rb
.size(), 3U);
64
65
BOOST_CHECK_EQUAL
(
rb
.front(), 3);
66
rb
.pop();
67
BOOST_CHECK_EQUAL
(
rb
.front(), 4);
68
rb
.pop();
69
BOOST_CHECK_EQUAL
(
rb
.front(), 5);
70
rb
.pop();
71
72
BOOST_CHECK
(
rb
.empty());
73
BOOST_CHECK
(!
rb
.full());
74
BOOST_CHECK_EQUAL
(
rb
.size(), 0
U
);
75
}
76
77
BOOST_AUTO_TEST_SUITE_END
()
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(v.size(), 10U)
RingBuffer.hpp
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(RingBufferCase)
Definition
RingBuffer.ut.cpp:26
toolbox::RingBuffer
Definition
RingBuffer.hpp:28
std
STL namespace.
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