9 use Digest::MD5 qw(md5 md5_hex md5_base64);
12 # This is the output of: 'md5sum MD5.pm MD5.xs'
16 if (ord('A') == 193) { # EBCDIC
18 ???????????????????????????????? ext/Digest/MD5/MD5.pm
19 ???????????????????????????????? ext/Digest/MD5/MD5.xs
23 bf8c3c72d071d1c0303fc9e311820708 ext/Digest/MD5/MD5.pm
24 dc50ae0aea3182f4d5f1ec368b67918b ext/Digest/MD5/MD5.xs
29 eval { require MIME::Base64; };
32 print "# Will not test base64 methods\n";
40 for (split /^/, $EXPECT) {
41 my($md5hex, $file) = split ' ';
42 my @path = split(m:/:, $file);
44 my $path = File::Spec->updir;
46 $path = File::Spec->catdir($path, shift @path);
48 $file = File::Spec->catfile($path, $last);
49 my $md5bin = pack("H*", $md5hex);
52 $md5b64 = MIME::Base64::encode($md5bin, "");
53 chop($md5b64); chop($md5b64); # remove padding
57 if (digest_file($file, 'digest') ne $md5bin) {
58 print "$file: Bad digest\n";
62 if (digest_file($file, 'hexdigest') ne $md5hex) {
63 print "$file: Bad hexdigest\n";
67 if ($B64 && digest_file($file, 'b64digest') ne $md5b64) {
68 print "$file: Bad b64digest\n";
72 my $data = cat_file($file);
73 if (md5($data) ne $md5bin) {
74 print "$file: md5() failed\n";
77 if (md5_hex($data) ne $md5hex) {
78 print "$file: md5_hex() failed\n";
81 if ($B64 && md5_base64($data) ne $md5b64) {
82 print "$file: md5_base64() failed\n";
86 if (Digest::MD5->new->add($data)->digest ne $md5bin) {
87 print "$file: MD5->new->add(...)->digest failed\n";
90 if (Digest::MD5->new->add($data)->hexdigest ne $md5hex) {
91 print "$file: MD5->new->add(...)->hexdigest failed\n";
94 if ($B64 && Digest::MD5->new->add($data)->b64digest ne $md5b64) {
95 print "$file: MD5->new->add(...)->b64digest failed\n";
99 my @data = split //, $data;
100 if (md5(@data) ne $md5bin) {
101 print "$file: md5(\@data) failed\n";
104 if (Digest::MD5->new->add(@data)->digest ne $md5bin) {
105 print "$file: MD5->new->add(\@data)->digest failed\n";
108 my $md5 = Digest::MD5->new;
112 if ($md5->digest ne $md5bin) {
113 print "$file: $md5->add()-loop failed\n";
117 print "not " if $failed;
118 print "ok ", ++$testno, "\n";
124 my($file, $method) = @_;
125 $method ||= "digest";
126 #print "$file $method\n";
128 open(FILE, $file) or die "Can't open $file: $!";
129 # Digests above are generated on UNIX without CRLF
130 # so leave handles in text mode
132 my $digest = Digest::MD5->new->addfile(*FILE)->$method();
142 open(FILE, $file) or die "Can't open $file: $!";
143 # Digests above are generated on UNIX without CRLF
144 # so leave handles in text mode