cppzmq
tests
socket_ref.cpp
Go to the documentation of this file.
1
#include <catch2/catch_all.hpp>
2
#include <
zmq.hpp
>
3
#ifdef ZMQ_CPP11
4
5
#ifdef ZMQ_CPP17
6
static_assert(std::is_nothrow_swappable_v<zmq::socket_ref>);
7
#endif
8
static_assert(
sizeof
(
zmq::socket_ref
) ==
sizeof
(
void
*),
"size mismatch"
);
9
static_assert(
alignof
(
zmq::socket_ref
) ==
alignof
(
void
*),
"alignment mismatch"
);
10
static_assert(ZMQ_IS_TRIVIALLY_COPYABLE(
zmq::socket_ref
),
11
"needs to be trivially copyable"
);
12
13
TEST_CASE
(
"socket_ref default init"
,
"[socket_ref]"
)
14
{
15
zmq::socket_ref
sr;
16
CHECK
(!sr);
17
CHECK
(sr ==
nullptr
);
18
CHECK
(
nullptr
== sr);
19
CHECK
(sr.handle() ==
nullptr
);
20
}
21
22
TEST_CASE
(
"socket_ref create from nullptr"
,
"[socket_ref]"
)
23
{
24
zmq::socket_ref
sr =
nullptr
;
25
CHECK
(sr ==
nullptr
);
26
CHECK
(sr.handle() ==
nullptr
);
27
}
28
29
TEST_CASE
(
"socket_ref create from handle"
,
"[socket_ref]"
)
30
{
31
void
*np =
nullptr
;
32
zmq::socket_ref
sr{
zmq::from_handle
, np};
33
CHECK
(sr ==
nullptr
);
34
CHECK
(sr.handle() ==
nullptr
);
35
}
36
37
TEST_CASE
(
"socket_ref compare"
,
"[socket_ref]"
)
38
{
39
zmq::socket_ref
sr1;
40
zmq::socket_ref
sr2;
41
CHECK
(sr1 == sr2);
42
CHECK
(!(sr1 != sr2));
43
}
44
45
TEST_CASE
(
"socket_ref compare from socket_t"
,
"[socket_ref]"
)
46
{
47
zmq::context_t
context;
48
zmq::socket_t
s1(context, zmq::socket_type::router);
49
zmq::socket_t
s2(context, zmq::socket_type::dealer);
50
zmq::socket_ref
sr1 = s1;
51
zmq::socket_ref
sr2 = s2;
52
CHECK
(sr1);
53
CHECK
(sr2);
54
CHECK
(sr1 == s1);
55
CHECK
(sr2 == s2);
56
CHECK
(sr1.handle() == s1.handle());
57
CHECK
(sr1 != sr2);
58
CHECK
(sr1.handle() != sr2.handle());
59
CHECK
(sr1 !=
nullptr
);
60
CHECK
(
nullptr
!= sr1);
61
CHECK
(sr2 !=
nullptr
);
62
const
bool
comp1 = (sr1 < sr2) != (sr1 >= sr2);
63
CHECK
(comp1);
64
const
bool
comp2 = (sr1 > sr2) != (sr1 <= sr2);
65
CHECK
(comp2);
66
std::hash<zmq::socket_ref> hash;
67
CHECK
(hash(sr1) != hash(sr2));
68
CHECK
(hash(sr1) == hash(s1));
69
}
70
71
TEST_CASE
(
"socket_ref assignment"
,
"[socket_ref]"
)
72
{
73
zmq::context_t
context;
74
zmq::socket_t
s1(context, zmq::socket_type::router);
75
zmq::socket_t
s2(context, zmq::socket_type::dealer);
76
zmq::socket_ref
sr1 = s1;
77
zmq::socket_ref
sr2 = s2;
78
sr1 = s2;
79
CHECK
(sr1 == sr2);
80
CHECK
(sr1.handle() == sr2.handle());
81
sr1 = std::move(sr2);
82
CHECK
(sr1 == sr2);
83
CHECK
(sr1.handle() == sr2.handle());
84
sr2 =
nullptr
;
85
CHECK
(sr1 != sr2);
86
sr1 =
nullptr
;
87
CHECK
(sr1 == sr2);
88
}
89
90
TEST_CASE
(
"socket_ref swap"
,
"[socket_ref]"
)
91
{
92
zmq::socket_ref
sr1;
93
zmq::socket_ref
sr2;
94
using
std::swap
;
95
swap
(sr1, sr2);
96
}
97
98
TEST_CASE
(
"socket_ref type punning"
,
"[socket_ref]"
)
99
{
100
struct
SVP
101
{
102
void
*
p
;
103
} svp;
104
struct
SSR
105
{
106
zmq::socket_ref
sr;
107
} ssr;
108
109
zmq::context_t
context;
110
zmq::socket_t
socket(context, zmq::socket_type::router);
111
CHECK
(socket.handle() !=
nullptr
);
112
svp.p = socket.handle();
113
// static_cast to silence incorrect warning
114
std::memcpy(
static_cast<
void
*
>
(&ssr), &svp,
sizeof
(ssr));
115
CHECK
(ssr.sr == socket);
116
}
117
118
#endif
TEST_CASE
TEST_CASE("context construct default and destroy", "[context]")
Definition:
context.cpp:9
zmq::swap
void swap(message_t &a, message_t &b) ZMQ_NOTHROW
Definition:
zmq.hpp:749
zmq::socket_t
Definition:
zmq.hpp:2188
zmq::from_handle
ZMQ_CONSTEXPR_VAR from_handle_t from_handle
Definition:
zmq.hpp:2109
zmq::socket_ref
Definition:
zmq.hpp:2114
zmq.hpp
zmq::context_t
Definition:
zmq.hpp:799
p
const char * p
Definition:
gmock-matchers_test.cc:3863
std::swap
void swap(Json::Value &a, Json::Value &b)
Specialize std::swap() for Json::Value.
Definition:
json.h:1226
CHECK
#define CHECK(x)
Definition:
php/ext/google/protobuf/upb.c:8393
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:58