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