Algorithm-GDiffDelta
view release on metacpan or search on metacpan
t/10adler32.t view on Meta::CPAN
# Test the adler32 implementation I stole from libxdiff.
use strict;
use warnings;
use Test::More;
use Algorithm::GDiffDelta qw( gdiff_adler32 );
# Skip all tests if we haven't got an implementation to compare against.
eval { require Digest::Adler32 };
if ($@) {
plan skip_all => 'need Digest::Adler32 installed for this';
}
else {
plan tests => 5;
}
is(gdiff_adler32(1, ''), 1, 'empty string leaves checksum unchanged');
test_adler('x');
test_adler('foo');
test_adler("\x00");
test_adler("\xFF");
# Test with the given string and compare against Digest::Adler32, and
# also test with the string repeated various numbers of times, both
# by generating one big string and by calling gdiff_adler32() repeatedly.
sub test_adler
{
my ($s) = @_;
my $digest = Digest::Adler32->new;
my $adler = 1;
for (1 .. 1024) {
$digest->add($s);
my $expected = unpack('N', $digest->clone->digest);
$adler = gdiff_adler32($adler, $s);
if ($adler != $expected || gdiff_adler32(1, $s x $_) != $expected) {
fail('comparison against Digest::Adler32');
return;
}
}
pass('comparison against Digest::Adler32');
}
# vim:ft=perl ts=4 sw=4 expandtab:
( run in 0.823 second using v1.01-cache-2.11-cpan-5b529ec07f3 )