1#!./perl 2 3select(STDERR); $| = 1; 4select(STDOUT); $| = 1; 5 6print "1..12\n"; 7 8use IO::Handle; 9use IO::Poll qw(/POLL/); 10 11my $poll = IO::Poll->new(); 12 13my $stdout = \*STDOUT; 14my $dupout = IO::Handle->new_from_fd(fileno($stdout),"w"); 15 16$poll->mask($stdout => POLLOUT); 17 18print "not " 19 unless $poll->mask($stdout) == POLLOUT; 20print "ok 1\n"; 21 22$poll->mask($dupout => POLLPRI); 23 24print "not " 25 unless $poll->mask($dupout) == POLLPRI; 26print "ok 2\n"; 27 28$poll->poll(0.1); 29 30if ($^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'VMS' || $^O eq 'beos') { 31print "ok 3 # skipped, doesn't work on non-socket fds\n"; 32print "ok 4 # skipped, doesn't work on non-socket fds\n"; 33} 34else { 35print "not " 36 unless $poll->events($stdout) == POLLOUT; 37print "ok 3\n"; 38 39print "not " 40 if $poll->events($dupout); 41print "ok 4\n"; 42} 43 44my @h = $poll->handles; 45print "not " 46 unless @h == 2; 47print "ok 5\n"; 48 49$poll->remove($stdout); 50 51@h = $poll->handles; 52 53print "not " 54 unless @h == 1; 55print "ok 6\n"; 56 57print "not " 58 if $poll->mask($stdout); 59print "ok 7\n"; 60 61$poll->poll(0.1); 62 63print "not " 64 if $poll->events($stdout); 65print "ok 8\n"; 66 67$poll->remove($dupout); 68print "not " 69 if $poll->handles; 70print "ok 9\n"; 71 72my $stdin = \*STDIN; 73$poll->mask($stdin => POLLIN); 74$poll->remove($stdin); 75close STDIN; 76print "not " 77 if $poll->poll(0.1); 78print "ok 10\n"; 79 80my $wait = IO::Poll->new; 81my $now = time; 82my $zero = $wait->poll(2); 83my $diff = time - $now; 84print "not " if !defined($zero) or $zero; 85print "ok 11\n"; 86print "not " unless $diff >= 2; 87print "ok 12\n"; 88