@@ -361,6 +361,59 @@ TEST(poller, wait_one_return)
361
361
ASSERT_EQ (count, result);
362
362
}
363
363
364
+ TEST (poller, wait_on_move_constructed_poller)
365
+ {
366
+ server_client_setup s;
367
+ ASSERT_NO_THROW (s.client .send (" Hi" ));
368
+ zmq::poller_t a;
369
+ zmq::poller_t ::handler_t handler;
370
+ ASSERT_NO_THROW (a.add (s.server , ZMQ_POLLIN, handler));
371
+ ASSERT_EQ (1u , a.size ());
372
+ zmq::poller_t b {std::move (a)};
373
+ ASSERT_EQ (1u , b.size ());
374
+ ASSERT_NO_THROW (b.wait (std::chrono::milliseconds {-1 }));
375
+ }
376
+
377
+ TEST (poller, wait_on_move_assign_poller)
378
+ {
379
+ server_client_setup s;
380
+ ASSERT_NO_THROW (s.client .send (" Hi" ));
381
+ zmq::poller_t a;
382
+ zmq::poller_t ::handler_t handler;
383
+ ASSERT_NO_THROW (a.add (s.server , ZMQ_POLLIN, handler));
384
+ ASSERT_EQ (1u , a.size ());
385
+ zmq::poller_t b;
386
+ ASSERT_EQ (0u , b.size ());
387
+ b = {std::move (a)};
388
+ ASSERT_EQ (1u , b.size ());
389
+ ASSERT_NO_THROW (b.wait (std::chrono::milliseconds {-1 }));
390
+ }
391
+
392
+ TEST (poller, received_on_move_construced_poller)
393
+ {
394
+ // Setup server and client
395
+ server_client_setup s;
396
+ int count = 0 ;
397
+ // Setup poller a
398
+ zmq::poller_t a;
399
+ ASSERT_NO_THROW (a.add (s.server , ZMQ_POLLIN, [&count](short ) {
400
+ ++count;
401
+ }));
402
+ // client sends message
403
+ ASSERT_NO_THROW (s.client .send (" Hi" ));
404
+ // wait for message and verify it is received
405
+ a.wait (std::chrono::milliseconds{500 });
406
+ ASSERT_EQ (1u , count);
407
+ // Move construct poller b
408
+ zmq::poller_t b{std::move (a)};
409
+ // client sends message again
410
+ ASSERT_NO_THROW (s.client .send (" Hi" ));
411
+ // wait for message and verify it is received
412
+ b.wait (std::chrono::milliseconds{500 });
413
+ ASSERT_EQ (2u , count);
414
+ }
415
+
416
+
364
417
TEST (poller, remove_from_handler)
365
418
{
366
419
constexpr auto ITER_NO = 10 ;
0 commit comments