xref: /openbsd-src/gnu/usr.bin/perl/cpan/Digest/t/file.t (revision eac174f2741a08d8deb8aae59a7f778ef9b5d770)
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