Extensive documentation patch redux
[p5sagit/p5-mst-13.2.git] / t / cmd / while.t
old mode 100644 (file)
new mode 100755 (executable)
index 9876095..226db47
@@ -1,20 +1,18 @@
 #!./perl
 
-# $Header: while.t,v 4.0 91/03/20 01:49:51 lwall Locked $
+print "1..22\n";
 
-print "1..10\n";
-
-open (tmp,'>Cmd.while.tmp') || die "Can't create Cmd.while.tmp.";
+open (tmp,'>Cmd_while.tmp') || die "Can't create Cmd_while.tmp.";
 print tmp "tvi925\n";
 print tmp "tvi920\n";
 print tmp "vt100\n";
 print tmp "Amiga\n";
 print tmp "paper\n";
-close tmp;
+close tmp or die "Could not close: $!";
 
 # test "last" command
 
-open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp.";
+open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp.";
 while (<fh>) {
     last if /vt100/;
 }
@@ -23,7 +21,7 @@ if (!eof && /vt100/) {print "ok 1\n";} else {print "not ok 1 $_\n";}
 # test "next" command
 
 $bad = '';
-open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp.";
+open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp.";
 while (<fh>) {
     next if /vt100/;
     $bad = 1 if /vt100/;
@@ -33,7 +31,7 @@ if (!eof || /vt100/ || $bad) {print "not ok 2\n";} else {print "ok 2\n";}
 # test "redo" command
 
 $bad = '';
-open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp.";
+open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp.";
 while (<fh>) {
     if (s/vt100/VT100/g) {
        s/VT100/Vt100/g;
@@ -49,7 +47,7 @@ if (!eof || $bad) {print "not ok 3\n";} else {print "ok 3\n";}
 # test "last" command
 
 $badcont = '';
-open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp.";
+open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp.";
 line: while (<fh>) {
     if (/vt100/) {last line;}
 } continue {
@@ -62,7 +60,7 @@ if (!$badcont) {print "ok 5\n";} else {print "not ok 5\n";}
 
 $bad = '';
 $badcont = 1;
-open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp.";
+open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp.";
 entry: while (<fh>) {
     next entry if /vt100/;
     $bad = 1 if /vt100/;
@@ -76,7 +74,7 @@ if (!$badcont) {print "ok 7\n";} else {print "not ok 7\n";}
 
 $bad = '';
 $badcont = '';
-open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp.";
+open(fh,'Cmd_while.tmp') || die "Can't open Cmd_while.tmp.";
 loop: while (<fh>) {
     if (s/vt100/VT100/g) {
        s/VT100/Vt100/g;
@@ -90,7 +88,8 @@ loop: while (<fh>) {
 if (!eof || $bad) {print "not ok 8\n";} else {print "ok 8\n";}
 if (!$badcont) {print "ok 9\n";} else {print "not ok 9\n";}
 
-`/bin/rm -f Cmd.while.tmp`;
+close(fh) || die "Can't close Cmd_while.tmp.";
+unlink 'Cmd_while.tmp' || `/bin/rm Cmd_While.tmp`;
 
 #$x = 0;
 #while (1) {
@@ -108,3 +107,73 @@ $i = 9;
     $i++;
 }
 print "ok $i\n";
+
+# Check curpm is reset when jumping out of a scope
+'abc' =~ /b/;
+WHILE:
+while (1) {
+  $i++;
+  print "#$`,$&,$',\nnot " unless $` . $& . $' eq "abc";
+  print "ok $i\n";
+  {                             # Localize changes to $` and friends
+    'end' =~ /end/;
+    redo WHILE if $i == 11;
+    next WHILE if $i == 12;
+    # 13 do a normal loop
+    last WHILE if $i == 14;
+  }
+}
+$i++;
+print "not " unless $` . $& . $' eq "abc";
+print "ok $i\n";
+
+# check that scope cleanup happens right when there's a continue block
+{
+    my $var = 16;
+    while (my $i = ++$var) {
+       next if $i == 17;
+       last if $i > 17;
+       my $i = 0;
+    }
+    continue {
+        print "ok ", $var-1, "\nok $i\n";
+    }
+}
+
+{
+    local $l = 18;
+    {
+        local $l = 0
+    }
+    continue {
+        print "ok $l\n"
+    }
+}
+
+{
+    local $l = 19;
+    my $x = 0;
+    while (!$x++) {
+        local $l = 0
+    }
+    continue {
+        print "ok $l\n"
+    }
+}
+
+$i = 20;
+{
+    while (1) {
+       my $x;
+       print $x if defined $x;
+       $x = "not ";
+       print "ok $i\n"; ++$i;
+       if ($i == 21) {
+           next;
+       }
+       last;
+    }
+    continue {
+        print "ok $i\n"; ++$i;
+    }
+}