1b39c5158Smillert#!perl -w 2b39c5158Smillert 3*eac174f2Safresh1use strict; 4*eac174f2Safresh1use warnings; 5*eac174f2Safresh1 67469d825Srpointeluse Test::More tests => 5; 7b39c5158Smillert 8*eac174f2Safresh1use File::Temp 'tempfile'; 9*eac174f2Safresh1 10b39c5158Smillert{ 11*eac174f2Safresh1 12b39c5158Smillert package Digest::Foo; 13*eac174f2Safresh1 $INC{'Digest/Foo.pm'} = "local"; 14b39c5158Smillert require Digest::base; 15*eac174f2Safresh1 our @ISA = qw(Digest::base); 16b39c5158Smillert 17b39c5158Smillert sub new { 18b39c5158Smillert my $class = shift; 19b39c5158Smillert my $str = ""; 20b39c5158Smillert bless \$str, $class; 21b39c5158Smillert } 22b39c5158Smillert 23b39c5158Smillert sub add { 24b39c5158Smillert my $self = shift; 25b39c5158Smillert $$self .= join( "", @_ ); 26b39c5158Smillert return $self; 27b39c5158Smillert } 28b39c5158Smillert 29b39c5158Smillert sub digest { 30b39c5158Smillert my $self = shift; 31b39c5158Smillert return sprintf "%04d", length($$self); 32b39c5158Smillert } 33b39c5158Smillert} 34b39c5158Smillert 35b39c5158Smillertuse Digest::file qw(digest_file digest_file_hex digest_file_base64); 36b39c5158Smillert 37*eac174f2Safresh1{ 38*eac174f2Safresh1 my ( $fh, $file ) = tempfile( UNLINK => 1 ); 39*eac174f2Safresh1 binmode($fh); 40*eac174f2Safresh1 print $fh "foo\0\n"; 41*eac174f2Safresh1 close($fh) || die "Can't write '$file': $!"; 42b39c5158Smillert 437469d825Srpointel is( digest_file( $file, "Foo" ), "0005" ); 44b39c5158Smillert 45b39c5158Smillert if ( ord('A') == 193 ) { # EBCDIC. 467469d825Srpointel is( digest_file_hex( $file, "Foo" ), "f0f0f0f5" ); 477469d825Srpointel is( digest_file_base64( $file, "Foo" ), "8PDw9Q" ); 48*eac174f2Safresh1 } 49*eac174f2Safresh1 else { 507469d825Srpointel is( digest_file_hex( $file, "Foo" ), "30303035" ); 517469d825Srpointel is( digest_file_base64( $file, "Foo" ), "MDAwNQ" ); 52b39c5158Smillert } 53*eac174f2Safresh1} 54b39c5158Smillert 557469d825Srpointelok !eval { digest_file( "not-there.txt", "Foo" ) }; 567469d825Srpointelok $@; 57