package org.bouncycastle.pqc.math.ntru.util.test;
import java.security.SecureRandom;
import java.util.Random;
import junit.framework.TestCase;
import org.bouncycastle.pqc.math.ntru.polynomial.DenseTernaryPolynomial;
import org.bouncycastle.pqc.math.ntru.polynomial.test.PolynomialGenerator;
import org.bouncycastle.pqc.math.ntru.util.ArrayEncoder;
import org.bouncycastle.util.Arrays;
public class ArrayEncoderTest
extends TestCase
{
public void testEncodeDecodeModQ()
{
int[] coeffs = PolynomialGenerator.generateRandom(1000, 2048).coeffs;
byte[] data = ArrayEncoder.encodeModQ(coeffs, 2048);
int[] coeffs2 = ArrayEncoder.decodeModQ(data, 1000, 2048);
assertTrue(Arrays.areEqual(coeffs, coeffs2));
}
public void testEncodeDecodeMod3Sves()
{
Random rng = new Random();
byte[] data = new byte[180];
rng.nextBytes(data);
int[] coeffs = ArrayEncoder.decodeMod3Sves(data, 960);
byte[] data2 = ArrayEncoder.encodeMod3Sves(coeffs);
assertTrue(Arrays.areEqual(data, data2));
}
public void testEncodeDecodeMod3Tight()
{
SecureRandom random = new SecureRandom();
int[] coeffs = DenseTernaryPolynomial.generateRandom(1000, random).coeffs;
byte[] data = ArrayEncoder.encodeMod3Tight(coeffs);
int[] coeffs2 = ArrayEncoder.decodeMod3Tight(data, 1000);
assertTrue(Arrays.areEqual(coeffs, coeffs2));
}
}