The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
BEGIN {				# Magic Perl CORE pragma
    if ($ENV{PERL_CORE}) {
        chdir 't' if -d 't';
        @INC = '../lib';
    }
    unless (find PerlIO::Layer 'perlio') {
        print "1..0 # Skip: PerlIO not used\n";
        exit 0;
    }
    if (ord("A") == 193) {
        print "1..0 # Skip: EBCDIC\n";
    }
}

use strict;
use warnings;
use PerlIO::via::Rotate;

use Test::More tests => 10;

my $file= 'test.rot13';

my $decoded= <<EOD;
This is a test for rotated text that has hardly any special characters in it
but which is nonetheless an indication of the real world.

With long lines and paragraphs and all that sort of things.

And so on and so on.
-- 
And a signature
EOD

my $encoded= <<EOD;
Guvf vf n grfg sbe ebgngrq grkg gung unf uneqyl nal fcrpvny punenpgref va vg
ohg juvpu vf abarguryrff na vaqvpngvba bs gur erny jbeyq.

Jvgu ybat yvarf naq cnentencuf naq nyy gung fbeg bs guvatf.

Naq fb ba naq fb ba.
-- 
Naq n fvtangher
EOD

# Create the encoded test-file

ok(
 open( my $out, '>:via(PerlIO::via::rot13)', $file ),
 "opening '$file' for writing"
);

ok( ( print $out $decoded ),		'print to file' );
ok( close( $out ),			'closing encoding handle' );

# Check encoding without layers
{
local $/ = undef;
ok( open( my $test,$file ),		'opening without layer' );
is( readline( $test ),$encoded,		'check encoded content' );
ok( close( $test ),			'close test handle' );
}

# Check decoding _with_ layers

ok(
 open( my $in,'<:via(rot13)', $file ),
 "opening '$file' for reading"
);
is( join( '',<$in> ),$decoded,		'check decoding' );
ok( close( $in ),			'close decoding handle' );

# Remove whatever we created now

ok( unlink( $file ),			"remove test file '$file'" );
1 while unlink $file; # multiversioned filesystems