--- /dev/null
+# -*-mode: perl; comment-column: 68-*-
+use Test;
+BEGIN { plan tests => 11; }
+use Catacomb qw(:const $random);
+
+$sec = $random->mp(256);
+$sh = Catacomb::Share::Prime->new(3);
+ok $sh->t == 3; #t 1
+ok !defined $sh->p; #t 2
+@sh = ();
+$sh->mkshares($sec);
+$p = $sh->p();
+ok defined $p; #t 3
+for (my $i = 0; $i < 5; $i++) {
+ $sh[$i] = $sh->get($i);
+}
+$sh = Catacomb::Share::Prime->new(3, $p);
+ok $sh->p == $p; #t 4
+$sh->add(2, $sh[2]);
+ok $sh->add(4, $sh[4]) == 1; #t 5
+ok $sh->i == 2; #t 6
+$sh->add(1, $sh[1]);
+$r = $sh->combine();
+ok $r == $sec; #t 7
+undef $sec;
+undef $sh;
+undef @sh;
+undef $p;
+undef $r;
+
+$sec = $random->fill(16);
+$sh = Catacomb::Share::GF->new(3, 16);
+ok $sh->t == 3; #t 8
+ok $sh->sz == 16; #t 9
+@sh = ();
+$sh->mkshares($sec);
+for (my $i = 0; $i < 5; $i++) {
+ $sh[$i] = $sh->get($i);
+}
+$sh = Catacomb::Share::GF->new(3, 16);
+$sh->add(2, $sh[2]);
+ok $sh->add(3, $sh[3]) == 1; #t 10
+$sh->add(0, $sh[0]);
+$r = $sh->combine();
+ok $r, $sec; #t 11
+undef $sec;
+undef $sh;
+undef @sh;
+undef $r;