package edu.cmu.sv.arinc838.validation;
import static org.testng.Assert.assertEquals;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigInteger;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import edu.cmu.sv.arinc838.util.Converter;
public class CrcValidatorTest {
private static final int CRC16 = 0x1DA3;
private static final long CRC32 = 0x322AB4A6;
private static final BigInteger CRC64 = new BigInteger(
Converter.hexToBytes("034528B5989BED4D"));
private File crcTestFile = new File("src/test/resources/crc_test_files",
"CRC_T02A.rom");
private byte[] crcData;
@BeforeTest
public void setUp() throws IOException {
DataInputStream dis = new DataInputStream(new FileInputStream(
crcTestFile));
crcData = new byte[(int) crcTestFile.length()];
int bytesRead = dis.read(crcData);
assertEquals((int) crcTestFile.length(), bytesRead,
"Did not read file " + crcTestFile + " correctly.");
dis.close();
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testValidateCrc16NullData() {
CrcValidator.validateCrc16(-1, null);
}
@Test
public void testValidateCrc16() {
assertEquals(CrcValidator.validateCrc16(CRC16, crcData), CRC16, "CRC 16 did not validate");
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testValidateCrc32NullData() {
CrcValidator.validateCrc32(-1, null);
}
@Test
public void testValidateCrc32() {
assertEquals(CrcValidator.validateCrc32(CRC32, crcData), CRC32, "CRC 32 did not validate");
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testValidateCrc64NullData() {
CrcValidator.validateCrc64(-1, null);
}
@Test
public void testValidateCrc64() {
assertEquals(CrcValidator.validateCrc64(CRC64.longValue(), crcData), CRC64.longValue(), "CRC 64 did not validate");
}
}