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