Skip to content

Commit 559d373

Browse files
committed
Add back size method, add empty for completeness
As disscussed on #219 PR bringing back `size` method and adding `empty` for completeness.
1 parent 4dde37e commit 559d373

File tree

2 files changed

+45
-12
lines changed

2 files changed

+45
-12
lines changed

tests/poller.cpp

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,34 @@
99
TEST(poller, create_destroy)
1010
{
1111
zmq::poller_t poller;
12+
ASSERT_TRUE(poller.empty ());
1213
}
1314

1415
static_assert(!std::is_copy_constructible<zmq::poller_t>::value, "poller_t should not be copy-constructible");
1516
static_assert(!std::is_copy_assignable<zmq::poller_t>::value, "poller_t should not be copy-assignable");
1617

1718
TEST(poller, move_construct_empty)
1819
{
19-
std::unique_ptr<zmq::poller_t> a{new zmq::poller_t};
20-
zmq::poller_t b = std::move(*a);
21-
20+
std::unique_ptr<zmq::poller_t> a {new zmq::poller_t};
21+
ASSERT_TRUE(a->empty ());
22+
zmq::poller_t b = std::move (*a);
23+
ASSERT_TRUE(b.empty ());
24+
ASSERT_EQ(0u, a->size ());
25+
ASSERT_EQ(0u, b.size ());
2226
a.reset ();
2327
}
2428

2529
TEST(poller, move_assign_empty)
2630
{
2731
std::unique_ptr<zmq::poller_t> a{new zmq::poller_t};
32+
ASSERT_TRUE(a->empty());
2833
zmq::poller_t b;
29-
34+
ASSERT_TRUE(b.empty());
3035
b = std::move(*a);
31-
36+
ASSERT_EQ(0u, a->size ());
37+
ASSERT_EQ(0u, b.size ());
38+
ASSERT_TRUE(a->empty());
39+
ASSERT_TRUE(b.empty());
3240
a.reset ();
3341
}
3442

@@ -39,8 +47,13 @@ TEST(poller, move_construct_non_empty)
3947

4048
std::unique_ptr<zmq::poller_t> a{new zmq::poller_t};
4149
a->add(socket, ZMQ_POLLIN, [](short) {});
42-
zmq::poller_t b = std::move(*a);
43-
50+
ASSERT_FALSE(a->empty ());
51+
ASSERT_EQ(1u, a->size ());
52+
zmq::poller_t b = std::move (*a);
53+
ASSERT_TRUE(a->empty ());
54+
ASSERT_EQ(0u, a->size ());
55+
ASSERT_FALSE(b.empty ());
56+
ASSERT_EQ(1u, b.size ());
4457
a.reset ();
4558
}
4659

@@ -51,10 +64,14 @@ TEST(poller, move_assign_non_empty)
5164

5265
std::unique_ptr<zmq::poller_t> a{new zmq::poller_t};
5366
a->add(socket, ZMQ_POLLIN, [](short) {});
67+
ASSERT_FALSE(a->empty());
68+
ASSERT_EQ(1u, a->size ());
5469
zmq::poller_t b;
55-
5670
b = std::move(*a);
57-
71+
ASSERT_TRUE(a->empty ());
72+
ASSERT_EQ(0u, a->size ());
73+
ASSERT_FALSE(b.empty ());
74+
ASSERT_EQ(1u, b.size ());
5875
a.reset ();
5976
}
6077

@@ -75,6 +92,8 @@ TEST(poller, add_handler_invalid_events_type)
7592
zmq::poller_t::handler_t handler;
7693
short invalid_events_type = 2 << 10;
7794
ASSERT_NO_THROW(poller.add(socket, invalid_events_type, handler));
95+
ASSERT_FALSE(poller.empty ());
96+
ASSERT_EQ(1u, poller.size ());
7897
}
7998

8099
TEST(poller, add_handler_twice_throws)
@@ -229,7 +248,7 @@ TEST(poller, client_server)
229248
ASSERT_EQ(events, ZMQ_POLLOUT);
230249
}
231250

232-
TEST(poller, poller_add_invalid_socket_throws)
251+
TEST(poller, add_invalid_socket_throws)
233252
{
234253
zmq::context_t context;
235254
zmq::poller_t poller;
@@ -239,15 +258,17 @@ TEST(poller, poller_add_invalid_socket_throws)
239258
zmq::error_t);
240259
}
241260

242-
TEST(poller, poller_remove_invalid_socket_throws)
261+
TEST(poller, remove_invalid_socket_throws)
243262
{
244263
zmq::context_t context;
245264
zmq::socket_t socket {context, zmq::socket_type::router};
246265
zmq::poller_t poller;
247266
ASSERT_NO_THROW (poller.add (socket, ZMQ_POLLIN, zmq::poller_t::handler_t {}));
267+
ASSERT_EQ (1u, poller.size ());
248268
std::vector<zmq::socket_t> sockets;
249269
sockets.emplace_back (std::move (socket));
250270
ASSERT_THROW (poller.remove (socket), zmq::error_t);
271+
ASSERT_EQ (1u, poller.size ());
251272
}
252273

253274
TEST(poller, wait_on_added_empty_handler)
@@ -354,9 +375,11 @@ TEST(poller, remove_from_handler)
354375
for (auto i = 0; i < ITER_NO; ++i) {
355376
ASSERT_NO_THROW(poller.add(setup_list[i].server, ZMQ_POLLIN, [&,i](short events) {
356377
ASSERT_EQ(events, ZMQ_POLLIN);
357-
poller.remove(setup_list[ITER_NO - i -1].server);
378+
poller.remove(setup_list[ITER_NO-i-1].server);
379+
ASSERT_EQ(ITER_NO-i-1, poller.size());
358380
}));
359381
}
382+
ASSERT_EQ(ITER_NO, poller.size());
360383
// Clients send messages
361384
for (auto & s : setup_list) {
362385
ASSERT_NO_THROW(s.client.send("Hi"));

zmq.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,6 +1099,16 @@ namespace zmq
10991099
throw error_t ();
11001100
}
11011101

1102+
bool empty () const
1103+
{
1104+
return handlers.empty ();
1105+
}
1106+
1107+
size_t size () const
1108+
{
1109+
return handlers.size ();
1110+
}
1111+
11021112
private:
11031113
std::unique_ptr<void, std::function<void(void*)>> poller_ptr
11041114
{

0 commit comments

Comments
 (0)