package edu.cmu.sv.arinc838.reader; import static org.testng.Assert.assertEquals; import static org.testng.AssertJUnit.assertTrue; import java.util.ArrayList; import org.testng.annotations.Test; import edu.cmu.sv.arinc838.dao.FileDefinitionDao; import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao; import edu.cmu.sv.arinc838.dao.TargetHardwareDefinitionDao; import edu.cmu.sv.arinc838.validation.ReferenceData; public class BdfReaderTest { @Test public void testRead() throws Exception { BdfReader reader = new BdfReader(); ArrayList<Exception> errorList = new ArrayList<Exception>(); SoftwareDefinitionFileDao sdfDao = reader.read( "src/test/resources/ACM47-1234-5678/ACM4712345678.BDF", errorList); assertEquals(errorList.size(), 0, "Unexpected errors during read"); assertEquals(sdfDao.getFileFormatVersion(), ReferenceData.SDF_TEST_FILE.getFileFormatVersion()); assertEquals(sdfDao.getSoftwareDescription().getSoftwarePartnumber(), ReferenceData.SDF_TEST_FILE.getSoftwareDescription() .getSoftwarePartnumber()); assertEquals(sdfDao.getSoftwareDescription() .getSoftwareTypeDescription(), ReferenceData.SDF_TEST_FILE .getSoftwareDescription().getSoftwareTypeDescription()); assertEquals(sdfDao.getSoftwareDescription().getSoftwareTypeId(), ReferenceData.SDF_TEST_FILE.getSoftwareDescription() .getSoftwareTypeId()); for (int i = 0; i < ReferenceData.SDF_TEST_FILE .getTargetHardwareDefinitions().size(); i++) { TargetHardwareDefinitionDao actual = sdfDao .getTargetHardwareDefinitions().get(i); TargetHardwareDefinitionDao expected = ReferenceData.SDF_TEST_FILE .getTargetHardwareDefinitions().get(i); assertEquals(actual.getThwId(), expected.getThwId()); for (int j = 0; j < expected.getPositions().size(); j++) { String actPos = actual.getPositions().get(j); String expPos = expected.getPositions().get(j); assertEquals(actPos, expPos); } } for (int i = 0; i < ReferenceData.SDF_TEST_FILE.getFileDefinitions() .size(); i++) { FileDefinitionDao actual = sdfDao.getFileDefinitions().get(i); FileDefinitionDao expected = ReferenceData.SDF_TEST_FILE .getFileDefinitions().get(i); assertEquals(actual.getFileName(), expected.getFileName()); assertEquals(actual.getFileSize(), expected.getFileSize()); assertEquals( actual.getFileIntegrityDefinition().getIntegrityType(), expected.getFileIntegrityDefinition().getIntegrityType()); assertEquals(actual.getFileIntegrityDefinition() .getIntegrityValue(), expected.getFileIntegrityDefinition() .getIntegrityValue()); } assertEquals(sdfDao.getSdfIntegrityDefinition().getIntegrityType(), ReferenceData.SDF_TEST_FILE.getSdfIntegrityDefinition() .getIntegrityType()); assertEquals(sdfDao.getSdfIntegrityDefinition().getIntegrityValue(), ReferenceData.SDF_TEST_FILE.getSdfIntegrityDefinition() .getIntegrityValue()); assertEquals(sdfDao.getLspIntegrityDefinition().getIntegrityType(), ReferenceData.SDF_TEST_FILE.getLspIntegrityDefinition() .getIntegrityType()); assertEquals(sdfDao.getLspIntegrityDefinition().getIntegrityValue(), ReferenceData.SDF_TEST_FILE.getLspIntegrityDefinition() .getIntegrityValue()); } @Test public void testReadErrors() throws Exception { BdfReader reader = new BdfReader(); ArrayList<Exception> errorList = new ArrayList<Exception>(); reader.read( "src/test/resources/error/ACM4712345678.BDF", errorList); assertEquals(errorList.size(), 6, // 6 = 1 Part number + 1 part number characters don't match + LSP CRC + SDF CRC + 2x FileDefinition CRC "Did not get expected number of errors"); } @Test public void testSetsPath(){ BdfReader reader = new BdfReader(); ArrayList<Exception> errorList = new ArrayList<Exception>(); SoftwareDefinitionFileDao sdfDao = reader.read( "src/test/resources/ACM47-1234-5678/ACM4712345678.BDF", errorList); assertTrue(sdfDao.getPath().endsWith("ACM47-1234-5678")); } }