The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More;
use lib 'lib';

use ZMQ;
use ZMQ::Constants qw/:all/;

my $ctx = ZMQ::Context->new(1);

my $push = $ctx->socket(ZMQ_PUSH);
$push->bind('tcp://127.0.0.1:5099');

my $pull = $ctx->socket(ZMQ_PULL);
$pull->connect('tcp://127.0.0.1:5099');

my $poller = ZMQ::Poller->new;

$poller->register($pull, ZMQ_POLLIN);
$poller->register($push, ZMQ_POLLOUT);

my $cnt = 0;

for (;;) {
    last if $cnt > 10;

    my @fired = $poller->poll(1000); 

    for (@fired) {
        if ($_->{socket} == $push && $_->{events} == ZMQ_POLLOUT) {
            ok(1, 'push out fired');
            if ( $ZMQ::BACKEND eq 'ZMQ::LibZMQ2' ) {
                $push->send('Hello');
            }
            else {
                $push->sendmsg('Hello');
            }
            $cnt++;
        }
        elsif ($_->{socket} == $pull && $_->{events} == ZMQ_POLLIN) {
            ok(1, 'pull in fired');
            my $msg;
            if ( $ZMQ::BACKEND eq 'ZMQ::LibZMQ2' ) {
                $msg = $pull->recv;
            }
            else {
                $msg = $pull->recvmsg;
            }
            is($msg->data, 'Hello');
            is($msg->size, 5);
            $cnt++;
        }
    }
}

done_testing();