Upgrade to Digest-SHA-5.47
[p5sagit/p5-mst-13.2.git] / ext / Digest / SHA / t / bitbuf.t
CommitLineData
747da336 1use strict;
2
3my $MODULE;
4
5BEGIN {
4eb6bdb8 6 $MODULE = ($ENV{PERL_CORE} || -d "src") ? "Digest::SHA" : "Digest::SHA::PurePerl";
747da336 7 eval "require $MODULE" || die $@;
8 $MODULE->import(qw());
9}
10
11BEGIN {
12 if ($ENV{PERL_CORE}) {
13 chdir 't' if -d 't';
14 @INC = '../lib';
15 }
16}
17
18my $numtests = 4;
19print "1..$numtests\n";
20
21 # Here's the bitstring to test against, and its SHA-1 digest
22
23my $ONEBITS = pack("B*", "1" x 80000);
24my $digest = "11003389959355c2773af6b0f36d842fe430ec49";
25
26my $state = $MODULE->new("sHa1");
27my $testnum = 1;
28
29$state->add_bits($ONEBITS, 80000);
30print "not " unless $state->hexdigest eq $digest;
31print "ok ", $testnum++, "\n";
32
33 # buffer using a series of increasingly large bitstrings
34
35# Note that (1 + 2 + ... + 399) + 200 = 80000
36
37for (1 .. 399) {
38 $state->add_bits($ONEBITS, $_);
39}
40$state->add_bits($ONEBITS, 200);
41
42print "not " unless $state->hexdigest eq $digest;
43print "ok ", $testnum++, "\n";
44
45 # create a buffer-alignment nuisance
46
47$state = $MODULE->new("1");
48
49$state->add_bits($ONEBITS, 1);
50for (1 .. 99) {
51 $state->add_bits($ONEBITS, 800);
52}
53$state->add_bits($ONEBITS, 799);
54
55print "not " unless $state->hexdigest eq $digest;
56print "ok ", $testnum++, "\n";
57
58 # buffer randomly-sized bitstrings
59
60my $reps = 80000;
61my $maxbits = 8 * 127;
62
63$state = $MODULE->new(1);
64
65while ($reps > $maxbits) {
66 my $num = int(rand($maxbits));
67 $state->add_bits($ONEBITS, $num);
68 $reps -= $num;
69}
70$state->add_bits($ONEBITS, $reps);
71
72print "not " unless $state->hexdigest eq $digest;
73print "ok ", $testnum++, "\n";