/
delayed.t
53 lines (46 loc) 路 1.31 KB
/
delayed.t
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
use v6;
use lib 't/spec/packages';
use Test;
use Test::Tap;
plan 13;
dies_ok { Supply.delayed(1) }, 'can not be called as a class method';
for ThreadPoolScheduler.new, CurrentThreadScheduler -> $*SCHEDULER {
diag "**** scheduling with {$*SCHEDULER.WHAT.perl}";
#?rakudo skip "doesn't work or can't test"
{
my $delay = 2;
my $now = now;
my $seen;
tap_ok $now.Supply.delayed($delay),
[$now],
".delay with on-demand Supply worked",
:emit( { $seen = now } ),
;
ok $seen && $seen >= $now + $delay, "on-demand sufficiently delayed";
}
#?rakudo skip "doesn't work or can't test"
{
my $delay = 2;
my $s = Supply.new;
my $now = now;
my $seen;
tap_ok $s.delayed($delay),
[$now],
".delay with live Supply worked",
:live,
:emit( { $seen = now } ),
:after-tap( {
$s.emit($now);
sleep 2; # makes this pass, should go!
$s.done;
} ),
;
ok $seen && $seen >= $now + $delay, "live sufficiently delayed";
}
{
my $for = Supply.from-list(1..10);
my $delay = $for.delayed(0);
ok $for === $delay, "delaying by 0 is a noop";
tap_ok $delay, [1..10], "noop delay";
}
}