Skip to content

Commit ec63fb3

Browse files
committed
Problem: no test case for zmq::monitor_t::init
Solution: added test case
1 parent e0b5629 commit ec63fb3

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

tests/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ add_executable(
2323
poller.cpp
2424
active_poller.cpp
2525
multipart.cpp
26+
monitor.cpp
2627
)
2728

2829
target_link_libraries(
2930
unit_tests
30-
PRIVATE gtest_main
31+
PRIVATE gtest
32+
PRIVATE gmock_main
3133
PRIVATE cppzmq
3234
)
3335

tests/monitor.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <gtest/gtest.h>
2+
#include <gmock/gmock.h>
3+
#include <zmq.hpp>
4+
5+
class mock_monitor_t : public zmq::monitor_t
6+
{
7+
public:
8+
MOCK_METHOD2(on_event_connect_delayed, void(const zmq_event_t &, const char *));
9+
MOCK_METHOD2(on_event_connected, void(const zmq_event_t &, const char *));
10+
};
11+
12+
TEST(monitor, create_destroy)
13+
{
14+
zmq::monitor_t monitor;
15+
}
16+
17+
TEST(monitor, init_check)
18+
{
19+
zmq::context_t ctx;
20+
zmq::socket_t bind_socket(ctx, ZMQ_DEALER);
21+
22+
bind_socket.bind("tcp://127.0.0.1:*");
23+
char endpoint[255];
24+
size_t endpoint_len = sizeof(endpoint);
25+
bind_socket.getsockopt(ZMQ_LAST_ENDPOINT, &endpoint, &endpoint_len);
26+
27+
zmq::socket_t connect_socket(ctx, ZMQ_DEALER);
28+
29+
mock_monitor_t monitor;
30+
EXPECT_CALL(monitor, on_event_connect_delayed(testing::_, testing::_))
31+
.Times(testing::AtLeast(1));
32+
EXPECT_CALL(monitor, on_event_connected(testing::_, testing::_))
33+
.Times(testing::AtLeast(1));
34+
35+
monitor.init(connect_socket, "inproc://foo");
36+
37+
ASSERT_FALSE(monitor.check_event(0));
38+
connect_socket.connect(endpoint);
39+
40+
while (monitor.check_event(100)) {
41+
}
42+
}

0 commit comments

Comments
 (0)