Add fudge to timing checks on Windows
[p5sagit/p5-mst-13.2.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 ($@, "");
15 eval {select $blank, undef, $blank, 0};
16 is ($@, "");
17 eval {select $blank, $blank, undef, 0};
18 is ($@, "");
19
20 eval {select "", $blank, $blank, 0};
21 is ($@, "");
22 eval {select $blank, "", $blank, 0};
23 is ($@, "");
24 eval {select $blank, $blank, "", 0};
25 is ($@, "");
26
27 eval {select "a", $blank, $blank, 0};
28 like ($@, qr/^Modification of a read-only value attempted/);
29 eval {select $blank, "a", $blank, 0};
30 like ($@, qr/^Modification of a read-only value attempted/);
31 eval {select $blank, $blank, "a", 0};
32 like ($@, qr/^Modification of a read-only value attempted/);
33
34 my $sleep = 3;
35 # Actual sleep time on Windows may be rounded down to an integral
36 # multiple of the system clock tick interval.  Clock tick interval
37 # is configurable, but usually about 15.625 milliseconds.
38 my $fudge = $^O eq "MSWin32" ? 0.1 : 0;
39
40 my $t = time;
41 select(undef, undef, undef, $sleep);
42 ok(time-$t >= $sleep-$fudge, "$sleep seconds have passed");
43
44 my $empty = "";
45 vec($empty,0,1) = 0;
46 $t = time;
47 select($empty, undef, undef, $sleep);
48 ok(time-$t >= $sleep-$fudge, "$sleep seconds have passed");