Compress-PPMd

 view release on metacpan or  search on metacpan

PPMd.pm  view on Meta::CPAN


=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,

t/2_die.t  view on Meta::CPAN

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 )