1 | BEGIN { $| = 1; print "1..3002\n"; } |
1 | BEGIN { $| = 1; print "1..6002\n"; } |
|
|
2 | |
|
|
3 | no warnings; |
|
|
4 | use strict; |
2 | |
5 | |
3 | use EV; |
6 | use EV; |
4 | |
7 | |
|
|
8 | my $fudge = 0.02; # allow rt and monotonic clock to disagree by this much |
|
|
9 | |
5 | my $id = 1; |
10 | my $id = 1; |
6 | my @timer; |
11 | my @timer; |
|
|
12 | my @periodic; |
7 | |
13 | |
8 | my $base = EV::now; |
14 | my $base = EV::now; |
9 | my $prev = EV::now; |
15 | my $prev = EV::now; |
10 | |
16 | |
11 | for (1..1000) { |
17 | for my $i (1..1000) { |
12 | my $t = $_ * $_ * 1.735435336; $t -= int $t; |
18 | my $t = $i * $i * 1.735435336; $t -= int $t; |
13 | push @timer, EV::timer $t, 0, sub { |
19 | push @timer, EV::timer $t, 0, sub { |
14 | print EV::now >= $prev ? "" : "not ", "ok ", ++$id, "\n"; |
20 | my $now = EV::now; |
15 | print EV::now >= $base + $t ? "" : "not ", "ok ", ++$id, "\n"; |
21 | |
|
|
22 | EV::default_loop->loop_verify; |
|
|
23 | |
|
|
24 | print $now + $fudge >= $prev ? "" : "not ", "ok ", ++$id, " # t0 $i $now + $fudge >= $prev\n"; |
|
|
25 | print $now + $fudge >= $base + $t ? "" : "not ", "ok ", ++$id, " # t1 $i $now + $fudge >= $base + $t\n"; |
16 | |
26 | |
17 | unless ($id % 3) { |
27 | unless ($id % 3) { |
|
|
28 | $t *= 0.0625; |
18 | $_[0]->set ($t * 0.0625); |
29 | $_[0]->set ($t); |
|
|
30 | $_[0]->start; |
|
|
31 | $t = $now + $t - $base; |
|
|
32 | } |
|
|
33 | |
|
|
34 | $prev = $now; |
|
|
35 | }; |
|
|
36 | |
|
|
37 | my $t = $i * $i * 1.375475771; $t -= int $t; |
|
|
38 | push @periodic, EV::periodic $base + $t, 0, 0, sub { |
|
|
39 | my $now = EV::now; |
|
|
40 | |
|
|
41 | EV::default_loop->loop_verify; |
|
|
42 | |
|
|
43 | print $now >= $prev ? "" : "not ", "ok ", ++$id, " # p0 $i $now >= $prev\n"; |
|
|
44 | print $now >= $base + $t ? "" : "not ", "ok ", ++$id, " # p1 $i $now >= $base + $t\n"; |
|
|
45 | |
|
|
46 | unless ($id % 3) { |
19 | $t *= 1.0625; |
47 | $t *= 1.0625; |
|
|
48 | $_[0]->set ($base + $t); |
20 | $_[0]->start; |
49 | $_[0]->start; |
21 | } |
50 | } |
|
|
51 | |
|
|
52 | $prev = $now; |
22 | }; |
53 | }; |
23 | } |
54 | } |
24 | |
55 | |
25 | print "ok 1\n"; |
56 | print "ok 1\n"; |
26 | EV::loop; |
57 | EV::loop; |
27 | print "ok 3002\n"; |
58 | print "ok 6002\n"; |
28 | |
59 | |