Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

136 lines (110 sloc) 2.554 kb
use v6;
use Test;
plan 19;
# L<S04/The C<repeat> statement/"more Pascal-like repeat loop">
{
my $x = 0; repeat { $x++ } while $x < 10;
is($x, 10, 'repeat {} while');
}
{
my $x = 1; repeat { $x++ } while 0;
is($x, 2, 'ensure repeat {} while runs at least once');
}
{
my $x = 0;
repeat { $x++; redo if $x < 10 } while 0;
is($x, 10, 'redo works in repeat');
}
# L<S04/The C<repeat> statement/"or equivalently">
{
my $x = 0; repeat { $x++ } until $x >= 10;
is($x, 10, 'repeat {} until');
}
{
my $x = 1; repeat { $x++ } until 1;
is($x, 2, 'ensure repeat {} until runs at least once');
}
{
my $x = 0; repeat { $x++; redo if $x < 10 } until 1;
is($x, 10, 'redo works in repeat {} until');
}
# L<S04/The C<repeat> statement/"loop conditional" on
# "repeat block" required>
{
my $x = 0;
repeat {
$x++;
$x += 2;
} while $x < 10;
is $x, 12, 'repeat with "} while"';
}
{
my $x = 0;
repeat {
$x++;
$x += 2;
}
while $x < 10;
is $x, 12, 'repeat with "}\n while"';
}
# L<S04/The C<repeat> statement/put "loop conditional" "at the front">
{
my $x = 0; repeat while $x < 10 { $x++ }
is($x, 10, 'repeat {} while');
}
{
my $x = 1; repeat while 0 { $x++ }
is($x, 2, 'ensure repeat {} while runs at least once');
}
{
my $x = 0; repeat while 0 { $x++; redo if $x < 10 };
is($x, 10, 'redo works in repeat');
}
{
my $x = 0; repeat until $x >= 10 { $x++ }
is($x, 10, 'repeat until {}');
}
# L<S04/The C<repeat> statement/"bind the result">
{
my $x = 0; repeat until $x >= 10 -> $another_x {
pass('repeat until with binding starts undefined') unless $another_x.defined;
$x++
}
is($x, 10, 'repeat until -> {}');
}
{
my $x = 1; repeat until 1 { $x++ }
is($x, 2, 'ensure repeat until {} runs at least once');
}
{
my $x = 0; repeat until 1 { $x++; redo if $x < 10 };
is($x, 10, 'redo works in repeat until {}');
}
# RT #69178
#?niecza skip 'No value in ANON available for parameter $a'
{
my $b = 1;
my $tracker;
repeat while $b < 10 {
$tracker = $^a;
$b++;
}
ok $tracker === True, 'placeholders and "repeat while" mix';
}
# RT #114836
{
lives_ok {
my $condition;
repeat {
$condition = False;
} while $condition;
}, 'can share variable between loop body and condition';
}
# RT #114432
#?niecza skip "throws_like"
#?DOES 3
{
throws_like 'repeat { "but I myself" }', X::Syntax::Missing, what => '"while" or "until"';
}
done;
# vim: ft=perl6
Jump to Line
Something went wrong with that request. Please try again.