print "1..7\n";
use strict;
use Digest::MD2 qw(md2 md2_hex);
my $testno = 0;
# From RFC 1319
my $TESTS = <<'EOT';
MD2 ("") = 8350e5a3e24c153df2275c9f80692773
MD2 ("a") = 32ec01ec4a6dac72c0ab96fb34c0b5d1
MD2 ("abc") = da853b0d3f88d99b30283a69e6ded6bb
MD2 ("message digest") = ab4f496bfb2a530b219ff33031fe06b0
MD2 ("abcdefghijklmnopqrstuvwxyz") = 4e8ddff3650292ab5a4108c3aa47940b
MD2 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = da33def2a42df13975352846c30338cd
MD2 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = d5976f79d83d3a0dc9806c3c66f3efd8
EOT
for (split(/^/, $TESTS)) {
die unless /^MD2\s*\(\"([^\"]*)\"\)\s*=\s*(.*)/;
my $message = $1;
my $hexdigest = $2;
my $bindigest = pack("H*", $hexdigest);
my $failed;
$failed++ unless md2($message) eq $bindigest;
$failed++ unless md2_hex($message) eq $hexdigest;
# Test OO interface
$failed++ unless Digest::MD2->new->add($message)->digest eq $bindigest;
$failed++ unless Digest::MD2->new->add($message)->hexdigest eq $hexdigest;
print "not " if $failed;
print "ok ", ++$testno, "\n";
}