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