Commit | Line | Data |
8d063cd8 |
1 | #!./perl |
2 | |
1ba6ee2b |
3 | print "1..22\n"; |
8d063cd8 |
4 | |
a0d0e21e |
5 | open (tmp,'>Cmd_while.tmp') || die "Can't create Cmd_while.tmp."; |
8d063cd8 |
6 | print tmp "tvi925\n"; |
7 | print tmp "tvi920\n"; |
8 | print tmp "vt100\n"; |
9 | print tmp "Amiga\n"; |
10 | print tmp "paper\n"; |
11 | close tmp; |
12 | |
13 | # test "last" command |
14 | |
a0d0e21e |
15 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 |
16 | while (<fh>) { |
17 | last if /vt100/; |
18 | } |
a687059c |
19 | if (!eof && /vt100/) {print "ok 1\n";} else {print "not ok 1 $_\n";} |
8d063cd8 |
20 | |
21 | # test "next" command |
22 | |
23 | $bad = ''; |
a0d0e21e |
24 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 |
25 | while (<fh>) { |
26 | next if /vt100/; |
27 | $bad = 1 if /vt100/; |
28 | } |
29 | if (!eof || /vt100/ || $bad) {print "not ok 2\n";} else {print "ok 2\n";} |
30 | |
31 | # test "redo" command |
32 | |
33 | $bad = ''; |
a0d0e21e |
34 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 |
35 | while (<fh>) { |
36 | if (s/vt100/VT100/g) { |
37 | s/VT100/Vt100/g; |
38 | redo; |
39 | } |
40 | $bad = 1 if /vt100/; |
41 | $bad = 1 if /VT100/; |
42 | } |
43 | if (!eof || $bad) {print "not ok 3\n";} else {print "ok 3\n";} |
44 | |
45 | # now do the same with a label and a continue block |
46 | |
47 | # test "last" command |
48 | |
49 | $badcont = ''; |
a0d0e21e |
50 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 |
51 | line: while (<fh>) { |
52 | if (/vt100/) {last line;} |
53 | } continue { |
54 | $badcont = 1 if /vt100/; |
55 | } |
56 | if (!eof && /vt100/) {print "ok 4\n";} else {print "not ok 4\n";} |
57 | if (!$badcont) {print "ok 5\n";} else {print "not ok 5\n";} |
58 | |
59 | # test "next" command |
60 | |
61 | $bad = ''; |
62 | $badcont = 1; |
a0d0e21e |
63 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 |
64 | entry: while (<fh>) { |
65 | next entry if /vt100/; |
66 | $bad = 1 if /vt100/; |
67 | } continue { |
68 | $badcont = '' if /vt100/; |
69 | } |
70 | if (!eof || /vt100/ || $bad) {print "not ok 6\n";} else {print "ok 6\n";} |
71 | if (!$badcont) {print "ok 7\n";} else {print "not ok 7\n";} |
72 | |
73 | # test "redo" command |
74 | |
75 | $bad = ''; |
76 | $badcont = ''; |
a0d0e21e |
77 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 |
78 | loop: while (<fh>) { |
79 | if (s/vt100/VT100/g) { |
80 | s/VT100/Vt100/g; |
81 | redo loop; |
82 | } |
83 | $bad = 1 if /vt100/; |
84 | $bad = 1 if /VT100/; |
85 | } continue { |
86 | $badcont = 1 if /vt100/; |
87 | } |
88 | if (!eof || $bad) {print "not ok 8\n";} else {print "ok 8\n";} |
89 | if (!$badcont) {print "ok 9\n";} else {print "not ok 9\n";} |
90 | |
bbad3607 |
91 | close(fh) || die "Can't close Cmd_while.tmp."; |
a0d0e21e |
92 | unlink 'Cmd_while.tmp' || `/bin/rm Cmd_While.tmp`; |
8d063cd8 |
93 | |
94 | #$x = 0; |
95 | #while (1) { |
96 | # if ($x > 1) {last;} |
97 | # next; |
98 | #} continue { |
99 | # if ($x++ > 10) {last;} |
100 | # next; |
101 | #} |
102 | # |
103 | #if ($x < 10) {print "ok 10\n";} else {print "not ok 10\n";} |
104 | |
105 | $i = 9; |
106 | { |
107 | $i++; |
108 | } |
109 | print "ok $i\n"; |
2158dd9b |
110 | |
111 | # Check curpm is reset when jumping out of a scope |
112 | 'abc' =~ /b/; |
113 | WHILE: |
114 | while (1) { |
115 | $i++; |
116 | print "#$`,$&,$',\nnot " unless $` . $& . $' eq "abc"; |
117 | print "ok $i\n"; |
118 | { # Localize changes to $` and friends |
119 | 'end' =~ /end/; |
120 | redo WHILE if $i == 11; |
121 | next WHILE if $i == 12; |
122 | # 13 do a normal loop |
123 | last WHILE if $i == 14; |
124 | } |
125 | } |
126 | $i++; |
127 | print "not " unless $` . $& . $' eq "abc"; |
128 | print "ok $i\n"; |
1ee98724 |
129 | |
130 | # check that scope cleanup happens right when there's a continue block |
131 | { |
132 | my $var = 16; |
133 | while (my $i = ++$var) { |
134 | next if $i == 17; |
135 | last if $i > 17; |
136 | my $i = 0; |
137 | } |
138 | continue { |
139 | print "ok ", $var-1, "\nok $i\n"; |
140 | } |
141 | } |
87246558 |
142 | |
143 | { |
144 | local $l = 18; |
145 | { |
146 | local $l = 0 |
147 | } |
148 | continue { |
149 | print "ok $l\n" |
150 | } |
151 | } |
152 | |
153 | { |
154 | local $l = 19; |
155 | my $x = 0; |
156 | while (!$x++) { |
157 | local $l = 0 |
158 | } |
159 | continue { |
160 | print "ok $l\n" |
161 | } |
162 | } |
1ba6ee2b |
163 | |
164 | $i = 20; |
165 | { |
166 | while (1) { |
167 | my $x; |
168 | print $x if defined $x; |
169 | $x = "not "; |
170 | print "ok $i\n"; ++$i; |
171 | if ($i == 21) { |
172 | next; |
173 | } |
174 | last; |
175 | } |
176 | continue { |
177 | print "ok $i\n"; ++$i; |
178 | } |
179 | } |