-
Notifications
You must be signed in to change notification settings - Fork 135
/
loop.t
85 lines (67 loc) · 1.47 KB
/
loop.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
use v6;
use Test;
# L<S04/The general loop statement>
=begin kwid
loop statement tests
=end kwid
plan 11;
# basic loop
{
my $i = 0;
is($i, 0, 'verify our starting condition');
loop ($i = 0; $i < 10; $i++) {}
is($i, 10, 'verify our ending condition');
}
# loop with last
{
my $i = 0;
is($i, 0, 'verify our starting condition');
loop ($i = 0; $i < 10; $i++) {
if $i == 5 {
last;
}
}
is($i, 5, 'verify our ending condition');
}
# infinite loop
{
my $i = 0;
is($i, 0, 'verify our starting condition');
loop (;;) { $i++; last; }
is($i, 1, 'verify our ending condition');
}
# declare variable $j inside loop
{
my $count = 0;
is($count, 0, 'verify our starting condition');
loop (my $j = 0; $j < 10; $j++) { $count++; };
is($count, 10, 'verify our ending condition');
}
# Ensure condition is tested on the first iteration
{
my $never_did_body = 1;
loop (;0;)
{
$never_did_body = 0;
}
ok($never_did_body, "loop with an initially-false condition executes 0 times");
}
# Loop with next should still execute the continue expression
{
my ($i, $continued);
loop ($i = 0;; $continued = 1)
{
last if $i;
$i++;
next;
}
ok($continued, "next performs a loop's continue expression");
}
{
my $loopvar = 0;
loop {
last if ++$loopvar == 3;
}
is($loopvar, 3, "bare loop exited after 3 iterations");
}
# vim: ft=perl6