/* * Copyright (c) 2012 Chris Ellison, Mike Deats, Liron Yahdav, Ryan Neal, * Brandon Sutherlin, Scott Griffin * * This software is released under the MIT license * (http://www.opensource.org/licenses/mit-license.php) * * Created on Feb 7, 2012 */ package edu.cmu.sv.arinc838.builder; import static org.testng.Assert.*; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.arinc.arinc838.IntegrityDefinition; import edu.cmu.sv.arinc838.binary.BdfFile; import edu.cmu.sv.arinc838.dao.IntegrityDefinitionDao; import edu.cmu.sv.arinc838.dao.IntegrityDefinitionDao.IntegrityType; import edu.cmu.sv.arinc838.util.Converter; public class IntegrityDefinitionBuilderTest { private IntegrityDefinition integDef; private IntegrityDefinitionDao integDao; @BeforeMethod public void setup() { integDef = new IntegrityDefinition(); integDef.setIntegrityType(IntegrityType.CRC16.getType()); integDef.setIntegrityValue(Converter.hexToBytes("DEADBEEF")); integDao = new IntegrityDefinitionDao(integDef); } @Test public void testXmlBuilder() { IntegrityDefinitionBuilder integBuilder = new IntegrityDefinitionBuilder(); IntegrityDefinition built = integBuilder.buildXml(integDao); assertEquals(built.getIntegrityType(), integDef.getIntegrityType()); assertEquals(built.getIntegrityValue(), integDef.getIntegrityValue ()); } @Test public void buildBinaryCRC16() throws FileNotFoundException, IOException { BdfFile bdfFile = new BdfFile(File.createTempFile("tmpFile", ".bdf")); IntegrityDefinitionDao integ = new IntegrityDefinitionDao(); integ.setIntegrityType(IntegrityType.CRC16.getType()); integ.setIntegrityValue(Converter.hexToBytes("ABCD")); int bytesWritten = new IntegrityDefinitionBuilder().buildBinary(integ, bdfFile); bdfFile.seek(0); // 4 bytes integ type + 4 bytes integ value (2 bytes for length, 2 for // byte array) assertEquals(bytesWritten, 8); assertEquals(bdfFile.readUint32(), IntegrityType.CRC16.getType()); assertEquals(bdfFile.readShort(), 2); byte[] integValue = new byte[2]; bdfFile.read(integValue); assertEquals(integValue, Converter.hexToBytes("ABCD")); } @Test public void buildBinaryCRC32() throws FileNotFoundException, IOException { BdfFile bdfFile = new BdfFile(File.createTempFile("tmpFile", ".bdf")); IntegrityDefinitionDao integ = new IntegrityDefinitionDao(); integ.setIntegrityType(IntegrityType.CRC32.getType()); integ.setIntegrityValue(Converter.hexToBytes("DEADBEEF")); int bytesWritten = new IntegrityDefinitionBuilder().buildBinary(integ, bdfFile); bdfFile.seek(0); // 4 bytes integ type + 6 bytes integ value (2 bytes for length, 4 for // byte array) assertEquals(bytesWritten, 10); assertEquals(bdfFile.readUint32(), IntegrityType.CRC32.getType()); assertEquals(bdfFile.readShort(), 4); byte[] integValue = new byte[4]; bdfFile.read(integValue); assertEquals(integValue, Converter.hexToBytes("DEADBEEF")); } @Test public void buildBinaryCRC64() throws FileNotFoundException, IOException { BdfFile bdfFile = new BdfFile(File.createTempFile("tmpFile", ".bdf")); IntegrityDefinitionDao integ = new IntegrityDefinitionDao(); integ.setIntegrityType(IntegrityType.CRC64.getType()); integ.setIntegrityValue(Converter.hexToBytes("DEADBEEFDEADBEEF")); int bytesWritten = new IntegrityDefinitionBuilder().buildBinary(integ, bdfFile); bdfFile.seek(0); // 4 bytes integ type + 10 bytes integ value (2 bytes for length, 8 for // byte array) assertEquals(bytesWritten, 14); assertEquals(bdfFile.readUint32(), IntegrityType.CRC64.getType()); assertEquals(bdfFile.readShort(), 8); byte[] integValue = new byte[8]; bdfFile.read(integValue); assertEquals(integValue, Converter.hexToBytes("DEADBEEFDEADBEEF")); } @Test public void integrityDefinitionBuilderBdfFile() throws IOException { BdfFile bdfFile = new BdfFile(File.createTempFile("tmpFile", ".bdf")); IntegrityDefinitionDao integDao = new IntegrityDefinitionDao(); integDao.setIntegrityType(IntegrityType.CRC64.getType()); integDao.setIntegrityValue(Converter.hexToBytes("DEADBEEFDEADBEEF")); new IntegrityDefinitionBuilder().buildBinary(integDao, bdfFile); bdfFile.seek(0); IntegrityDefinitionDao integDefBuilder2 = new IntegrityDefinitionDao(bdfFile); assertEquals(integDefBuilder2.getIntegrityType(), integDao.getIntegrityType()); assertEquals(integDefBuilder2.getIntegrityValue(), integDao.getIntegrityValue()); } }