This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix typos (spelling errors) in cpan/Params-Check/*.
[perl5.git] / cpan / Digest-SHA / t / methods.t
CommitLineData
747da336
RGS
1use strict;
2use FileHandle;
3
4my $MODULE;
5
6BEGIN {
dfe1edcb 7 $MODULE = (-d "src") ? "Digest::SHA" : "Digest::SHA::PurePerl";
747da336
RGS
8 eval "require $MODULE" || die $@;
9 $MODULE->import(qw());
10}
11
12BEGIN {
13 if ($ENV{PERL_CORE}) {
14 chdir 't' if -d 't';
15 @INC = '../lib';
16 }
17}
18
19my @out = (
20 "ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0",
21 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
22);
23
24my $numtests = 6 + scalar @out;
25print "1..$numtests\n";
26
27 # attempt to use an invalid algorithm, and check for failure
28
29my $testnum = 1;
30my $NSA = "SHA-42"; # No Such Algorithm
31print "not " if $MODULE->new($NSA);
32print "ok ", $testnum++, "\n";
33
34my $tempfile = "methods.tmp";
35END { 1 while unlink $tempfile }
36
37 # test OO methods using first two SHA-256 vectors from NIST
38
39my $fh = FileHandle->new($tempfile, "w");
40binmode($fh);
41print $fh "bcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
42$fh->close;
43
44my $sha = $MODULE->new()->reset("SHA-256")->new();
45$sha->add_bits("a", 5)->add_bits("001");
46
47my $rsp = shift(@out);
48print "not " unless $sha->clone->add("b", "c")->b64digest eq $rsp;
49print "ok ", $testnum++, "\n";
50
51$rsp = shift(@out);
52
53 # test addfile with bareword filehandle
54
55open(FILE, "<$tempfile");
56binmode(FILE);
57print "not " unless
58 $sha->clone->addfile(*FILE)->hexdigest eq $rsp;
59print "ok ", $testnum++, "\n";
60close(FILE);
61
62 # test addfile with indirect filehandle
63
64$fh = FileHandle->new($tempfile, "r");
65binmode($fh);
66print "not " unless $sha->clone->addfile($fh)->hexdigest eq $rsp;
67print "ok ", $testnum++, "\n";
68$fh->close;
69
70 # test addfile using file name instead of handle
71
72print "not " unless $sha->addfile($tempfile, "b")->hexdigest eq $rsp;
73print "ok ", $testnum++, "\n";
74
75 # test addfile portable mode
76
77$fh = FileHandle->new($tempfile, "w");
78binmode($fh);
79print $fh "abc\012" x 2048; # using UNIX newline
80$fh->close;
81
82print "not " unless $sha->new(1)->addfile($tempfile, "p")->hexdigest eq
83 "d449e19c1b0b0c191294c8dc9fa2e4a6ff77fc51";
84print "ok ", $testnum++, "\n";
85
86$fh = FileHandle->new($tempfile, "w");
87binmode($fh);
88print $fh "abc\015\012" x 2048; # using DOS/Windows newline
89$fh->close;
90
91print "not " unless $sha->new(1)->addfile($tempfile, "p")->hexdigest eq
92 "d449e19c1b0b0c191294c8dc9fa2e4a6ff77fc51";
93print "ok ", $testnum++, "\n";
94
95$fh = FileHandle->new($tempfile, "w");
96binmode($fh);
97print $fh "abc\015" x 2048; # using early-Mac newline
98$fh->close;
99
100print "not " unless $sha->new(1)->addfile($tempfile, "p")->hexdigest eq
101 "d449e19c1b0b0c191294c8dc9fa2e4a6ff77fc51";
102print "ok ", $testnum++, "\n";