Compress-PPMd
view release on metacpan or search on metacpan
=head1 SYNOPSIS
use Compress::PPMd;
my $encoder=Compress::PPMd::Encoder->new();
my $encoded=$encoder->encode($text);
my $encoded2=$encoder->encode($text2);
my $decoder=Compress::PPMd::Decoder->new();
my $decoded=$encoder->decode($encoded);
my $decoded2=$encoder->decode($encoded2);
=head1 ABSTRACT
This package is a Perl wrapper around Dmitry Shkarin PPMd compression
library.
PPMd produces the best compression ratios for textual data.
=head1 DESCRIPTION
t/1_quijote.t view on Meta::CPAN
BEGIN { use_ok('Compress::PPMd') };
my $in;
{ local $/; $in=<DATA> }
for my $maxorder (2..16) {
my $encoder=Compress::PPMd::Encoder->new($maxorder);
my $decoder=Compress::PPMd::Decoder->new($maxorder);
my $encoded=$encoder->encode($in);
my $decoded=$decoder->decode($encoded);
is ($decoded, $in, "encoding/decoding maxorder=$maxorder");
my $encoded2=$encoder->encode($in);
my $decoded2=$decoder->decode($encoded2);
is ($decoded2, $in, "encoding/decoding maxorder=$maxorder, solid mode");
}
__DATA__
Capítulo primero. Que trata de la condición y ejercicio del famoso hidalgo
don Quijote de la Mancha
En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho
tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua,
use Test::More tests => 4;
BEGIN { use_ok('Compress::PPMd') };
my $encoder=eval {Compress::PPMd::Encoder->new(25)};
ok($@, "die by bad encoder param");
my $decoder=eval {Compress::PPMd::Decoder->new()};
is ($@, "", "decoder allocated");
my $decoded=eval {$decoder->decode("rubish") };
ok($@, "die by bad encoded data");
t/3_rubbish.t view on Meta::CPAN
use Test::More tests => 28;
BEGIN { use_ok('Compress::PPMd') };
{
my $decoder=eval Compress::PPMd::Decoder->new();
my $rubbish=pack("C*", map { 255 } (1..100000));
my $decoded=eval {$decoder->decode($rubbish) };
ok(1, "do not crash by bad encoded data all bits 1");
}
{
my $decoder=eval Compress::PPMd::Decoder->new();
my $rubbish=pack("C*", map { 0 } (1..100000));
my $decoded=eval {$decoder->decode($rubbish) };
ok(1, "do not crash by bad encoded data all bits 0");
}
for (1..25) {
my $decoder=eval Compress::PPMd::Decoder->new();
my $rubbish=pack("C*", map { int(rand 256) } (1..100000));
my $decoded=eval {$decoder->decode($rubbish) };
ok(1, "do not crash by bad encoded data");
}
( run in 0.492 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )