# Tests for PerlIO::via::xz
use 5.12.0;
use warnings;
use Test::More;
use File::Copy;
use_ok ("PerlIO::via::xz");
my $txz = "test.xz"; END { unlink $txz }
my %txt;
my %xz;
for my $type (qw( plain banner )) {
local $/;
open my $fh, "<", "files/$type.txt" or die "$type.txt: $!\n";
$txt{$type} = <$fh>;
close $fh;
open $fh, "<", "files/$type.xz" or die "$type.xz: $!\n";
$xz{$type} = <$fh>;
close $fh;
}
# Check defaults
#cmp_ok(PerlIO::via::xz->level, "==", 1, "default worklevel");
my $fh;
# Opening/closing
ok ( open ($fh, "<:via(xz)", "files/plain.xz"), "open for read
+ing");
ok ( close ($fh), "close file");
ok (!open ($fh, "+<:via(xz)", "files/plain.xz"), "read+write is
+ impossible");
ok ( open ($fh, ">:via(xz)", $txz), "open for writ
+e");
ok ( close ($fh), "close file");
ok (!open ($fh, "+>:via(xz)", $txz), "write+read is
+ impossible");
ok (!open ($fh, ">>:via(xz)", $txz), "append is not
+ supported");
foreach my $rs ("\xff\xfe\xff\xfe" x 16, undef) {
local $/ = $rs;
# Decompression
for my $type (qw( plain banner )) {
ok (open (my $fz, "<:via(xz)", "files/$type.xz"), "Open $type"
+);
is (scalar <$fz>, $txt{$type}, "$type decompression");
}
# Compression
for my $type (qw( plain banner )) {
my $fh;
ok (open ($fh, ">:via(xz)", $txz), "Open $type compress");
ok ((print { $fh } $txt{$type}), "Write");
ok (close ($fh), "Close");
}
# Roundtrip
for my $type (qw( plain banner )) {
my $fh;
ok (open ($fh, ">:via(xz)", $txz), "Open $type compress");
ok ((print { $fh } $txt{$type}), "Write");
ok (close ($fh), "Close");
ok (open ($fh, "<:via(xz)", $txz), "Open $type uncompress");
is (scalar <$fh>, $txt{$type}, "Compare");
}
}
done_testing;