Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
more GLRious tests for X and Z lazy propagation
  • Loading branch information
TimToady committed Sep 24, 2015
1 parent 673167c commit a4e24d2
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 13 deletions.
7 changes: 5 additions & 2 deletions S02-types/lazy-lists.t
Expand Up @@ -15,7 +15,7 @@ use v6;

use Test;

plan 22;
plan 23;

{
my @a = (1..Inf);
Expand Down Expand Up @@ -66,11 +66,14 @@ is( (1...Inf)[2..5],
}

my $was-lazy = 1;
sub make-lazy-list($num) { gather { take $_ for 0..^$num; $was-lazy = 0 } };
sub make-lazy-list($num) { gather { take $_ for 0..^$num; $was-lazy = 0 }.lazy };

{
$was-lazy = 1;
my @a = make-lazy-list(4);
ok $was-lazy, "sanity: make-lazy-list sets $was-lazy.";
$was-lazy = 1;
my @b = eager make-lazy-list(4);
nok $was-lazy, "sanity: make-lazy-list sets $was-lazy.";
$was-lazy = 1;
my $b := make-lazy-list(4);
Expand Down
23 changes: 16 additions & 7 deletions S03-metaops/cross.t
@@ -1,7 +1,7 @@
use v6;

use Test;
plan 42;
plan 48;

# L<S03/List infix precedence/the cross operator>
ok EVAL('<a b> X <c d>'), 'cross non-meta operator parses';
Expand Down Expand Up @@ -147,12 +147,21 @@ is (1,2 X (<a b> X "x")).flat.join, '1ax1bx2ax2bx',
}

{
ok (1..* X* 42).is-lazy, "laziness induced by first argument";
ok (42 X* 1..*).is-lazy, "laziness induced by last argument";
ok (42 X* 1..* X* 43).is-lazy, "laziness induced by middle argument";
ok !(1..5 X* 42).is-lazy, "laziness not induced by first argument";
ok !(42 X* 1..5).is-lazy, "laziness not induced by last argument";
ok !(42 X* 1..5 X* 43).is-lazy, "laziness not induced by middle argument";
ok (1..* X 42).is-lazy, "laziness induced by first argument (X)";
ok (42 X 1..*).is-lazy, "laziness induced by last argument (X)";
ok (42 X 1..* X 43).is-lazy, "laziness induced by middle argument (X)";
ok !(1..5 X 42).is-lazy, "laziness not induced by first argument (X)";
ok !(42 X 1..5).is-lazy, "laziness not induced by last argument (X)";
ok !(42 X 1..5 X 43).is-lazy, "laziness not induced by middle argument (X)";
}

{
ok (1..* X* 42).is-lazy, "laziness induced by first argument (X*)";
ok (42 X* 1..*).is-lazy, "laziness induced by last argument (X*)";
ok (42 X* 1..* X* 43).is-lazy, "laziness induced by middle argument (X*)";
ok !(1..5 X* 42).is-lazy, "laziness not induced by first argument (X*)";
ok !(42 X* 1..5).is-lazy, "laziness not induced by last argument (X*)";
ok !(42 X* 1..5 X* 43).is-lazy, "laziness not induced by middle argument (X*)";
}

# vim: ft=perl6
30 changes: 26 additions & 4 deletions S03-metaops/zip.t
@@ -1,7 +1,7 @@
use v6;

use Test;
plan 31;
plan 47;

ok EVAL('<a b> Z <c d>'), 'zip non-meta operator parses';

Expand Down Expand Up @@ -91,9 +91,31 @@ is (1, 2 Z, 3, 4).flat.join('|'), '1|3|2|4', 'Z, flattens in list context';
is [Z](1,2,3;4,5,6;7,8,9), '1 4 7 2 5 8 3 6 9', 'can reduce-zip a direct lol';
is [Z<](1,2,3;4,5,6;7,8,9), 'True True True', 'can reduce-zip-< a direct lol';

my \lol = ((1..*),(4..6),(7..*));
is [Z](|lol), '1 4 7 2 5 8 3 6 9', 'can reduce-zip an indirect lol';
is [Z<](|lol), 'True True True', 'can reduce-zip-< an indirect lol';
my \lol = (1..*),(4..6),(7..*);
is [Z](lol), '1 4 7 2 5 8 3 6 9', 'can reduce-zip an indirect lol';
is [Z<](lol), 'True True True', 'can reduce-zip-< an indirect lol';
}

{
ok (1..* Z 1..*).is-lazy, "laziness induced by two arguments (Z)";
ok (1..* Z 1..* Z 1..*).is-lazy, "laziness induced by three arguments (Z)";
ok !(1..* Z 42).is-lazy, "laziness defeated by last argument (Z)";
ok !(42 Z 1..*).is-lazy, "laziness defeated by first argument (Z)";
ok !(1..* Z 42 Z 1..*).is-lazy, "laziness defeated by middle argument (Z)";
ok !(1..5 Z 1..*).is-lazy, "laziness defeated by first argument (Z)";
ok !(1..* Z 1..5).is-lazy, "laziness defeated by last argument (Z)";
ok !(1..* Z 1..5 Z 1..*).is-lazy, "laziness defeated by middle argument (Z)";
}

{
ok (1..* Z* 1..*).is-lazy, "laziness induced by two arguments (Z*)";
ok (1..* Z* 1..* Z* 1..*).is-lazy, "laziness induced by three arguments (Z*)";
ok !(1..* Z* 42).is-lazy, "laziness defeated by last argument (Z*)";
ok !(42 Z* 1..*).is-lazy, "laziness defeated by first argument (Z*)";
ok !(1..* Z* 42 Z* 1..*).is-lazy, "laziness defeated by middle argument (Z*)";
ok !(1..5 Z* 1..*).is-lazy, "laziness defeated by first argument (Z*)";
ok !(1..* Z* 1..5).is-lazy, "laziness defeated by last argument (Z*)";
ok !(1..* Z* 1..5 Z* 1..*).is-lazy, "laziness defeated by middle argument (Z*)";
}

# vim: ft=perl6

0 comments on commit a4e24d2

Please sign in to comment.