Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/perl6/roast
Browse files Browse the repository at this point in the history
  • Loading branch information
Mouq committed Apr 19, 2014
2 parents b6097eb + 071ebd3 commit 51f29eb
Show file tree
Hide file tree
Showing 8 changed files with 360 additions and 128 deletions.
4 changes: 2 additions & 2 deletions S02-types/sethash.t
Expand Up @@ -414,8 +414,8 @@ sub showset($s) { $s.keys.sort.join(' ') }
my $s = <a b b c c c d d d d>.SetHash;
is $s.total, 4, '.total gives sum of values (non-empty)';
is +$s, 4, '+$set gives sum of values (non-empty)';
is $s.minpairs, [a=>True,b=>True,c=>True,d=>True], '.minpairs works (non-empty)';
is $s.maxpairs, [a=>True,b=>True,c=>True,d=>True], '.maxpairs works (non-empty)';
is $s.minpairs.sort, [a=>True,b=>True,c=>True,d=>True], '.minpairs works (non-empty)';
is $s.maxpairs.sort, [a=>True,b=>True,c=>True,d=>True], '.maxpairs works (non-empty)';

my $e = ().SetHash;
is $e.total, 0, '.total gives sum of values (empty)';
Expand Down
4 changes: 3 additions & 1 deletion S17-concurrency/promise.t
Expand Up @@ -172,7 +172,9 @@ plan 64;

{
my @a;
my @p = (^10).pick(*).map: { start { sleep $_; @a.push: $_ } };
my @p = (^10).pick(*).map: {
start { sleep $_; cas @a, -> @current { my @ = @current, OUTER::<$_> } }
};
my $all = Promise.allof(@p);
isa_ok $all, Promise, 'allof gives a Promise';
my $b = $all.result; # block
Expand Down
40 changes: 20 additions & 20 deletions S17-concurrency/scheduler.t
Expand Up @@ -61,8 +61,8 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
# Timing related tests are always a tad fragile, e.g. on a loaded system.
# Hopefully the times are enough leeway.
my $tracker = '';
$*SCHEDULER.cue({ $tracker ~= '2s'; }, :in(2));
$*SCHEDULER.cue({ $tracker ~= '1s'; }, :in(1));
$*SCHEDULER.cue({ cas $tracker, {$_ ~ '2s'} }, :in(2));
$*SCHEDULER.cue({ cas $tracker, {$_ ~ '1s'} }, :in(1));
is $tracker, '', "Cue on $name with :in doesn't schedule immediately";
sleep 3;
is $tracker, "1s2s", "Timer tasks on $name with :in ran in right order";
Expand All @@ -72,14 +72,14 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
{
my $tracker = '';
$*SCHEDULER.cue(
{ $tracker ~= '2s'; },
{ cas $tracker, {$_ ~ '2s'} },
:in(2),
:catch({ $tracker ~= '2scatch'})
:catch({ cas $tracker, { $_ ~ '2scatch'} })
);
$*SCHEDULER.cue(
{ $tracker ~= '1s'; die },
{ cas $tracker, {$_ ~ '1s'}; die },
:in(1),
:catch({ $tracker ~= '1scatch'})
:catch({ cas $tracker, {$_ ~ '1scatch'} })
);
is $tracker, '', "Cue on $name with :in/:catch doesn't schedule immediately";
sleep 3;
Expand All @@ -89,8 +89,8 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
#?rakudo.moar skip ":at NYI"
{
my $tracker = '';
$*SCHEDULER.cue({ $tracker ~= '2s'; }, :at(now + 2));
$*SCHEDULER.cue({ $tracker ~= '1s'; }, :at(now + 1));
$*SCHEDULER.cue({ cas $tracker, {$_ ~ '2s'} }, :at(now + 2));
$*SCHEDULER.cue({ cas $tracker, {$_ ~ '1s'} }, :at(now + 1));
is $tracker, '', "Cue on $name with :at doesn't schedule immediately";
sleep 3;
is $tracker, "1s2s", "Timer tasks on $name with :at ran in right order";
Expand All @@ -100,14 +100,14 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
{
my $tracker = '';
$*SCHEDULER.cue(
{ $tracker ~= '2s'; die },
{ cas $tracker, {$_ ~ '2s'}; die },
:at(now + 2),
:catch({ $tracker ~= '2scatch'})
:catch({ cas $tracker, {$_ ~ '2scatch'} })
);
$*SCHEDULER.cue(
{ $tracker ~= '1s'; },
{ cas $tracker, {$_ ~ '1s'} },
:at(now + 1),
:catch({ $tracker ~= '1scatch'})
:catch({ cas $tracker, {$_ ~ '1scatch'} })
);
is $tracker, '', "Cue on $name with :at/:catch doesn't schedule immediately";
sleep 3;
Expand All @@ -119,7 +119,7 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
# Also at risk of being a little fragile, but again hopefully Ok on all
# but the most ridiculously loaded systems.
my $a = 0;
$*SCHEDULER.cue({ $a++ }, :every(0.1));
$*SCHEDULER.cue({ cas $a, {.succ} }, :every(0.1));
sleep 1;
diag "seen $a runs" if !
ok 5 < $a < 15, "Cue with :every schedules repeatedly";
Expand All @@ -131,7 +131,7 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
# but the most ridiculously loaded systems.
my $a = 0;
my $b = 0;
$*SCHEDULER.cue({ $a++; die }, :every(0.1), :catch({ $b++ }));
$*SCHEDULER.cue({ cas $a, {.succ}; die }, :every(0.1), :catch({ cas $b, {.succ} }));
sleep 1;
diag "seen $a runs" if !
ok 5 < $a < 15, "Cue with :every/:catch schedules repeatedly (1)";
Expand All @@ -142,7 +142,7 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
#?rakudo.moar skip ":in, :every NYI"
{
my $a = 0;
$*SCHEDULER.cue({ $a++ }, :in(2), :every(0.1));
$*SCHEDULER.cue({ cas $a, {.succ} }, :in(2), :every(0.1));
sleep 3;
diag "seen $a runs" if !
ok 5 < $a < 15, "Cue with :every/:in schedules repeatedly";
Expand All @@ -152,7 +152,7 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
{
my $a = 0;
my $b = 0;
$*SCHEDULER.cue({ $a++; die }, :in(2), :every(0.1), :catch({ $b++ }));
$*SCHEDULER.cue({ cas $a,{.succ}; die }, :in(2), :every(0.1), :catch({ cas $b, {.succ} }));
sleep 3;
diag "seen $a runs" if !
ok 5 < $a < 15, "Cue with :every/:in/:catch schedules repeatedly (1)";
Expand All @@ -163,16 +163,16 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
#?rakudo.moar skip ":at, :every NYI"
{
my $a = 0;
$*SCHEDULER.cue({ $a++ }, :at(now + 2), :every(0.1));
$*SCHEDULER.cue({ cas $a, {.succ} }, :at(now + 2), :every(0.1));
sleep 3;
diag "seen $a runs" if !
ok 5 < $a < 15, "Cue with :every/:at schedules repeatedly";
}

#?rakudo.moar skip ":times NYI"
{
my $tracker;
$*SCHEDULER.cue({ $tracker++ }, :times(10));
my $tracker = 0;
$*SCHEDULER.cue({ cas $tracker, {.succ} }, :times(10));
sleep 3;
is $tracker, 10, "Cue on $name with :times(10)";
}
Expand All @@ -181,7 +181,7 @@ ok $*SCHEDULER ~~ Scheduler, "$name does Scheduler role";
{
my $a = 0;
my $b = 0;
$*SCHEDULER.cue({ $a++; die }, :at(now + 2), :every(0.1), :catch({ $b++ }));
$*SCHEDULER.cue({ cas $a, {.succ}; die }, :at(now + 2), :every(0.1), :catch({ cas $b, {.succ} }));
sleep 3;
diag "seen $a runs" if !
ok 5 < $a < 15, "Cue with :every/:at/:catch schedules repeatedly (1)";
Expand Down

0 comments on commit 51f29eb

Please sign in to comment.