Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
util
Enum.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 "
Enum.hpp
"
18
19
#include <boost/test/unit_test.hpp>
20
21
#include <boost/lexical_cast.hpp>
22
23
using namespace
boost;
24
using namespace
std
;
25
using namespace
toolbox
;
26
27
namespace
toolbox
{
28
inline
namespace
util {
29
30
enum class
Test
:
int
{
Foo
= 1,
Bar
= 2,
Baz
= 4,
Qux
= 8 };
31
32
constexpr
Test
operator
""
_test
(
unsigned
long
long
val
)
noexcept
33
{
34
return
box<Test>
(
val
);
35
}
36
37
const
char
*
enum_string
(
Test
t
)
38
{
39
switch
(
t
) {
40
case
Test::Foo
:
41
return
"Foo"
;
42
case
Test::Bar
:
43
return
"Bar"
;
44
case
Test::Baz
:
45
return
"Baz"
;
46
case
Test::Qux
:
47
return
"Qux"
;
48
}
49
terminate
();
50
}
51
52
inline
ostream&
operator<<
(ostream& os,
Test
t
)
53
{
54
return
os <<
enum_string
(
t
);
55
}
56
57
}
// namespace util
58
}
// namespace toolbox
59
60
BOOST_AUTO_TEST_SUITE
(
EnumSuite
)
61
62
BOOST_AUTO_TEST_CASE
(
EnumStringCase
)
63
{
64
BOOST_CHECK_EQUAL
(
lexical_cast<string>
(Test::Foo),
"Foo"
);
65
BOOST_CHECK_EQUAL
(
lexical_cast<string>
(Test::Bar),
"Bar"
);
66
BOOST_CHECK_EQUAL
(
lexical_cast<string>
(Test::Baz),
"Baz"
);
67
BOOST_CHECK_EQUAL
(
lexical_cast<string>
(Test::Qux),
"Qux"
);
68
}
69
70
BOOST_AUTO_TEST_SUITE_END
()
Enum.hpp
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(EnumStringCase)
Definition
Enum.ut.cpp:62
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(v.size(), 10U)
std
STL namespace.
std::operator<<
ostream & operator<<(ostream &os, const pair< T, U > &p)
Definition
Parser.ut.cpp:29
toolbox::util::enum_string
const char * enum_string(Test t)
Definition
Enum.ut.cpp:37
toolbox::util::bind
constexpr auto bind() noexcept
Definition
Slot.hpp:92
toolbox::util::Test
Test
Definition
Enum.ut.cpp:30
toolbox::util::Test::Foo
@ Foo
toolbox::util::Test::Qux
@ Qux
toolbox::util::Test::Bar
@ Bar
toolbox::util::Test::Baz
@ Baz
toolbox
Definition
Benchmark.cpp:26
Generated by
1.9.8