diff options
Diffstat (limited to 't')
-rw-r--r-- | t/README | 11 | ||||
-rw-r--r-- | t/TEST | 68 | ||||
-rw-r--r-- | t/base.cond | 19 | ||||
-rw-r--r-- | t/base.if | 11 | ||||
-rw-r--r-- | t/base.lex | 23 | ||||
-rw-r--r-- | t/base.pat | 11 | ||||
-rw-r--r-- | t/base.term | 36 | ||||
-rw-r--r-- | t/cmd.elsif | 25 | ||||
-rw-r--r-- | t/cmd.for | 25 | ||||
-rw-r--r-- | t/cmd.mod | 28 | ||||
-rw-r--r-- | t/cmd.subval | 50 | ||||
-rw-r--r-- | t/cmd.while | 110 | ||||
-rw-r--r-- | t/comp.cmdopt | 83 | ||||
-rw-r--r-- | t/comp.cpp | 35 | ||||
-rw-r--r-- | t/comp.decl | 49 | ||||
-rw-r--r-- | t/comp.multiline | 40 | ||||
-rw-r--r-- | t/comp.script | 23 | ||||
-rw-r--r-- | t/comp.term | 27 | ||||
-rw-r--r-- | t/io.argv | 36 | ||||
-rw-r--r-- | t/io.fs | 63 | ||||
-rw-r--r-- | t/io.inplace | 19 | ||||
-rw-r--r-- | t/io.print | 25 | ||||
-rw-r--r-- | t/io.tell | 42 | ||||
-rw-r--r-- | t/op.append | 21 | ||||
-rw-r--r-- | t/op.auto | 41 | ||||
-rw-r--r-- | t/op.chop | 21 | ||||
-rw-r--r-- | t/op.cond | 12 | ||||
-rw-r--r-- | t/op.crypt | 12 | ||||
-rw-r--r-- | t/op.do | 34 | ||||
-rw-r--r-- | t/op.each | 50 | ||||
-rw-r--r-- | t/op.exec | 12 | ||||
-rw-r--r-- | t/op.exp | 27 | ||||
-rw-r--r-- | t/op.flip | 26 | ||||
-rw-r--r-- | t/op.fork | 16 | ||||
-rw-r--r-- | t/op.goto | 34 | ||||
-rw-r--r-- | t/op.int | 17 | ||||
-rw-r--r-- | t/op.join | 12 | ||||
-rw-r--r-- | t/op.list | 34 | ||||
-rw-r--r-- | t/op.magic | 27 | ||||
-rw-r--r-- | t/op.oct | 9 | ||||
-rw-r--r-- | t/op.ord | 14 | ||||
-rw-r--r-- | t/op.pat | 56 | ||||
-rw-r--r-- | t/op.push | 11 | ||||
-rw-r--r-- | t/op.repeat | 32 | ||||
-rw-r--r-- | t/op.sleep | 8 | ||||
-rw-r--r-- | t/op.split | 24 | ||||
-rw-r--r-- | t/op.sprintf | 8 | ||||
-rw-r--r-- | t/op.stat | 29 | ||||
-rw-r--r-- | t/op.subst | 38 | ||||
-rw-r--r-- | t/op.time | 43 | ||||
-rw-r--r-- | t/op.unshift | 14 |
51 files changed, 1541 insertions, 0 deletions
diff --git a/t/README b/t/README new file mode 100644 index 0000000000..1c079409c3 --- /dev/null +++ b/t/README @@ -0,0 +1,11 @@ +This is the perl test library. To run all the tests, just type 'TEST'. + +To add new tests, just look at the current tests and do likewise. + +If a test fails, run it by itself to see if it prints any informative +diagnostics. If not, modify the test to print informative diagnostics. +If you put out extra lines with a '#' character on the front, you don't +have to worry about removing the extra print statements later since TEST +ignores lines beginning with '#'. + +If you come up with new tests, send them to lwall@jpl-devvax.jpl.nasa.gov. diff --git a/t/TEST b/t/TEST new file mode 100644 index 0000000000..11c48e2908 --- /dev/null +++ b/t/TEST @@ -0,0 +1,68 @@ +#!./perl + +# $Header: TEST,v 1.0 87/12/18 13:11:34 root Exp $ + +# This is written in a peculiar style, since we're trying to avoid +# most of the constructs we'll be testing for. + +if ($ARGV[0] eq '-v') { + $verbose = 1; + shift; +} + +if ($ARGV[0] eq '') { + @ARGV = split(/[ \n]/,`echo base.* comp.* cmd.* io.* op.*`); +} + +$bad = 0; +while ($test = shift) { + print "$test..."; + open(results,"$test|") || (print "can't run.\n"); + $ok = 0; + while (<results>) { + if ($verbose) { + print $_; + } + unless (/^#/) { + if (/^1\.\.([0-9]+)/) { + $max = $1; + $next = 1; + $ok = 1; + } else { + if (/^ok (.*)/ && $1 == $next) { + $next = $next + 1; + } else { + $ok = 0; + } + } + } + } + $next = $next - 1; + if ($ok && $next == $max) { + print "ok\n"; + } else { + $next += 1; + print "FAILED on test $next\n"; + $bad = $bad + 1; + $_ = $test; + if (/^base/) { + die "Failed a basic test--cannot continue."; + } + } +} + +if ($bad == 0) { + if ($ok) { + print "All tests successful.\n"; + } else { + die "FAILED--no tests were run for some reason."; + } +} else { + if ($bad == 1) { + die "Failed 1 test."; + } else { + die "Failed $bad tests."; + } +} +($user,$sys,$cuser,$csys) = times; +print sprintf("u=%g s=%g cu=%g cs=%g\n",$user,$sys,$cuser,$csys); diff --git a/t/base.cond b/t/base.cond new file mode 100644 index 0000000000..b592b59855 --- /dev/null +++ b/t/base.cond @@ -0,0 +1,19 @@ +#!./perl + +# $Header: base.cond,v 1.0 87/12/18 13:11:41 root Exp $ + +# make sure conditional operators work + +print "1..4\n"; + +$x = '0'; + +$x eq $x && (print "ok 1\n"); +$x ne $x && (print "not ok 1\n"); +$x eq $x || (print "not ok 2\n"); +$x ne $x || (print "ok 2\n"); + +$x == $x && (print "ok 3\n"); +$x != $x && (print "not ok 3\n"); +$x == $x || (print "not ok 4\n"); +$x != $x || (print "ok 4\n"); diff --git a/t/base.if b/t/base.if new file mode 100644 index 0000000000..e5133a6428 --- /dev/null +++ b/t/base.if @@ -0,0 +1,11 @@ +#!./perl + +# $Header: base.if,v 1.0 87/12/18 13:11:45 root Exp $ + +print "1..2\n"; + +# first test to see if we can run the tests. + +$x = 'test'; +if ($x eq $x) { print "ok 1\n"; } else { print "not ok 1\n";} +if ($x ne $x) { print "not ok 2\n"; } else { print "ok 2\n";} diff --git a/t/base.lex b/t/base.lex new file mode 100644 index 0000000000..2cfe311ed8 --- /dev/null +++ b/t/base.lex @@ -0,0 +1,23 @@ +#!./perl + +# $Header: base.lex,v 1.0 87/12/18 13:11:51 root Exp $ + +print "1..4\n"; + +$ # this is the register <space> += 'x'; + +print "#1 :$ : eq :x:\n"; +if ($ eq 'x') {print "ok 1\n";} else {print "not ok 1\n";} + +$x = $#; # this is the register $# + +if ($x eq '') {print "ok 2\n";} else {print "not ok 2\n";} + +$x = $#x; + +if ($x eq '-1') {print "ok 3\n";} else {print "not ok 3\n";} + +$x = '\\'; # '; + +if (length($x) == 1) {print "ok 4\n";} else {print "not ok 4\n";} diff --git a/t/base.pat b/t/base.pat new file mode 100644 index 0000000000..d796b697fb --- /dev/null +++ b/t/base.pat @@ -0,0 +1,11 @@ +#!./perl + +# $Header: base.pat,v 1.0 87/12/18 13:11:56 root Exp $ + +print "1..2\n"; + +# first test to see if we can run the tests. + +$_ = 'test'; +if (/^test/) { print "ok 1\n"; } else { print "not ok 1\n";} +if (/^foo/) { print "not ok 2\n"; } else { print "ok 2\n";} diff --git a/t/base.term b/t/base.term new file mode 100644 index 0000000000..509454f053 --- /dev/null +++ b/t/base.term @@ -0,0 +1,36 @@ +#!./perl + +# $Header: base.term,v 1.0 87/12/18 13:11:59 root Exp $ + +print "1..6\n"; + +# check "" interpretation + +$x = "\n"; +if ($x lt ' ') {print "ok 1\n";} else {print "not ok 1\n";} + +# check `` processing + +$x = `echo hi there`; +if ($x eq "hi there\n") {print "ok 2\n";} else {print "not ok 2\n";} + +# check $#array + +$x[0] = 'foo'; +$x[1] = 'foo'; +$tmp = $#x; +print "#3\t:$tmp: == :1:\n"; +if ($#x == '1') {print "ok 3\n";} else {print "not ok 3\n";} + +# check numeric literal + +$x = 1; +if ($x == '1') {print "ok 4\n";} else {print "not ok 4\n";} + +# check <> pseudoliteral + +open(try, "/dev/null") || (die "Can't open /dev/null."); +if (<try> eq '') {print "ok 5\n";} else {print "not ok 5\n";} + +open(try, "/etc/termcap") || (die "Can't open /etc/termcap."); +if (<try> ne '') {print "ok 6\n";} else {print "not ok 6\n";} diff --git a/t/cmd.elsif b/t/cmd.elsif new file mode 100644 index 0000000000..51a7641d08 --- /dev/null +++ b/t/cmd.elsif @@ -0,0 +1,25 @@ +#!./perl + +# $Header: cmd.elsif,v 1.0 87/12/18 13:12:02 root Exp $ + +sub foo { + if ($_[0] == 1) { + 1; + } + elsif ($_[0] == 2) { + 2; + } + elsif ($_[0] == 3) { + 3; + } + else { + 4; + } +} + +print "1..4\n"; + +if (($x = do foo(1)) == 1) {print "ok 1\n";} else {print "not ok 1\n";} +if (($x = do foo(2)) == 2) {print "ok 2\n";} else {print "not ok 2\n";} +if (($x = do foo(3)) == 3) {print "ok 3\n";} else {print "not ok 3\n";} +if (($x = do foo(4)) == 4) {print "ok 4\n";} else {print "not ok 4\n";} diff --git a/t/cmd.for b/t/cmd.for new file mode 100644 index 0000000000..769bec28bb --- /dev/null +++ b/t/cmd.for @@ -0,0 +1,25 @@ +#!./perl + +# $Header: cmd.for,v 1.0 87/12/18 13:12:05 root Exp $ + +print "1..2\n"; + +for ($i = 0; $i <= 10; $i++) { + $x[$i] = $i; +} +$y = $x[10]; +print "#1 :$y: eq :10:\n"; +$y = join(' ', @x); +print "#1 :$y: eq :0 1 2 3 4 5 6 7 8 9 10:\n"; +if (join(' ', @x) eq '0 1 2 3 4 5 6 7 8 9 10') { + print "ok 1\n"; +} else { + print "not ok 1\n"; +} + +$i = $c = 0; +for (;;) { + $c++; + last if $i++ > 10; +} +if ($c == 12) {print "ok 2\n";} else {print "not ok 2\n";} diff --git a/t/cmd.mod b/t/cmd.mod new file mode 100644 index 0000000000..96367e96e9 --- /dev/null +++ b/t/cmd.mod @@ -0,0 +1,28 @@ +#!./perl + +# $Header: cmd.mod,v 1.0 87/12/18 13:12:09 root Exp $ + +print "1..6\n"; + +print "ok 1\n" if 1; +print "not ok 1\n" unless 1; + +print "ok 2\n" unless 0; +print "not ok 2\n" if 0; + +1 && (print "not ok 3\n") if 0; +1 && (print "ok 3\n") if 1; +0 || (print "not ok 4\n") if 0; +0 || (print "ok 4\n") if 1; + +$x = 0; +do {$x[$x] = $x;} while ($x++) < 10; +if (join(' ',@x) eq '0 1 2 3 4 5 6 7 8 9 10') { + print "ok 5\n"; +} else { + print "not ok 5\n"; +} + +$x = 15; +$x = 10 while $x < 10; +if ($x == 15) {print "ok 6\n";} else {print "not ok 6\n";} diff --git a/t/cmd.subval b/t/cmd.subval new file mode 100644 index 0000000000..2b4962f58a --- /dev/null +++ b/t/cmd.subval @@ -0,0 +1,50 @@ +#!./perl + +# $Header: cmd.subval,v 1.0 87/12/18 13:12:12 root Exp $ + +sub foo1 { + 'true1'; + if ($_[0]) { 'true2'; } +} + +sub foo2 { + 'true1'; + if ($_[0]) { 'true2'; } else { 'true3'; } +} + +sub foo3 { + 'true1'; + unless ($_[0]) { 'true2'; } +} + +sub foo4 { + 'true1'; + unless ($_[0]) { 'true2'; } else { 'true3'; } +} + +sub foo5 { + 'true1'; + 'true2' if $_[0]; +} + +sub foo6 { + 'true1'; + 'true2' unless $_[0]; +} + +print "1..12\n"; + +if (do foo1(0) eq '') {print "ok 1\n";} else {print "not ok 1\n";} +if (do foo1(1) eq 'true2') {print "ok 2\n";} else {print "not ok 2\n";} +if (do foo2(0) eq 'true3') {print "ok 3\n";} else {print "not ok 3\n";} +if (do foo2(1) eq 'true2') {print "ok 4\n";} else {print "not ok 4\n";} + +if (do foo3(0) eq 'true2') {print "ok 5\n";} else {print "not ok 5\n";} +if (do foo3(1) eq '') {print "ok 6\n";} else {print "not ok 6\n";} +if (do foo4(0) eq 'true2') {print "ok 7\n";} else {print "not ok 7\n";} +if (do foo4(1) eq 'true3') {print "ok 8\n";} else {print "not ok 8\n";} + +if (do foo5(0) eq '') {print "ok 9\n";} else {print "not ok 9\n";} +if (do foo5(1) eq 'true2') {print "ok 10\n";} else {print "not ok 10\n";} +if (do foo6(0) eq 'true2') {print "ok 11\n";} else {print "not ok 11\n";} +if (do foo6(1) eq '') {print "ok 12\n";} else {print "not ok 12\n";} diff --git a/t/cmd.while b/t/cmd.while new file mode 100644 index 0000000000..585e27f708 --- /dev/null +++ b/t/cmd.while @@ -0,0 +1,110 @@ +#!./perl + +# $Header: cmd.while,v 1.0 87/12/18 13:12:15 root Exp $ + +print "1..10\n"; + +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; + +# test "last" command + +open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp."; +while (<fh>) { + last if /vt100/; +} +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."; +while (<fh>) { + next if /vt100/; + $bad = 1 if /vt100/; +} +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."; +while (<fh>) { + if (s/vt100/VT100/g) { + s/VT100/Vt100/g; + redo; + } + $bad = 1 if /vt100/; + $bad = 1 if /VT100/; +} +if (!eof || $bad) {print "not ok 3\n";} else {print "ok 3\n";} + +# now do the same with a label and a continue block + +# test "last" command + +$badcont = ''; +open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp."; +line: while (<fh>) { + if (/vt100/) {last line;} +} continue { + $badcont = 1 if /vt100/; +} +if (!eof && /vt100/) {print "ok 4\n";} else {print "not ok 4\n";} +if (!$badcont) {print "ok 5\n";} else {print "not ok 5\n";} + +# test "next" command + +$bad = ''; +$badcont = 1; +open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp."; +entry: while (<fh>) { + next entry if /vt100/; + $bad = 1 if /vt100/; +} continue { + $badcont = '' if /vt100/; +} +if (!eof || /vt100/ || $bad) {print "not ok 6\n";} else {print "ok 6\n";} +if (!$badcont) {print "ok 7\n";} else {print "not ok 7\n";} + +# test "redo" command + +$bad = ''; +$badcont = ''; +open(fh,'Cmd.while.tmp') || die "Can't open Cmd.while.tmp."; +loop: while (<fh>) { + if (s/vt100/VT100/g) { + s/VT100/Vt100/g; + redo loop; + } + $bad = 1 if /vt100/; + $bad = 1 if /VT100/; +} continue { + $badcont = 1 if /vt100/; +} +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`; + +#$x = 0; +#while (1) { +# if ($x > 1) {last;} +# next; +#} continue { +# if ($x++ > 10) {last;} +# next; +#} +# +#if ($x < 10) {print "ok 10\n";} else {print "not ok 10\n";} + +$i = 9; +{ + $i++; +} +print "ok $i\n"; diff --git a/t/comp.cmdopt b/t/comp.cmdopt new file mode 100644 index 0000000000..c459324fcc --- /dev/null +++ b/t/comp.cmdopt @@ -0,0 +1,83 @@ +#!./perl + +# $Header: comp.cmdopt,v 1.0 87/12/18 13:12:19 root Exp $ + +print "1..40\n"; + +# test the optimization of constants + +if (1) { print "ok 1\n";} else { print "not ok 1\n";} +unless (0) { print "ok 2\n";} else { print "not ok 2\n";} + +if (0) { print "not ok 3\n";} else { print "ok 3\n";} +unless (1) { print "not ok 4\n";} else { print "ok 4\n";} + +unless (!1) { print "ok 5\n";} else { print "not ok 5\n";} +if (!0) { print "ok 6\n";} else { print "not ok 6\n";} + +unless (!0) { print "not ok 7\n";} else { print "ok 7\n";} +if (!1) { print "not ok 8\n";} else { print "ok 8\n";} + +$x = 1; +if (1 && $x) { print "ok 9\n";} else { print "not ok 9\n";} +if (0 && $x) { print "not ok 10\n";} else { print "ok 10\n";} +$x = ''; +if (1 && $x) { print "not ok 11\n";} else { print "ok 11\n";} +if (0 && $x) { print "not ok 12\n";} else { print "ok 12\n";} + +$x = 1; +if (1 || $x) { print "ok 13\n";} else { print "not ok 13\n";} +if (0 || $x) { print "ok 14\n";} else { print "not ok 14\n";} +$x = ''; +if (1 || $x) { print "ok 15\n";} else { print "not ok 15\n";} +if (0 || $x) { print "not ok 16\n";} else { print "ok 16\n";} + + +# test the optimization of registers + +$x = 1; +if ($x) { print "ok 17\n";} else { print "not ok 17\n";} +unless ($x) { print "not ok 18\n";} else { print "ok 18\n";} + +$x = ''; +if ($x) { print "not ok 19\n";} else { print "ok 19\n";} +unless ($x) { print "ok 20\n";} else { print "not ok 20\n";} + +# test optimization of string operations + +$a = 'a'; +if ($a eq 'a') { print "ok 21\n";} else { print "not ok 21\n";} +if ($a ne 'a') { print "not ok 22\n";} else { print "ok 22\n";} + +if ($a =~ /a/) { print "ok 23\n";} else { print "not ok 23\n";} +if ($a !~ /a/) { print "not ok 24\n";} else { print "ok 24\n";} +# test interaction of logicals and other operations + +$a = 'a'; +$x = 1; +if ($a eq 'a' && $x) { print "ok 25\n";} else { print "not ok 25\n";} +if ($a ne 'a' && $x) { print "not ok 26\n";} else { print "ok 26\n";} +$x = ''; +if ($a eq 'a' && $x) { print "not ok 27\n";} else { print "ok 27\n";} +if ($a ne 'a' && $x) { print "not ok 28\n";} else { print "ok 28\n";} + +$x = 1; +if ($a eq 'a' || $x) { print "ok 29\n";} else { print "not ok 29\n";} +if ($a ne 'a' || $x) { print "ok 30\n";} else { print "not ok 30\n";} +$x = ''; +if ($a eq 'a' || $x) { print "ok 31\n";} else { print "not ok 31\n";} +if ($a ne 'a' || $x) { print "not ok 32\n";} else { print "ok 32\n";} + +$x = 1; +if ($a =~ /a/ && $x) { print "ok 33\n";} else { print "not ok 33\n";} +if ($a !~ /a/ && $x) { print "not ok 34\n";} else { print "ok 34\n";} +$x = ''; +if ($a =~ /a/ && $x) { print "not ok 35\n";} else { print "ok 35\n";} + if ($a !~ /a/ && $x) { print "not ok 36\n";} else { print "ok 36\n";} + +$x = 1; +if ($a =~ /a/ || $x) { print "ok 37\n";} else { print "not ok 37\n";} +if ($a !~ /a/ || $x) { print "ok 38\n";} else { print "not ok 38\n";} +$x = ''; +if ($a =~ /a/ || $x) { print "ok 39\n";} else { print "not ok 39\n";} +if ($a !~ /a/ || $x) { print "not ok 40\n";} else { print "ok 40\n";} diff --git a/t/comp.cpp b/t/comp.cpp new file mode 100644 index 0000000000..ee7ad73f16 --- /dev/null +++ b/t/comp.cpp @@ -0,0 +1,35 @@ +#!./perl -P + +# $Header: comp.cpp,v 1.0 87/12/18 13:12:22 root Exp $ + +print "1..3\n"; + +#this is a comment +#define MESS "ok 1\n" +print MESS; + +#If you capitalize, it's a comment. +#ifdef MESS + print "ok 2\n"; +#else + print "not ok 2\n"; +#endif + +open(try,">Comp.cpp.tmp") || die "Can't open temp perl file."; +print try '$ok = "not ok 3\n";'; print try "\n"; +print try "#include <Comp.cpp.inc>\n"; +print try "#ifdef OK\n"; +print try '$ok = OK;'; print try "\n"; +print try "#endif\n"; +print try 'print $ok;'; print try "\n"; +close try; + +open(try,">Comp.cpp.inc") || (die "Can't open temp include file."); +print try '#define OK "ok 3\n"'; print try "\n"; +close try; + +$pwd=`pwd`; +$pwd =~ s/\n//; +$x = `./perl -P -I$pwd Comp.cpp.tmp`; +print $x; +`/bin/rm -f Comp.cpp.tmp Comp.cpp.inc`; diff --git a/t/comp.decl b/t/comp.decl new file mode 100644 index 0000000000..649103ac14 --- /dev/null +++ b/t/comp.decl @@ -0,0 +1,49 @@ +#!./perl + +# $Header: comp.decl,v 1.0 87/12/18 13:12:27 root Exp $ + +# check to see if subroutine declarations work everwhere + +sub one { + print "ok 1\n"; +} +format one = +ok 5 +. + +print "1..7\n"; + +do one(); +do two(); + +sub two { + print "ok 2\n"; +} +format two = +@<<< +$foo +. + +if ($x eq $x) { + sub three { + print "ok 3\n"; + } + do three(); +} + +do four(); +$~ = 'one'; +write; +$~ = 'two'; +$foo = "ok 6"; +write; +$~ = 'three'; +write; + +format three = +ok 7 +. + +sub four { + print "ok 4\n"; +} diff --git a/t/comp.multiline b/t/comp.multiline new file mode 100644 index 0000000000..9bf1be21e0 --- /dev/null +++ b/t/comp.multiline @@ -0,0 +1,40 @@ +#!./perl + +# $Header: comp.multiline,v 1.0 87/12/18 13:12:31 root Exp $ + +print "1..5\n"; + +open(try,'>Comp.try') || (die "Can't open temp file."); + +$x = 'now is the time +for all good men +to come to. +'; + +$y = 'now is the time' . "\n" . +'for all good men' . "\n" . +'to come to.' . "\n"; + +if ($x eq $y) {print "ok 1\n";} else {print "not ok 1\n";} + +print try $x; +close try; + +open(try,'Comp.try') || (die "Can't reopen temp file."); +$count = 0; +$z = ''; +while (<try>) { + $z .= $_; + $count = $count + 1; +} + +if ($z eq $y) {print "ok 2\n";} else {print "not ok 2\n";} + +if ($count == 3) {print "ok 3\n";} else {print "not ok 3\n";} + +$_ = `cat Comp.try`; + +if (/.*\n.*\n.*\n$/) {print "ok 4\n";} else {print "not ok 4\n";} +`/bin/rm -f Comp.try`; + +if ($_ eq $y) {print "ok 5\n";} else {print "not ok 5\n";} diff --git a/t/comp.script b/t/comp.script new file mode 100644 index 0000000000..0364d1901d --- /dev/null +++ b/t/comp.script @@ -0,0 +1,23 @@ +#!./perl + +# $Header: comp.script,v 1.0 87/12/18 13:12:36 root Exp $ + +print "1..3\n"; + +$x = `./perl -e 'print "ok\n";'`; + +if ($x eq "ok\n") {print "ok 1\n";} else {print "not ok 1\n";} + +open(try,">Comp.script") || (die "Can't open temp file."); +print try 'print "ok\n";'; print try "\n"; +close try; + +$x = `./perl Comp.script`; + +if ($x eq "ok\n") {print "ok 2\n";} else {print "not ok 2\n";} + +$x = `./perl <Comp.script`; + +if ($x eq "ok\n") {print "ok 3\n";} else {print "not ok 3\n";} + +`/bin/rm -f Comp.script`; diff --git a/t/comp.term b/t/comp.term new file mode 100644 index 0000000000..83cce45cbd --- /dev/null +++ b/t/comp.term @@ -0,0 +1,27 @@ +#!./perl + +# $Header: comp.term,v 1.0 87/12/18 13:12:40 root Exp $ + +# tests that aren't important enough for base.term + +print "1..9\n"; + +$x = "\\n"; +print "#1\t:$x: eq " . ':\n:' . "\n"; +if ($x eq '\n') {print "ok 1\n";} else {print "not ok 1\n";} + +$x = "#2\t:$x: eq :\\n:\n"; +print $x; +unless (index($x,'\\\\')>0) {print "ok 2\n";} else {print "not ok 2\n";} + +if (length('\\\\') == 2) {print "ok 3\n";} else {print "not ok 3\n";} + +$one = 'a'; + +if (length("\\n") == 2) {print "ok 4\n";} else {print "not ok 4\n";} +if (length("\\\n") == 2) {print "ok 5\n";} else {print "not ok 5\n";} +if (length("$one\\n") == 3) {print "ok 6\n";} else {print "not ok 6\n";} +if (length("$one\\\n") == 3) {print "ok 7\n";} else {print "not ok 7\n";} +if (length("\\n$one") == 3) {print "ok 8\n";} else {print "not ok 8\n";} +if (length("\\\n$one") == 3) {print "ok 9\n";} else {print "not ok 9\n";} + diff --git a/t/io.argv b/t/io.argv new file mode 100644 index 0000000000..8282a3d0a8 --- /dev/null +++ b/t/io.argv @@ -0,0 +1,36 @@ +#!./perl + +# $Header: io.argv,v 1.0 87/12/18 13:12:44 root Exp $ + +print "1..5\n"; + +open(try, '>Io.argv.tmp') || (die "Can't open temp file."); +print try "a line\n"; +close try; + +$x = `./perl -e 'while (<>) {print \$.,\$_;}' Io.argv.tmp Io.argv.tmp`; + +if ($x eq "1a line\n2a line\n") {print "ok 1\n";} else {print "not ok 1\n";} + +$x = `echo foo|./perl -e 'while (<>) {print $_;}' Io.argv.tmp -`; + +if ($x eq "a line\nfoo\n") {print "ok 2\n";} else {print "not ok 2\n";} + +$x = `echo foo|./perl -e 'while (<>) {print $_;}'`; + +if ($x eq "foo\n") {print "ok 3\n";} else {print "not ok 3\n";} + +@ARGV = ('Io.argv.tmp', 'Io.argv.tmp', '/dev/null', 'Io.argv.tmp'); +while (<>) { + $y .= $. . $_; + if (eof) { + if ($. == 3) {print "ok 4\n";} else {print "not ok 4\n";} + } +} + +if ($y eq "1a line\n2a line\n3a line\n") + {print "ok 5\n";} +else + {print "not ok 5\n";} + +`/bin/rm -f Io.argv.tmp`; diff --git a/t/io.fs b/t/io.fs new file mode 100644 index 0000000000..996986cd39 --- /dev/null +++ b/t/io.fs @@ -0,0 +1,63 @@ +#!./perl + +# $Header: io.fs,v 1.0 87/12/18 13:12:48 root Exp $ + +print "1..18\n"; + +chdir '/tmp'; +`/bin/rm -rf a b c x`; + +umask(022); + +if (umask(0) == 022) {print "ok 1\n";} else {print "not ok 1\n";} +open(fh,'>x') || die "Can't create x"; +close(fh); +open(fh,'>a') || die "Can't create a"; +close(fh); + +if (link('a','b')) {print "ok 2\n";} else {print "not ok 2\n";} + +if (link('b','c')) {print "ok 3\n";} else {print "not ok 3\n";} + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('c'); + +if ($nlink == 3) {print "ok 4\n";} else {print "not ok 4\n";} +if (($mode & 0777) == 0666) {print "ok 5\n";} else {print "not ok 5\n";} + +if ((chmod 0777,'a') == 1) {print "ok 6\n";} else {print "not ok 6\n";} + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('c'); +if (($mode & 0777) == 0777) {print "ok 7\n";} else {print "not ok 7\n";} + +if ((chmod 0700,'c','x') == 2) {print "ok 8\n";} else {print "not ok 8\n";} + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('c'); +if (($mode & 0777) == 0700) {print "ok 9\n";} else {print "not ok 9\n";} +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('x'); +if (($mode & 0777) == 0700) {print "ok 10\n";} else {print "not ok 10\n";} + +if ((unlink 'b','x') == 2) {print "ok 11\n";} else {print "not ok 11\n";} +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('b'); +if ($ino == 0) {print "ok 12\n";} else {print "not ok 12\n";} +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('x'); +if ($ino == 0) {print "ok 13\n";} else {print "not ok 13\n";} + +if (rename('a','b')) {print "ok 14\n";} else {print "not ok 14\n";} +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('a'); +if ($ino == 0) {print "ok 15\n";} else {print "not ok 15\n";} +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('b'); +if ($ino) {print "ok 16\n";} else {print "not ok 16\n";} + +if ((unlink 'b') == 1) {print "ok 17\n";} else {print "not ok 17\n";} +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('b'); +if ($ino == 0) {print "ok 18\n";} else {print "not ok 18\n";} +unlink 'c'; diff --git a/t/io.inplace b/t/io.inplace new file mode 100644 index 0000000000..2a245306c9 --- /dev/null +++ b/t/io.inplace @@ -0,0 +1,19 @@ +#!./perl -i.bak + +# $Header: io.inplace,v 1.0 87/12/18 13:12:51 root Exp $ + +print "1..2\n"; + +@ARGV = ('.a','.b','.c'); +`echo foo | tee .a .b .c`; +while (<>) { + s/foo/bar/; +} +continue { + print; +} + +if (`cat .a .b .c` eq "bar\nbar\nbar\n") {print "ok 1\n";} else {print "not ok 1\n";} +if (`cat .a.bak .b.bak .c.bak` eq "foo\nfoo\nfoo\n") {print "ok 2\n";} else {print "not ok 2\n";} + +unlink '.a', '.b', '.c', '.a.bak', '.b.bak', '.c.bak'; diff --git a/t/io.print b/t/io.print new file mode 100644 index 0000000000..f183b14013 --- /dev/null +++ b/t/io.print @@ -0,0 +1,25 @@ +#!./perl + +# $Header: io.print,v 1.0 87/12/18 13:12:55 root Exp $ + +print "1..11\n"; + +print stdout "ok 1\n"; +print "ok 2\n","ok 3\n","ok 4\n","ok 5\n"; + +open(foo,">-"); +print foo "ok 6\n"; + +printf "ok %d\n",7; +printf("ok %d\n",8); + +@a = ("ok %d%c",9,ord("\n")); +printf @a; + +$a[1] = 10; +printf stdout @a; + +$, = ' '; +$\ = "\n"; + +print "ok","11"; diff --git a/t/io.tell b/t/io.tell new file mode 100644 index 0000000000..130b4c4780 --- /dev/null +++ b/t/io.tell @@ -0,0 +1,42 @@ +#!./perl + +# $Header: io.tell,v 1.0 87/12/18 13:13:02 root Exp $ + +print "1..13\n"; + +open(tst, '../Makefile') || (die "Can't open ../Makefile"); + +if (eof(tst)) { print "not ok 1\n"; } else { print "ok 1\n"; } + +$firstline = <tst>; +$secondpos = tell; + +$x = 0; +while (<tst>) { + if (eof) {$x++;} +} +if ($x == 1) { print "ok 2\n"; } else { print "not ok 2\n"; } + +$lastpos = tell; + +unless (eof) { print "not ok 3\n"; } else { print "ok 3\n"; } + +if (seek(tst,0,0)) { print "ok 4\n"; } else { print "not ok 4\n"; } + +if (eof) { print "not ok 5\n"; } else { print "ok 5\n"; } + +if ($firstline eq <tst>) { print "ok 6\n"; } else { print "not ok 6\n"; } + +if ($secondpos == tell) { print "ok 7\n"; } else { print "not ok 7\n"; } + +if (seek(tst,0,1)) { print "ok 8\n"; } else { print "not ok 8\n"; } + +if (eof) { print "not ok 9\n"; } else { print "ok 9\n"; } + +if ($secondpos == tell) { print "ok 10\n"; } else { print "not ok 10\n"; } + +if (seek(tst,0,2)) { print "ok 11\n"; } else { print "not ok 11\n"; } + +if ($lastpos == tell) { print "ok 12\n"; } else { print "not ok 12\n"; } + +unless (eof) { print "not ok 13\n"; } else { print "ok 13\n"; } diff --git a/t/op.append b/t/op.append new file mode 100644 index 0000000000..5972ac4533 --- /dev/null +++ b/t/op.append @@ -0,0 +1,21 @@ +#!./perl + +# $Header: op.append,v 1.0 87/12/18 13:13:05 root Exp $ + +print "1..3\n"; + +$a = 'ab' . 'c'; # compile time +$b = 'def'; + +$c = $a . $b; +print "#1\t:$c: eq :abcdef:\n"; +if ($c eq 'abcdef') {print "ok 1\n";} else {print "not ok 1\n";} + +$c .= 'xyz'; +print "#2\t:$c: eq :abcdefxyz:\n"; +if ($c eq 'abcdefxyz') {print "ok 2\n";} else {print "not ok 2\n";} + +$_ = $a; +$_ .= $b; +print "#3\t:$_: eq :abcdef:\n"; +if ($_ eq 'abcdef') {print "ok 3\n";} else {print "not ok 3\n";} diff --git a/t/op.auto b/t/op.auto new file mode 100644 index 0000000000..6ad44ce7ce --- /dev/null +++ b/t/op.auto @@ -0,0 +1,41 @@ +#!./perl + +# $Header: op.auto,v 1.0 87/12/18 13:13:08 root Exp $ + +print "1..30\n"; + +$x = 10000; +if (0 + ++$x - 1 == 10000) { print "ok 1\n";} else {print "not ok 1\n";} +if (0 + $x-- - 1 == 10000) { print "ok 2\n";} else {print "not ok 2\n";} +if (1 * $x == 10000) { print "ok 3\n";} else {print "not ok 3\n";} +if (0 + $x-- - 0 == 10000) { print "ok 4\n";} else {print "not ok 4\n";} +if (1 + $x == 10000) { print "ok 5\n";} else {print "not ok 5\n";} +if (1 + $x++ == 10000) { print "ok 6\n";} else {print "not ok 6\n";} +if (0 + $x == 10000) { print "ok 7\n";} else {print "not ok 7\n";} +if (0 + --$x + 1 == 10000) { print "ok 8\n";} else {print "not ok 8\n";} +if (0 + ++$x + 0 == 10000) { print "ok 9\n";} else {print "not ok 9\n";} +if ($x == 10000) { print "ok 10\n";} else {print "not ok 10\n";} + +$x[0] = 10000; +if (0 + ++$x[0] - 1 == 10000) { print "ok 11\n";} else {print "not ok 11\n";} +if (0 + $x[0]-- - 1 == 10000) { print "ok 12\n";} else {print "not ok 12\n";} +if (1 * $x[0] == 10000) { print "ok 13\n";} else {print "not ok 13\n";} +if (0 + $x[0]-- - 0 == 10000) { print "ok 14\n";} else {print "not ok 14\n";} +if (1 + $x[0] == 10000) { print "ok 15\n";} else {print "not ok 15\n";} +if (1 + $x[0]++ == 10000) { print "ok 16\n";} else {print "not ok 16\n";} +if (0 + $x[0] == 10000) { print "ok 17\n";} else {print "not ok 17\n";} +if (0 + --$x[0] + 1 == 10000) { print "ok 18\n";} else {print "not ok 18\n";} +if (0 + ++$x[0] + 0 == 10000) { print "ok 19\n";} else {print "not ok 19\n";} +if ($x[0] == 10000) { print "ok 20\n";} else {print "not ok 20\n";} + +$x{0} = 10000; +if (0 + ++$x{0} - 1 == 10000) { print "ok 21\n";} else {print "not ok 21\n";} +if (0 + $x{0}-- - 1 == 10000) { print "ok 22\n";} else {print "not ok 22\n";} +if (1 * $x{0} == 10000) { print "ok 23\n";} else {print "not ok 23\n";} +if (0 + $x{0}-- - 0 == 10000) { print "ok 24\n";} else {print "not ok 24\n";} +if (1 + $x{0} == 10000) { print "ok 25\n";} else {print "not ok 25\n";} +if (1 + $x{0}++ == 10000) { print "ok 26\n";} else {print "not ok 26\n";} +if (0 + $x{0} == 10000) { print "ok 27\n";} else {print "not ok 27\n";} +if (0 + --$x{0} + 1 == 10000) { print "ok 28\n";} else {print "not ok 28\n";} +if (0 + ++$x{0} + 0 == 10000) { print "ok 29\n";} else {print "not ok 29\n";} +if ($x{0} == 10000) { print "ok 30\n";} else {print "not ok 30\n";} diff --git a/t/op.chop b/t/op.chop new file mode 100644 index 0000000000..c86ea9cf3e --- /dev/null +++ b/t/op.chop @@ -0,0 +1,21 @@ +#!./perl + +# $Header: op.chop,v 1.0 87/12/18 13:13:11 root Exp $ + +print "1..2\n"; + +# optimized + +$_ = 'abc'; +$c = do foo(); +if ($c . $_ eq 'cab') {print "ok 1\n";} else {print "not ok 1\n";} + +# unoptimized + +$_ = 'abc'; +$c = chop($_); +if ($c . $_ eq 'cab') {print "ok 2\n";} else {print "not ok 2\n";} + +sub foo { + chop; +} diff --git a/t/op.cond b/t/op.cond new file mode 100644 index 0000000000..7391e5893b --- /dev/null +++ b/t/op.cond @@ -0,0 +1,12 @@ +#!./perl + +# $Header: op.cond,v 1.0 87/12/18 13:13:14 root Exp $ + +print "1..4\n"; + +print 1 ? "ok 1\n" : "not ok 1\n"; # compile time +print 0 ? "not ok 2\n" : "ok 2\n"; + +$x = 1; +print $x ? "ok 3\n" : "not ok 3\n"; # run time +print !$x ? "not ok 4\n" : "ok 4\n"; diff --git a/t/op.crypt b/t/op.crypt new file mode 100644 index 0000000000..b28dda6aaa --- /dev/null +++ b/t/op.crypt @@ -0,0 +1,12 @@ +#!./perl + +# $Header: op.crypt,v 1.0 87/12/18 13:13:17 root Exp $ + +print "1..2\n"; + +# this evaluates entirely at compile time! +if (crypt('uh','oh') eq 'ohPnjpYtoi1NU') {print "ok 1\n";} else {print "not ok 1\n";} + +# this doesn't. +$uh = 'uh'; +if (crypt($uh,'oh') eq 'ohPnjpYtoi1NU') {print "ok 2\n";} else {print "not ok 2\n";} diff --git a/t/op.do b/t/op.do new file mode 100644 index 0000000000..90fdae993d --- /dev/null +++ b/t/op.do @@ -0,0 +1,34 @@ +#!./perl + +# $Header: op.do,v 1.0 87/12/18 13:13:20 root Exp $ +sub foo1 +{ + print $_[0]; + 'value'; +} + +sub foo2 +{ + shift(_); + print $_[0]; + $x = 'value'; + $x; +} + +print "1..8\n"; + +$_[0] = "not ok 1\n"; +$result = do foo1("ok 1\n"); +print "#2\t:$result: eq :value:\n"; +if ($result EQ 'value') { print "ok 2\n"; } else { print "not ok 2\n"; } +if ($_[0] EQ "not ok 1\n") { print "ok 3\n"; } else { print "not ok 3\n"; } + +$_[0] = "not ok 4\n"; +$result = do foo2("not ok 4\n","ok 4\n","not ok 4\n"); +print "#5\t:$result: eq :value:\n"; +if ($result EQ 'value') { print "ok 5\n"; } else { print "not ok 5\n"; } +if ($_[0] EQ "not ok 4\n") { print "ok 6\n"; } else { print "not ok 6\n"; } + +$result = do{print "ok 7\n"; 'value';}; +print "#8\t:$result: eq :value:\n"; +if ($result EQ 'value') { print "ok 8\n"; } else { print "not ok 8\n"; } diff --git a/t/op.each b/t/op.each new file mode 100644 index 0000000000..8e91950e4b --- /dev/null +++ b/t/op.each @@ -0,0 +1,50 @@ +#!./perl + +# $Header: op.each,v 1.0 87/12/18 13:13:23 root Exp $ + +print "1..2\n"; + +$h{'abc'} = 'ABC'; +$h{'def'} = 'DEF'; +$h{'jkl'} = 'JKL'; +$h{'xyz'} = 'XYZ'; +$h{'a'} = 'A'; +$h{'b'} = 'B'; +$h{'c'} = 'C'; +$h{'d'} = 'D'; +$h{'e'} = 'E'; +$h{'f'} = 'F'; +$h{'g'} = 'G'; +$h{'h'} = 'H'; +$h{'i'} = 'I'; +$h{'j'} = 'J'; +$h{'k'} = 'K'; +$h{'l'} = 'L'; +$h{'m'} = 'M'; +$h{'n'} = 'N'; +$h{'o'} = 'O'; +$h{'p'} = 'P'; +$h{'q'} = 'Q'; +$h{'r'} = 'R'; +$h{'s'} = 'S'; +$h{'t'} = 'T'; +$h{'u'} = 'U'; +$h{'v'} = 'V'; +$h{'w'} = 'W'; +$h{'x'} = 'X'; +$h{'y'} = 'Y'; +$h{'z'} = 'Z'; + +@keys = keys(h); +@values = values(h); + +if ($#keys == 29 && $#values == 29) {print "ok 1\n";} else {print "not ok 1\n";} + +while (($key,$value) = each(h)) { + if ($key eq $keys[$i] && $value eq $values[$i] && $key gt $value) { + $key =~ y/a-z/A-Z/; + $i++ if $key eq $value; + } +} + +if ($i == 30) {print "ok 2\n";} else {print "not ok 2\n";} diff --git a/t/op.exec b/t/op.exec new file mode 100644 index 0000000000..328e470889 --- /dev/null +++ b/t/op.exec @@ -0,0 +1,12 @@ +#!./perl + +# $Header: op.exec,v 1.0 87/12/18 13:13:26 root Exp $ + +$| = 1; # flush stdout +print "1..4\n"; + +system "echo ok \\1"; # shell interpreted +system "echo ok 2"; # split and directly called +system "echo", "ok", "3"; # directly called + +exec "echo","ok","4"; diff --git a/t/op.exp b/t/op.exp new file mode 100644 index 0000000000..8a3a8b66af --- /dev/null +++ b/t/op.exp @@ -0,0 +1,27 @@ +#!./perl + +# $Header: op.exp,v 1.0 87/12/18 13:13:29 root Exp $ + +print "1..6\n"; + +# compile time evaluation + +$s = sqrt(2); +if (substr($s,0,5) eq '1.414') {print "ok 1\n";} else {print "not ok 1\n";} + +$s = exp(1); +if (substr($s,0,7) eq '2.71828') {print "ok 2\n";} else {print "not ok 2\n";} + +if (exp(log(1)) == 1) {print "ok 3\n";} else {print "not ok 3\n";} + +# run time evaluation + +$x1 = 1; +$x2 = 2; +$s = sqrt($x2); +if (substr($s,0,5) eq '1.414') {print "ok 4\n";} else {print "not ok 4\n";} + +$s = exp($x1); +if (substr($s,0,7) eq '2.71828') {print "ok 5\n";} else {print "not ok 5\n";} + +if (exp(log($x1)) == 1) {print "ok 6\n";} else {print "not ok 6\n";} diff --git a/t/op.flip b/t/op.flip new file mode 100644 index 0000000000..6a54b190b5 --- /dev/null +++ b/t/op.flip @@ -0,0 +1,26 @@ +#!./perl + +# $Header: op.flip,v 1.0 87/12/18 13:13:34 root Exp $ + +print "1..8\n"; + +@a = (1,2,3,4,5,6,7,8,9,10,11,12); + +while ($_ = shift(a)) { + if ($x = /4/../8/) { $z = $x; print "ok ", $x + 0, "\n"; } + $y .= /1/../2/; +} + +if ($z eq '5E0') {print "ok 6\n";} else {print "not ok 6\n";} + +if ($y eq '12E0123E0') {print "ok 7\n";} else {print "not ok 7\n";} + +@a = ('a','b','c','d','e','f','g'); + +open(of,'/etc/termcap'); +while (<of>) { + (3 .. 5) && $foo .= $_; +} +$x = ($foo =~ y/\n/\n/); + +if ($x eq 3) {print "ok 8\n";} else {print "not ok 8 $x:$foo:\n";} diff --git a/t/op.fork b/t/op.fork new file mode 100644 index 0000000000..5d6dee3157 --- /dev/null +++ b/t/op.fork @@ -0,0 +1,16 @@ +#!./perl + +# $Header: op.fork,v 1.0 87/12/18 13:13:37 root Exp $ + +$| = 1; +print "1..2\n"; + +if ($cid = fork) { + sleep 2; + if ($result = (kill 9, $cid)) {print "ok 2\n";} else {print "not ok 2 $result\n";} +} +else { + $| = 1; + print "ok 1\n"; + sleep 10; +} diff --git a/t/op.goto b/t/op.goto new file mode 100644 index 0000000000..45dfcf77d7 --- /dev/null +++ b/t/op.goto @@ -0,0 +1,34 @@ +#!./perl + +# $Header: op.goto,v 1.0 87/12/18 13:13:40 root Exp $ + +print "1..3\n"; + +while (0) { + $foo = 1; + label1: + $foo = 2; + goto label2; +} continue { + $foo = 0; + goto label4; + label3: + $foo = 4; + goto label4; +} +goto label1; + +$foo = 3; + +label2: +print "#1\t:$foo: == 2\n"; +if ($foo == 2) {print "ok 1\n";} else {print "not ok 1\n";} +goto label3; + +label4: +print "#2\t:$foo: == 4\n"; +if ($foo == 4) {print "ok 2\n";} else {print "not ok 2\n";} + +$x = `./perl -e 'goto foo;' 2>&1`; +print "#3\t/label/ in :$x"; +if ($x =~ /label/) {print "ok 3\n";} else {print "not ok 3\n";} diff --git a/t/op.int b/t/op.int new file mode 100644 index 0000000000..b358ad7cf5 --- /dev/null +++ b/t/op.int @@ -0,0 +1,17 @@ +#!./perl + +# $Header: op.int,v 1.0 87/12/18 13:13:43 root Exp $ + +print "1..4\n"; + +# compile time evaluation + +if (int(1.234) == 1) {print "ok 1\n";} else {print "not ok 1\n";} + +if (int(-1.234) == -1) {print "ok 2\n";} else {print "not ok 2\n";} + +# run time evaluation + +$x = 1.234; +if (int($x) == 1) {print "ok 3\n";} else {print "not ok 3\n";} +if (int(-$x) == -1) {print "ok 4\n";} else {print "not ok 4\n";} diff --git a/t/op.join b/t/op.join new file mode 100644 index 0000000000..f3555a63cc --- /dev/null +++ b/t/op.join @@ -0,0 +1,12 @@ +#!./perl + +# $Header: op.join,v 1.0 87/12/18 13:13:46 root Exp $ + +print "1..3\n"; + +@x = (1, 2, 3); +if (join(':',@x) eq '1:2:3') {print "ok 1\n";} else {print "not ok 1\n";} + +if (join('',1,2,3) eq '123') {print "ok 2\n";} else {print "not ok 2\n";} + +if (join(':',split(/ /,"1 2 3")) eq '1:2:3') {print "ok 3\n";} else {print "not ok 3\n";} diff --git a/t/op.list b/t/op.list new file mode 100644 index 0000000000..e0c90fa553 --- /dev/null +++ b/t/op.list @@ -0,0 +1,34 @@ +#!./perl + +# $Header: op.list,v 1.0 87/12/18 13:13:50 root Exp $ + +print "1..11\n"; + +@foo = (1, 2, 3, 4); +if ($foo[0] == 1 && $foo[3] == 4) {print "ok 1\n";} else {print "not ok 1\n";} + +$_ = join(foo,':'); +if ($_ eq '1:2:3:4') {print "ok 2\n";} else {print "not ok 2\n";} + +($a,$b,$c,$d) = (1,2,3,4); +if ("$a;$b;$c;$d" eq '1;2;3;4') {print "ok 3\n";} else {print "not ok 3\n";} + +($c,$b,$a) = split(/ /,"111 222 333"); +if ("$a;$b;$c" eq '333;222;111') {print "ok 4\n";} else {print "not ok 4\n";} + +($a,$b,$c) = ($c,$b,$a); +if ("$a;$b;$c" eq '111;222;333') {print "ok 5\n";} else {print "not ok 5\n";} + +($a, $b) = ($b, $a); +if ("$a;$b;$c" eq '222;111;333') {print "ok 6\n";} else {print "not ok 6\n";} + +($a, $b[1], $c{2}, $d) = (1, 2, 3, 4); +if ($a eq 1) {print "ok 7\n";} else {print "not ok 7\n";} +if ($b[1] eq 2) {print "ok 8\n";} else {print "not ok 8\n";} +if ($c{2} eq 3) {print "ok 9\n";} else {print "not ok 9\n";} +if ($d eq 4) {print "ok 10\n";} else {print "not ok 10\n";} + +@foo = (1,2,3,4,5,6,7,8); +($a, $b, $c, $d) = @foo; +print "#11 $a;$b;$c;$d eq 1;2;3;4\n"; +if ("$a;$b;$c;$d" eq '1;2;3;4') {print "ok 11\n";} else {print "not ok 11\n";} diff --git a/t/op.magic b/t/op.magic new file mode 100644 index 0000000000..7696803127 --- /dev/null +++ b/t/op.magic @@ -0,0 +1,27 @@ +#!./perl + +# $Header: op.magic,v 1.0 87/12/18 13:13:54 root Exp $ + +print "1..4\n"; + +$| = 1; # command buffering + +$ENV{'foo'} = 'hi there'; +if (`echo \$foo` eq "hi there\n") {print "ok 1\n";} else {print "not ok 1\n";} + +$! = 0; +open(foo,'ajslkdfpqjsjfkslkjdflksd'); +if ($! == 2) {print "ok 2\n";} else {print "not ok 2\n";} + +$SIG{'INT'} = 'ok3'; +kill 2,$$; +$SIG{'INT'} = 'IGNORE'; +kill 2,$$; +print "ok 4\n"; +$SIG{'INT'} = 'DEFAULT'; +kill 2,$$; +print "not ok\n"; + +sub ok3 { + print "ok 3\n" if pop(@_) eq 'INT'; +} diff --git a/t/op.oct b/t/op.oct new file mode 100644 index 0000000000..718a4d32b8 --- /dev/null +++ b/t/op.oct @@ -0,0 +1,9 @@ +#!./perl + +# $Header: op.oct,v 1.0 87/12/18 13:13:57 root Exp $ + +print "1..3\n"; + +if (oct('01234') == 01234) {print "ok 1\n";} else {print "not ok 1\n";} +if (oct('0x1234') == 0x1234) {print "ok 2\n";} else {print "not ok 2\n";} +if (hex('01234') == 0x1234) {print "ok 3\n";} else {print "not ok 3\n";} diff --git a/t/op.ord b/t/op.ord new file mode 100644 index 0000000000..a46ef78258 --- /dev/null +++ b/t/op.ord @@ -0,0 +1,14 @@ +#!./perl + +# $Header: op.ord,v 1.0 87/12/18 13:14:01 root Exp $ + +print "1..2\n"; + +# compile time evaluation + +if (ord('A') == 65) {print "ok 1\n";} else {print "not ok 1\n";} + +# run time evaluation + +$x = 'ABC'; +if (ord($x) == 65) {print "ok 2\n";} else {print "not ok 2\n";} diff --git a/t/op.pat b/t/op.pat new file mode 100644 index 0000000000..1013610ae4 --- /dev/null +++ b/t/op.pat @@ -0,0 +1,56 @@ +#!./perl + +# $Header: op.pat,v 1.0 87/12/18 13:14:07 root Exp $ +print "1..22\n"; + +$x = "abc\ndef\n"; + +if ($x =~ /^abc/) {print "ok 1\n";} else {print "not ok 1\n";} +if ($x !~ /^def/) {print "ok 2\n";} else {print "not ok 2\n";} + +$* = 1; +if ($x =~ /^def/) {print "ok 3\n";} else {print "not ok 3\n";} +$* = 0; + +$_ = '123'; +if (/^([0-9][0-9]*)/) {print "ok 4\n";} else {print "not ok 4\n";} + +if ($x =~ /^xxx/) {print "not ok 5\n";} else {print "ok 5\n";} +if ($x !~ /^abc/) {print "not ok 6\n";} else {print "ok 6\n";} + +if ($x =~ /def/) {print "ok 7\n";} else {print "not ok 7\n";} +if ($x !~ /def/) {print "not ok 8\n";} else {print "ok 8\n";} + +if ($x !~ /.def/) {print "ok 9\n";} else {print "not ok 9\n";} +if ($x =~ /.def/) {print "not ok 10\n";} else {print "ok 10\n";} + +if ($x =~ /\ndef/) {print "ok 11\n";} else {print "not ok 11\n";} +if ($x !~ /\ndef/) {print "not ok 12\n";} else {print "ok 12\n";} + +$_ = 'aaabbbccc'; +if (/(a*b*)(c*)/ && $1 eq 'aaabbb' && $2 eq 'ccc') { + print "ok 13\n"; +} else { + print "not ok 13\n"; +} +if (/(a+b+c+)/ && $1 eq 'aaabbbccc') { + print "ok 14\n"; +} else { + print "not ok 14\n"; +} + +if (/a+b?c+/) {print "not ok 15\n";} else {print "ok 15\n";} + +$_ = 'aaabccc'; +if (/a+b?c+/) {print "ok 16\n";} else {print "not ok 16\n";} +if (/a*b+c*/) {print "ok 17\n";} else {print "not ok 17\n";} + +$_ = 'aaaccc'; +if (/a*b?c*/) {print "ok 18\n";} else {print "not ok 18\n";} +if (/a*b+c*/) {print "not ok 19\n";} else {print "ok 19\n";} + +$_ = 'abcdef'; +if (/bcd|xyz/) {print "ok 20\n";} else {print "not ok 20\n";} +if (/xyz|bcd/) {print "ok 21\n";} else {print "not ok 21\n";} + +if (m|bc/*d|) {print "ok 22\n";} else {print "not ok 22\n";} diff --git a/t/op.push b/t/op.push new file mode 100644 index 0000000000..01cbfbf6cf --- /dev/null +++ b/t/op.push @@ -0,0 +1,11 @@ +#!./perl + +# $Header: op.push,v 1.0 87/12/18 13:14:10 root Exp $ + +print "1..2\n"; + +@x = (1,2,3); +push(@x,@x); +if (join(x,':') eq '1:2:3:1:2:3') {print "ok 1\n";} else {print "not ok 1\n";} +push(x,4); +if (join(x,':') eq '1:2:3:1:2:3:4') {print "ok 2\n";} else {print "not ok 2\n";} diff --git a/t/op.repeat b/t/op.repeat new file mode 100644 index 0000000000..1c03c31d9a --- /dev/null +++ b/t/op.repeat @@ -0,0 +1,32 @@ +#!./perl + +# $Header: op.repeat,v 1.0 87/12/18 13:14:14 root Exp $ + +print "1..11\n"; + +# compile time + +if ('-' x 5 eq '-----') {print "ok 1\n";} else {print "not ok 1\n";} +if ('-' x 1 eq '-') {print "ok 2\n";} else {print "not ok 2\n";} +if ('-' x 0 eq '') {print "ok 3\n";} else {print "not ok 3\n";} + +if ('ab' x 3 eq 'ababab') {print "ok 4\n";} else {print "not ok 4\n";} + +# run time + +$a = '-'; +if ($a x 5 eq '-----') {print "ok 5\n";} else {print "not ok 5\n";} +if ($a x 1 eq '-') {print "ok 6\n";} else {print "not ok 6\n";} +if ($a x 0 eq '') {print "ok 7\n";} else {print "not ok 7\n";} + +$a = 'ab'; +if ($a x 3 eq 'ababab') {print "ok 8\n";} else {print "not ok 8\n";} + +$a = 'xyz'; +$a x= 2; +if ($a eq 'xyzxyz') {print "ok 9\n";} else {print "not ok 9\n";} +$a x= 1; +if ($a eq 'xyzxyz') {print "ok 10\n";} else {print "not ok 10\n";} +$a x= 0; +if ($a eq '') {print "ok 11\n";} else {print "not ok 11\n";} + diff --git a/t/op.sleep b/t/op.sleep new file mode 100644 index 0000000000..e32e62bf1b --- /dev/null +++ b/t/op.sleep @@ -0,0 +1,8 @@ +#!./perl + +# $Header: op.sleep,v 1.0 87/12/18 13:14:17 root Exp $ + +print "1..1\n"; + +$x = sleep 2; +if ($x == 2) {print "ok 1\n";} else {print "not ok 1\n";} diff --git a/t/op.split b/t/op.split new file mode 100644 index 0000000000..988af49d3d --- /dev/null +++ b/t/op.split @@ -0,0 +1,24 @@ +#!./perl + +# $Header: op.split,v 1.0 87/12/18 13:14:20 root Exp $ + +print "1..4\n"; + +$FS = ':'; + +$_ = 'a:b:c'; + +($a,$b,$c) = split($FS,$_); + +if (join(';',$a,$b,$c) eq 'a;b;c') {print "ok 1\n";} else {print "not ok 1\n";} + +@ary = split(/:b:/); +if (join("$_",@ary) eq 'aa:b:cc') {print "ok 2\n";} else {print "not ok 2\n";} + +$_ = "abc\n"; +@ary = split(//); +if (join(".",@ary) eq "a.b.c.\n") {print "ok 3\n";} else {print "not ok 3\n";} + +$_ = "a:b:c::::"; +@ary = split(/:/); +if (join(".",@ary) eq "a.b.c") {print "ok 4\n";} else {print "not ok 4\n";} diff --git a/t/op.sprintf b/t/op.sprintf new file mode 100644 index 0000000000..cb4e5c7b3a --- /dev/null +++ b/t/op.sprintf @@ -0,0 +1,8 @@ +#!./perl + +# $Header: op.sprintf,v 1.0 87/12/18 13:14:24 root Exp $ + +print "1..1\n"; + +$x = sprintf("%3s %-4s foo %5d%c%3.1f","hi",123,456,65,3.0999); +if ($x eq ' hi 123 foo 456A3.1') {print "ok 1\n";} else {print "not ok 1\n";} diff --git a/t/op.stat b/t/op.stat new file mode 100644 index 0000000000..c087c2484e --- /dev/null +++ b/t/op.stat @@ -0,0 +1,29 @@ +#!./perl + +# $Header: op.stat,v 1.0 87/12/18 13:14:27 root Exp $ + +print "1..4\n"; + +open(foo, ">Op.stat.tmp"); + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat(foo); +if ($nlink == 1) {print "ok 1\n";} else {print "not ok 1\n";} +if ($mtime && $mtime == $ctime) {print "ok 2\n";} else {print "not ok 2\n";} + +print foo "Now is the time for all good men to come to.\n"; +close(foo); + +$base = time; +while (time == $base) {} + +`rm -f Op.stat.tmp2; ln Op.stat.tmp Op.stat.tmp2; chmod 644 Op.stat.tmp`; + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, + $blksize,$blocks) = stat('Op.stat.tmp'); + +if ($nlink == 2) {print "ok 3\n";} else {print "not ok 3\n";} +if ($mtime && $mtime != $ctime) {print "ok 4\n";} else {print "not ok 4\n";} +print "#4 :$mtime: != :$ctime:\n"; + +`rm -f Op.stat.tmp Op.stat.tmp2`; diff --git a/t/op.subst b/t/op.subst new file mode 100644 index 0000000000..e431be8cec --- /dev/null +++ b/t/op.subst @@ -0,0 +1,38 @@ +#!./perl + +# $Header: op.subst,v 1.0 87/12/18 13:14:30 root Exp $ + +print "1..7\n"; + +$x = 'foo'; +$_ = "x"; +s/x/\$x/; +print "#1\t:$_: eq :\$x:\n"; +if ($_ eq '$x') {print "ok 1\n";} else {print "not ok 1\n";} + +$_ = "x"; +s/x/$x/; +print "#2\t:$_: eq :foo:\n"; +if ($_ eq 'foo') {print "ok 2\n";} else {print "not ok 2\n";} + +$_ = "x"; +s/x/\$x $x/; +print "#3\t:$_: eq :\$x foo:\n"; +if ($_ eq '$x foo') {print "ok 3\n";} else {print "not ok 3\n";} + +$a = 'abcdef'; +$b = 'cd'; +$a =~ s'(b${b}e)'\n$1'; +print "#4\t:$1: eq :bcde:\n"; +print "#4\t:$a: eq :a\\n\$1f:\n"; +if ($1 eq 'bcde' && $a eq 'a\n$1f') {print "ok 4\n";} else {print "not ok 4\n";} + +$a = 'abacada'; +if (($a =~ s/a/x/g) == 4 && $a eq 'xbxcxdx') + {print "ok 5\n";} else {print "not ok 5\n";} + +if (($a =~ s/a/y/g) == 0 && $a eq 'xbxcxdx') + {print "ok 6\n";} else {print "not ok 6\n";} + +if (($a =~ s/b/y/g) == 1 && $a eq 'xyxcxdx') + {print "ok 7\n";} else {print "not ok 7\n";} diff --git a/t/op.time b/t/op.time new file mode 100644 index 0000000000..1d92bac50f --- /dev/null +++ b/t/op.time @@ -0,0 +1,43 @@ +#!./perl + +# $Header: op.time,v 1.0 87/12/18 13:14:33 root Exp $ + +print "1..5\n"; + +($beguser,$begsys) = times; + +$beg = time; + +while (($now = time) == $beg) {} + +if ($now > $beg && $now - $beg < 10){print "ok 1\n";} else {print "not ok 1\n";} + +for ($i = 0; $i < 100000; $i++) { + ($nowuser, $nowsys) = times; + $i = 200000 if $nowuser > $beguser && $nowsys > $begsys; + last if time - $beg > 20; +} + +if ($i >= 200000) {print "ok 2\n";} else {print "not ok 2\n";} + +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($beg); +($xsec,$foo) = localtime($now); +$localyday = $yday; + +if ($sec != $xsec && $yday && $wday && $year) + {print "ok 3\n";} +else + {print "not ok 3\n";} + +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($beg); +($xsec,$foo) = localtime($now); + +if ($sec != $xsec && $yday && $wday && $year) + {print "ok 4\n";} +else + {print "not ok 4\n";} + +if (index(" :0:1:-1:365:366:-365:-366:",':' . ($localyday - $yday) . ':') > 0) + {print "ok 5\n";} +else + {print "not ok 5\n";} diff --git a/t/op.unshift b/t/op.unshift new file mode 100644 index 0000000000..3008da5de9 --- /dev/null +++ b/t/op.unshift @@ -0,0 +1,14 @@ +#!./perl + +# $Header: op.unshift,v 1.0 87/12/18 13:14:37 root Exp $ + +print "1..2\n"; + +@a = (1,2,3); +$cnt1 = unshift(a,0); + +if (join(' ',@a) eq '0 1 2 3') {print "ok 1\n";} else {print "not ok 1\n";} +$cnt2 = unshift(a,3,2,1); +if (join(' ',@a) eq '3 2 1 0 1 2 3') {print "ok 2\n";} else {print "not ok 2\n";} + + |