1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#!./perl
my $hires;
BEGIN {
chdir 't' if -d 't';
@INC = ('.', '../lib');
$hires = eval 'use Time::HiResx "time"; 1';
}
require 'test.pl';
plan (11);
my $blank = "";
eval {select undef, $blank, $blank, 0};
is ($@, "", 'select undef $blank $blank 0');
eval {select $blank, undef, $blank, 0};
is ($@, "", 'select $blank undef $blank 0');
eval {select $blank, $blank, undef, 0};
is ($@, "", 'select $blank $blank undef 0');
eval {select "", $blank, $blank, 0};
is ($@, "", 'select "" $blank $blank 0');
eval {select $blank, "", $blank, 0};
is ($@, "", 'select $blank "" $blank 0');
eval {select $blank, $blank, "", 0};
is ($@, "", 'select $blank $blank "" 0');
eval {select "a", $blank, $blank, 0};
like ($@, qr/^Modification of a read-only value attempted/,
'select "a" $blank $blank 0');
eval {select $blank, "a", $blank, 0};
like ($@, qr/^Modification of a read-only value attempted/,
'select $blank "a" $blank 0');
eval {select $blank, $blank, "a", 0};
like ($@, qr/^Modification of a read-only value attempted/,
'select $blank $blank "a" 0');
my $sleep = 3;
# Actual sleep time on Windows may be rounded down to an integral
# multiple of the system clock tick interval. Clock tick interval
# is configurable, but usually about 15.625 milliseconds.
# time() however (if we haven;t loaded Time::HiRes), doesn't return
# fractional values, so the observed delay may be 1 second short.
#
# There is also a report that old linux kernels may return 0.5ms early:
# <20110520081714.GC17549@mars.tony.develop-help.com>.
#
my $under = $hires ? 0.1 : 1;
my $t0 = time;
select(undef, undef, undef, $sleep);
my $t1 = time;
my $diff = $t1-$t0;
ok($diff >= $sleep-$under, "select(u,u,u,\$sleep): at least $sleep seconds have passed");
note("diff=$diff under=$under");
my $empty = "";
vec($empty,0,1) = 0;
$t0 = time;
select($empty, undef, undef, $sleep);
$t1 = time;
$diff = $t1-$t0;
ok($diff >= $sleep-$under, "select(\$e,u,u,\$sleep): at least $sleep seconds have passed");
note("diff=$diff under=$under");
|