Add a test for PerlIO.
Jarkko Hietaniemi [Mon, 28 May 2001 15:03:35 +0000 (15:03 +0000)]
(I probably got the crlf/raw thing wrong for clrfy platforms...)

p4raw-id: //depot/perl@10247

MANIFEST
lib/PerlIO.pm
t/lib/perlio.t [new file with mode: 0644]

index 226a312..bef35c7 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1586,6 +1586,7 @@ t/lib/open3.t             See if IPC::Open3 works
 t/lib/ops.t            See if Opcode works
 t/lib/parsewords.t     See if Text::ParseWords works
 t/lib/peek.t           See if Devel::Peek works
+t/lib/perlio.t         See if PerlIO works
 t/lib/ph.t             See if h2ph works
 t/lib/posix.t          See if POSIX works
 t/lib/safe1.t          See if Safe works
index 148a5a8..d52d58b 100644 (file)
@@ -39,8 +39,8 @@ PerlIO - On demand loader for PerlIO layers and root of PerlIO::* name space
 
 =head1 DESCRIPTION
 
-When an undefined layer 'foo' is encountered in an C<open> or C<binmode> layer
-specification then C code performs the equivalent of:
+When an undefined layer 'foo' is encountered in an C<open> or
+C<binmode> layer specification then C code performs the equivalent of:
 
   use PerlIO 'foo';
 
@@ -99,7 +99,7 @@ and then read it back in.
 =item raw
 
 A pseudo-layer which performs two functions (which is messy, but
-necessary to maintain compatibility with non-PerlIO builds of perl
+necessary to maintain compatibility with non-PerlIO builds of Perl
 and their way things have been documented elsewhere).
 
 Firstly it forces the file handle to be considered binary at that
@@ -118,8 +118,8 @@ which would interfere with binary nature of the stream.
 
 =head2 Defaults and how to override them
 
-If the platform is MS-DOS like and normally does CRLF to "\n" translation
-for text files then the default layers are :
+If the platform is MS-DOS like and normally does CRLF to "\n"
+translation for text files then the default layers are :
 
   unix crlf
 
diff --git a/t/lib/perlio.t b/t/lib/perlio.t
new file mode 100644 (file)
index 0000000..d71ab8e
--- /dev/null
@@ -0,0 +1,90 @@
+BEGIN {
+       chdir 't' if -d 't';
+       @INC = '../lib';
+       require Config; import Config;
+       if ($Config{'extensions'} !~ /\bPerlIO\b/) {
+           print "1..0 # Skip: PerlIO was not built\n";
+           exit 0;
+       }
+}
+
+use PerlIO;
+
+print "1..19\n";
+
+print "ok 1\n";
+
+my $txt = "txt$$";
+my $bin = "bin$$";
+my $utf = "utf$$";
+
+my $txtfh;
+my $binfh;
+my $utffh;
+
+print "not " unless open($txtfh, ">:crlf", $txt);
+print "ok 2\n";
+
+print "not " unless open($binfh, ">:raw",  $bin);
+print "ok 3\n";
+
+print "not " unless open($utffh, ">:utf8", $utf);
+print "ok 4\n";
+
+print $txtfh "foo\n";
+print $txtfh "bar\n";
+print "not " unless close($txtfh);
+print "ok 5\n";
+
+print $binfh "foo\n";
+print $binfh "bar\n";
+print "not " unless close($binfh);
+print "ok 6\n";
+
+print $utffh "foo\x{ff}\n";
+print $utffh "bar\x{abcd}\n";
+print "not " unless close($utffh);
+print "ok 7\n";
+
+print "not " unless open($txtfh, "<:crlf", $txt);
+print "ok 8\n";
+
+print "not " unless open($binfh, "<:raw",  $bin);
+print "ok 9\n";
+
+print "not " unless open($utffh, "<:utf8", $utf);
+print "ok 10\n";
+
+print "not " unless <$txtfh> eq "foo\n" && <$txtfh> eq "bar\n";
+print "ok 11\n";
+
+print "not " unless <$binfh> eq "foo\n" && <$binfh> eq "bar\n";
+print "ok 12\n";
+
+print "not " unless <$utffh> eq "foo\x{ff}\n" && <$utffh> eq "bar\x{abcd}\n";
+print "ok 13\n";
+
+print "not " unless eof($txtfh);
+print "ok 14\n";
+
+print "not " unless eof($binfh);
+print "ok 15\n";
+
+print "not " unless eof($utffh);
+print "ok 16\n";
+
+print "not " unless close($txtfh);
+print "ok 17\n";
+
+print "not " unless close($binfh);
+print "ok 18\n";
+
+print "not " unless close($utffh);
+print "ok 19\n";
+
+END {
+    1 while unlink $txt;
+    1 while unlink $bin;
+    1 while unlink $utf;
+}
+