xref: /openbsd-src/gnu/usr.bin/perl/cpan/Digest-MD5/t/context.t (revision cbfb56518a2f3714444b894ee431c1f30a31dcbb)
1*cbfb5651Safresh1#!/usr/bin/perl
2*cbfb5651Safresh1use strict;
3*cbfb5651Safresh1use warnings;
4*cbfb5651Safresh1
5*cbfb5651Safresh1use Test::More;
6*cbfb5651Safresh1use Digest::MD5;
7*cbfb5651Safresh1
8*cbfb5651Safresh1foreach my $string ( map { 'a' x $_ }
9*cbfb5651Safresh1    1..17,
10*cbfb5651Safresh1    31..33,
11*cbfb5651Safresh1    64..65,
12*cbfb5651Safresh1    127..129,
13*cbfb5651Safresh1    191..193,
14*cbfb5651Safresh1    1023..1025,
15*cbfb5651Safresh1    2047..2049,
16*cbfb5651Safresh1) {
17*cbfb5651Safresh1    my $expect = do {
18*cbfb5651Safresh1        my $ctx = Digest::MD5->new;
19*cbfb5651Safresh1        $ctx->add($string);
20*cbfb5651Safresh1        $ctx->add($string);
21*cbfb5651Safresh1        $ctx->add($string);
22*cbfb5651Safresh1        $ctx->hexdigest;
23*cbfb5651Safresh1    };
24*cbfb5651Safresh1
25*cbfb5651Safresh1    my $got = do {
26*cbfb5651Safresh1        my $ctx1 = Digest::MD5->new;
27*cbfb5651Safresh1        $ctx1->add($string);
28*cbfb5651Safresh1
29*cbfb5651Safresh1        my $ctx2 = Digest::MD5->new;
30*cbfb5651Safresh1        $ctx2->context( $ctx1->context );
31*cbfb5651Safresh1        $ctx2->add($string);
32*cbfb5651Safresh1
33*cbfb5651Safresh1        my $ctx3 = Digest::MD5->new;
34*cbfb5651Safresh1        $ctx3->context( $ctx2->context );
35*cbfb5651Safresh1        $ctx3->add($string);
36*cbfb5651Safresh1
37*cbfb5651Safresh1        $ctx3->hexdigest;
38*cbfb5651Safresh1    };
39*cbfb5651Safresh1
40*cbfb5651Safresh1    is $got, $expect, length($string) . " saved context";
41*cbfb5651Safresh1}
42*cbfb5651Safresh1
43*cbfb5651Safresh1done_testing;
44