use strict;
use warnings;
use Test::More;
use ZeroMQ qw/:all/;
subtest 'Poller with callback' => sub {
my $ctxt = ZeroMQ::Context->new();
my $rep = $ctxt->socket(ZMQ_REP);
$rep->bind("inproc://polltest");
my $req = $ctxt->socket(ZMQ_REQ);
$req->connect("inproc://polltest");
my $called = 0;
my $poller = ZeroMQ::Poller->new(
{
socket => $rep,
events => ZMQ_POLLIN,
callback => sub { $called++ }
}
);
ok not $poller->has_event(0);
$req->send("Test");
$poller->poll(1);
ok $poller->has_event(0);
is $called, 1;
# repeat, to make sure event does not go away until picked up
$poller->poll(1);
ok $poller->has_event(0);
$rep->recv();
$poller->poll(1);
ok not $poller->has_event(0);
};
subtest 'Poller with no callback' => sub {
my $ctxt = ZeroMQ::Context->new();
my $rep = $ctxt->socket(ZMQ_REP);
$rep->bind("inproc://polltest");
my $req = $ctxt->socket(ZMQ_REQ);
$req->connect("inproc://polltest");
my $poller = ZeroMQ::Poller->new(
{
socket => $rep,
events => ZMQ_POLLIN,
},
);
$req->send("Test");
$poller->poll(1);
ok $poller->has_event(0);
};
subtest 'Poller with named poll item' => sub {
my $ctxt = ZeroMQ::Context->new();
my $rep = $ctxt->socket(ZMQ_REP);
$rep->bind("inproc://polltest");
my $req = $ctxt->socket(ZMQ_REQ);
$req->connect("inproc://polltest");
my $poller = ZeroMQ::Poller->new(
{
name => 'test_item',
socket => $rep,
events => ZMQ_POLLIN,
},
);
ok not $poller->has_event('test_item');
$req->send("Test");
$poller->poll(1);
ok $poller->has_event('test_item');
$rep->recv();
$poller->poll(1);
ok not $poller->has_event('test_item');
};
done_testing;