chiark / gitweb /
infra: Add a copy of the GPL.
[catacomb-perl] / t / share.t
1 # -*-mode: perl; comment-column: 68-*-
2 use Test;
3 BEGIN { plan tests => 11; }
4 use Catacomb qw(:const $random);
5
6 $sec = $random->mp(256);
7 $sh = Catacomb::Share::Prime->new(3);
8 ok $sh->t == 3;                                                     #t    1
9 ok !defined $sh->p;                                                 #t    2
10 @sh = ();
11 $sh->mkshares($sec);
12 $p = $sh->p();
13 ok defined $p;                                                      #t    3
14 for (my $i = 0; $i < 5; $i++) {
15   $sh[$i] = $sh->get($i);
16 }
17 $sh = Catacomb::Share::Prime->new(3, $p);
18 ok $sh->p == $p;                                                    #t    4
19 $sh->add(2, $sh[2]);
20 ok $sh->add(4, $sh[4]) == 1;                                        #t    5
21 ok $sh->i == 2;                                                     #t    6
22 $sh->add(1, $sh[1]);
23 $r = $sh->combine();
24 ok $r == $sec;                                                      #t    7
25 undef $sec;
26 undef $sh;
27 undef @sh;
28 undef $p;
29 undef $r;
30
31 $sec = $random->fill(16);
32 $sh = Catacomb::Share::GF->new(3, 16);
33 ok $sh->t == 3;                                                     #t    8
34 ok $sh->sz == 16;                                                   #t    9
35 @sh = ();
36 $sh->mkshares($sec);
37 for (my $i = 0; $i < 5; $i++) {
38   $sh[$i] = $sh->get($i);
39 }
40 $sh = Catacomb::Share::GF->new(3, 16);
41 $sh->add(2, $sh[2]);
42 ok $sh->add(3, $sh[3]) == 1;                                        #t   10
43 $sh->add(0, $sh[0]);
44 $r = $sh->combine();
45 ok $r, $sec;                                                        #t   11
46 undef $sec;
47 undef $sh;
48 undef @sh;
49 undef $r;