package net.contrapunctus.rngzip.util;
import java.util.LinkedList;
import java.io.File;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
public class AutomatonChecksumTest
{
public static final String TEST_DIR = "tests/cases/";
@Parameterized.Parameters
public static LinkedList<Object[]> cases()
{
LinkedList<Object[]> l = new LinkedList<Object[]>();
l.add( new Object[] { 0x86e012c2L, "alt-at.rng" } );
l.add( new Object[] { 0x82600b3fL, "alt.rng" } );
l.add( new Object[] { 0x532a1ba0L, "alt02.rng" } );
// jarx01 checksum not consistent, flipped between
// b3595eb and 94f95eb. md5 sums of the schema:
// 6f20aeedfde21809be849bf4926456c1 jarx01.rnc
// 00f1fee8e6f65388704f6f1d7e6ef168 jarx01.rng
l.add( new Object[] { 0x0b3595ebL, "jarx01.rng" } );
l.add( new Object[] { 0xf39410f5L, "minimal.rng" } );
l.add( new Object[] { 0x8d3f12ddL, "opt.rng" } );
l.add( new Object[] { 0x369a0ed8L, "opt02.rng" } );
l.add( new Object[] { 0xf9050eb1L, "opt03.rng" } );
l.add( new Object[] { 0xab060cd9L, "opt04.rng" } );
return l;
}
String filename;
long sum;
public AutomatonChecksumTest(long _sum, String _filename)
{
sum = _sum;
filename = TEST_DIR + _filename;
}
@Test
public void run() throws Exception
{
BaliAutomaton ba = BaliAutomaton.fromRNG(new File(filename));
long s = ba.checksum();
assert sum == s
: "checksum mismatch: " + filename + ": "
+ Long.toString(s, 16) + " != " + Long.toString(sum, 16);
}
}