1 #include <catch2/catch_all.hpp>
5 #include <forward_list>
7 TEST_CASE(
"send_multipart test",
"[send_multipart]")
12 output.bind(
"inproc://multipart.test");
13 input.connect(
"inproc://multipart.test");
15 SECTION(
"send 0 messages") {
16 std::vector<zmq::message_t> imsgs;
17 auto iret = zmq::send_multipart(
input, imsgs);
21 SECTION(
"send 1 message") {
23 auto iret = zmq::send_multipart(
input, imsgs);
27 std::vector<zmq::message_t> omsgs;
28 auto oret = zmq::recv_multipart(
output, std::back_inserter(omsgs));
31 REQUIRE(omsgs.size() == 1);
34 SECTION(
"send 2 messages") {
36 auto iret = zmq::send_multipart(
input, imsgs);
40 std::vector<zmq::message_t> omsgs;
41 auto oret = zmq::recv_multipart(
output, std::back_inserter(omsgs));
44 REQUIRE(omsgs.size() == 2);
48 SECTION(
"send 2 messages, const_buffer") {
49 std::array<zmq::const_buffer, 2> imsgs = {zmq::str_buffer(
"foo"),
50 zmq::str_buffer(
"bar!")};
51 auto iret = zmq::send_multipart(
input, imsgs);
55 std::vector<zmq::message_t> omsgs;
56 auto oret = zmq::recv_multipart(
output, std::back_inserter(omsgs));
59 REQUIRE(omsgs.size() == 2);
63 SECTION(
"send 2 messages, mutable_buffer") {
65 std::array<zmq::mutable_buffer, 2> imsgs = {
67 auto iret = zmq::send_multipart(
input, imsgs);
71 std::vector<zmq::message_t> omsgs;
72 auto oret = zmq::recv_multipart(
output, std::back_inserter(omsgs));
75 REQUIRE(omsgs.size() == 2);
79 SECTION(
"send 2 messages, dontwait") {
81 push.bind(
"inproc://multipart.test.push");
84 auto iret = zmq::send_multipart(
push, imsgs, zmq::send_flags::dontwait);
87 SECTION(
"send, misc. containers") {
88 std::vector<zmq::message_t> msgs_vec;
89 msgs_vec.emplace_back(3);
90 msgs_vec.emplace_back(4);
91 auto iret = zmq::send_multipart(
input, msgs_vec);
95 std::forward_list<zmq::message_t> msgs_list;
96 msgs_list.emplace_front(4);
97 msgs_list.emplace_front(3);
98 iret = zmq::send_multipart(
input, msgs_list);
103 const auto msgs_il = {zmq::str_buffer(
"foo"), zmq::str_buffer(
"bar!")};
104 iret = zmq::send_multipart(
input, msgs_il);
108 iret = zmq::send_multipart(
input,
109 std::initializer_list<zmq::const_buffer>{
110 zmq::str_buffer(
"foo"),
111 zmq::str_buffer(
"bar!")});
115 SECTION(
"send with invalid socket") {
116 std::vector<zmq::message_t>
msgs(1);