This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
e68f3394b3683eabacdd2dde2e40a8ca88464e19
[perl5.git] / t / op / sselect.t
1 #!./perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = ('.', '../lib');
6 }
7
8 require 'test.pl';
9
10 plan (11);
11
12 my $blank = "";
13 eval {select undef, $blank, $blank, 0};
14 is ($@, "", 'select undef  $blank $blank 0');
15 eval {select $blank, undef, $blank, 0};
16 is ($@, "", 'select $blank undef  $blank 0');
17 eval {select $blank, $blank, undef, 0};
18 is ($@, "", 'select $blank $blank undef  0');
19
20 eval {select "", $blank, $blank, 0};
21 is ($@, "", 'select ""     $blank $blank 0');
22 eval {select $blank, "", $blank, 0};
23 is ($@, "", 'select $blank ""     $blank 0');
24 eval {select $blank, $blank, "", 0};
25 is ($@, "", 'select $blank $blank ""     0');
26
27 eval {select "a", $blank, $blank, 0};
28 like ($@, qr/^Modification of a read-only value attempted/,
29             'select "a"    $blank $blank 0');
30 eval {select $blank, "a", $blank, 0};
31 like ($@, qr/^Modification of a read-only value attempted/,
32             'select $blank "a"    $blank 0');
33 eval {select $blank, $blank, "a", 0};
34 like ($@, qr/^Modification of a read-only value attempted/,
35             'select $blank $blank "a"    0');
36
37 my($sleep,$fudge) = (3,0);
38 # Actual sleep time on Windows may be rounded down to an integral
39 # multiple of the system clock tick interval.  Clock tick interval
40 # is configurable, but usually about 15.625 milliseconds.
41 # time() however doesn't return fractional values, so the observed
42 # delay may be 1 second short.
43 ($sleep,$fudge) = (4,1) if $^O eq "MSWin32";
44
45 my $t = time;
46 select(undef, undef, undef, $sleep);
47 ok(time-$t >= $sleep-$fudge, "select(u,u,u,\$sleep):  $sleep seconds have passed");
48
49 my $empty = "";
50 vec($empty,0,1) = 0;
51 $t = time;
52 select($empty, undef, undef, $sleep);
53 ok(time-$t >= $sleep-$fudge, "select(\$e,u,u,\$sleep): $sleep seconds have passed");