use v6-alpha; use Test; plan 11; # L ok eval(' X '), 'cross non-meta operator parses'; # L is eval('@( X <1 2>)'), , 'non-meta cross produces expected result'; # L my @result = gather { for @(1..3 X 'a'..'b') -> $n, $a { take "$n:$a" } } is @result, <1:a 1:b 2:a 2:b 3:a 3:b>, 'smooth cross operator works'; # L @result = eval q{{ gather for @@(1..3 X 'A'..'B') -> $na { take $na.join(':'); } }}; is @result, <1:A 1:B 2:A 2:B 3:A 3:B>, 'chunky cross operator works'; # L ok eval(' X,X '), 'cross metaoperator parses', :todo; # L is eval(' X~X <1 2>'), , 'cross-concat produces expected result', :todo; # L is eval('[~]«( X,X <1 2> )'), , 'X,X works with hyperconcat', :todo; # L my @result = eval ' X,X 1,2 X,X '; is @result.elems, 8, 'chained cross-comma produces correct number of elements', :todo; my @expected = ( ['a', 1, 'x'], ['a', 1, 'y'], ['a', 2, 'x'], ['a', 2, 'y'], ['b', 1, 'x'], ['b', 1, 'y'], ['b', 2, 'x'], ['b', 2, 'y'], ); is @result, @expected, 'chained cross-comma produces correct results', :todo; # L is eval('(1,2 X*X 3,4)'), (3,4,6,8), 'cross-product works', :todo; # L dies_ok '@result XcmpX @expected XcmpX <1 2>', 'non-associating ops cannot be cross-ops';