meerkat-java/destributed-key-generation/src/test/java/FeldmanVerifiableSecretSharing/ShamirSecretSharing/PolynomialTests/InterpolationTest.java

61 lines
1.8 KiB
Java
Raw Normal View History

2016-01-29 15:08:13 -05:00
package FeldmanVerifiableSecretSharing.ShamirSecretSharing.PolynomialTests;
2016-01-27 18:47:07 -05:00
2016-01-29 15:08:13 -05:00
import FeldmanVerifiableSecretSharing.ShamirSecretSharing.Polynomial;
2016-01-27 18:47:07 -05:00
import org.junit.Before;
import org.junit.Test;
import java.math.BigInteger;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
/**
* Created by Tzlil on 1/27/2016.
*/
public class InterpolationTest {
Polynomial[] polynomials;
int tests = 1 << 10;
int maxDegree = 15;
int bits = 128;
Random random;
Polynomial.Point[][] pointsArrays;
@Before
public void settings(){
random = new Random();
polynomials = new Polynomial[tests];
pointsArrays = new Polynomial.Point[tests][];
for (int i = 0; i < polynomials.length; i++){
polynomials[i] = Utils.generateRandomPolynomial(random.nextInt(maxDegree),bits,random);
pointsArrays[i] = randomPoints(polynomials[i]);
}
}
public Polynomial.Point[] randomPoints(Polynomial p){
Polynomial.Point[] points = new Polynomial.Point[p.getDegree() + 1];
BigInteger x;
Set<BigInteger> set = new HashSet();
for (int i = 0; i < points.length; i++){
x = new BigInteger(bits,random);
if(set.contains(x)){
i--;
continue;
}
set.add(x);
2016-01-28 06:57:47 -05:00
points[i] = new Polynomial.Point(x,p);
2016-01-27 18:47:07 -05:00
}
return points;
}
2016-01-29 15:08:13 -05:00
public void oneTest(Polynomial p, Polynomial.Point[] points) throws Exception {
2016-01-27 18:47:07 -05:00
Polynomial interpolation = Polynomial.interpolation(points);
2016-01-28 06:57:47 -05:00
assert (p.compareTo(interpolation) == 0);
2016-01-27 18:47:07 -05:00
}
@Test
2016-01-29 15:08:13 -05:00
public void interpolationTest() throws Exception {
2016-01-27 18:47:07 -05:00
for (int i = 0; i < polynomials.length; i ++){
oneTest(polynomials[i],pointsArrays[i]);
}
}
}