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