8
8
TEST (poller, create_destroy)
9
9
{
10
10
zmq::poller_t poller;
11
+ ASSERT_EQ (0u , poller.size ());
11
12
}
12
13
13
- TEST (poller, move_contruct)
14
+ static_assert (!std::is_copy_constructible<zmq::poller_t >::value, " poller_t should not be copy-constructible" );
15
+ static_assert (!std::is_copy_assignable<zmq::poller_t >::value, " poller_t should not be copy-assignable" );
16
+
17
+ TEST (poller, move_construct_empty)
14
18
{
15
- zmq::poller_t poller;
16
- zmq::poller_t poller_move {std::move (poller)};
19
+ std::unique_ptr<zmq::poller_t > a{new zmq::poller_t };
20
+ zmq::poller_t b = std::move (*a);
21
+
22
+ ASSERT_EQ (0u , a->size ());
23
+ a.reset ();
24
+ ASSERT_EQ (0u , b.size ());
17
25
}
18
26
19
- TEST (poller, move_assign )
27
+ TEST (poller, move_assign_empty )
20
28
{
21
- zmq::poller_t poller;
22
- zmq::poller_t poller_assign;
23
- poller_assign = std::move (poller);
29
+ std::unique_ptr<zmq::poller_t > a{new zmq::poller_t };
30
+ zmq::poller_t b;
31
+
32
+ b = std::move (*a);
33
+
34
+ ASSERT_EQ (0u , a->size ());
35
+ a.reset ();
36
+ ASSERT_EQ (0u , b.size ());
37
+ }
38
+
39
+ TEST (poller, move_construct_non_empty)
40
+ {
41
+ zmq::context_t context;
42
+ zmq::socket_t socket{context, zmq::socket_type::router};
43
+
44
+ std::unique_ptr<zmq::poller_t > a{new zmq::poller_t };
45
+ a->add (socket, ZMQ_POLLIN, [](short ) {});
46
+ zmq::poller_t b = std::move (*a);
47
+
48
+ ASSERT_EQ (0u , a->size ());
49
+ a.reset ();
50
+ ASSERT_EQ (1u , b.size ());
51
+ }
52
+
53
+ TEST (poller, move_assign_non_empty)
54
+ {
55
+ zmq::context_t context;
56
+ zmq::socket_t socket{context, zmq::socket_type::router};
57
+
58
+ std::unique_ptr<zmq::poller_t > a{new zmq::poller_t };
59
+ a->add (socket, ZMQ_POLLIN, [](short ) {});
60
+ zmq::poller_t b;
61
+
62
+ b = std::move (*a);
63
+
64
+ ASSERT_EQ (0u , a->size ());
65
+ a.reset ();
66
+ ASSERT_EQ (1u , b.size ());
24
67
}
25
68
26
69
TEST (poller, add_handler)
@@ -49,12 +92,14 @@ TEST(poller, add_handler_twice_throws)
49
92
zmq::poller_t poller;
50
93
zmq::poller_t ::handler_t handler;
51
94
poller.add (socket, ZMQ_POLLIN, handler);
95
+ // / \todo the actual error code should be checked
52
96
ASSERT_THROW (poller.add (socket, ZMQ_POLLIN, handler), zmq::error_t );
53
97
}
54
98
55
99
TEST (poller, wait_with_no_handlers_throws)
56
100
{
57
101
zmq::poller_t poller;
102
+ // / \todo the actual error code should be checked
58
103
ASSERT_THROW (poller.wait (std::chrono::milliseconds{10 }), zmq::error_t );
59
104
}
60
105
@@ -63,16 +108,26 @@ TEST(poller, remove_unregistered_throws)
63
108
zmq::context_t context;
64
109
zmq::socket_t socket{context, zmq::socket_type::router};
65
110
zmq::poller_t poller;
111
+ // / \todo the actual error code should be checked
66
112
ASSERT_THROW (poller.remove (socket), zmq::error_t );
67
113
}
68
114
69
- TEST (poller, remove_registered)
115
+ // / \todo this should lead to an exception instead
116
+ TEST (poller, remove_registered_empty)
70
117
{
71
118
zmq::context_t context;
72
119
zmq::socket_t socket{context, zmq::socket_type::router};
73
120
zmq::poller_t poller;
74
- zmq::poller_t ::handler_t handler;
75
- poller.add (socket, ZMQ_POLLIN, handler);
121
+ poller.add (socket, ZMQ_POLLIN, zmq::poller_t ::handler_t {});
122
+ ASSERT_NO_THROW (poller.remove (socket));
123
+ }
124
+
125
+ TEST (poller, remove_registered_non_empty)
126
+ {
127
+ zmq::context_t context;
128
+ zmq::socket_t socket{context, zmq::socket_type::router};
129
+ zmq::poller_t poller;
130
+ poller.add (socket, ZMQ_POLLIN, [](short ) {});
76
131
ASSERT_NO_THROW (poller.remove (socket));
77
132
}
78
133
@@ -85,7 +140,7 @@ class loopback_ip4_binder
85
140
std::string endpoint () { return endpoint_; }
86
141
private:
87
142
// Helper function used in constructor
88
- // as Gtest allows only void returning functions
143
+ // as Gtest allows ASSERT_* only in void returning functions
89
144
// and constructor/destructor are not.
90
145
void bind (zmq::socket_t &socket)
91
146
{
@@ -112,7 +167,7 @@ TEST(poller, poll_basic)
112
167
zmq::socket_t sink{context, zmq::socket_type::pull};
113
168
ASSERT_NO_THROW (sink.connect (endpoint));
114
169
115
- std::string message = " H" ;
170
+ const std::string message = " H" ;
116
171
117
172
// TODO: send overload for string would be handy.
118
173
ASSERT_NO_THROW (vent.send (std::begin (message), std::end (message)));
@@ -128,10 +183,11 @@ TEST(poller, poll_basic)
128
183
ASSERT_TRUE (message_received);
129
184
}
130
185
186
+ // / \todo this contains multiple test cases that should be split up
131
187
TEST (poller, client_server)
132
188
{
133
189
zmq::context_t context;
134
- std::string send_msg = " Hi" ;
190
+ const std::string send_msg = " Hi" ;
135
191
136
192
// Setup server
137
193
zmq::socket_t server{context, zmq::socket_type::router};
0 commit comments