Commit | Line | Data |
---|---|---|
8d063cd8 LW |
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 LW |
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"; | |
d1e4d418 | 11 | close tmp or die "Could not close: $!"; |
8d063cd8 LW |
12 | |
13 | # test "last" command | |
14 | ||
a0d0e21e | 15 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 LW |
16 | while (<fh>) { |
17 | last if /vt100/; | |
18 | } | |
a687059c | 19 | if (!eof && /vt100/) {print "ok 1\n";} else {print "not ok 1 $_\n";} |
8d063cd8 LW |
20 | |
21 | # test "next" command | |
22 | ||
23 | $bad = ''; | |
a0d0e21e | 24 | open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp."; |
8d063cd8 LW |
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 LW |
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 LW |
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 LW |
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 LW |
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 LW |
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 GS |
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 GS |
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 GS |
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 GS |
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 | } |