xref: /openbsd/gnu/usr.bin/perl/dist/IO/t/io_poll.t (revision 8932bfb7)
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