Skip to content

Commit

Permalink
finish all but the hardest builder test, all DAO accessors should be …
Browse files Browse the repository at this point in the history
…tested now [23650083]
  • Loading branch information
rdn committed Mar 28, 2012
1 parent 4c8c2cc commit ed75a40
Show file tree
Hide file tree
Showing 8 changed files with 423 additions and 173 deletions.
Expand Up @@ -10,19 +10,16 @@
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;
import edu.cmu.sv.arinc838.dao.TargetHardwareDefinitionDao;
import edu.cmu.sv.arinc838.util.Converter;
import edu.cmu.sv.arinc838.validation.DataValidator;

public class SoftwareDefinitionFileBuilder implements Builder<SoftwareDefinitionFileDao, SdfFile> {
@SuppressWarnings("unchecked")
@Override
public SdfFile buildXml(SoftwareDefinitionFileDao softwareDefinitionFileDao) {
SdfFile file = new SdfFile();
file.setFileFormatVersion(softwareDefinitionFileDao.getFileFormatVersion());

// we have to re-validate this as a LIST1 since it can be modified
// without a set method to verify its validity prior to building
List<FileDefinitionDao> fileDefsValidated = (List<FileDefinitionDao>) DataValidator
.validateList1(softwareDefinitionFileDao.getFileDefinitions());
List<FileDefinitionDao> fileDefsValidated = softwareDefinitionFileDao.getFileDefinitions();
FileDefinitionBuilder fileDefBuilder = new FileDefinitionBuilder();
for (FileDefinitionDao fileDef : fileDefsValidated) {
file.getFileDefinitions().add(fileDefBuilder.buildXml(fileDef));
Expand Down Expand Up @@ -63,7 +60,8 @@ public int buildBinary(SoftwareDefinitionFileDao softwareDefinitionFileDao, BdfF
if (size > 0) {
softwareDefinitionFileDao.getTargetHardwareDefinitions().get(size - 1).setIsLast(true);
for (int i = 0; i < size; i++) {
targetHardwareDefinitionBuilder.buildBinary(softwareDefinitionFileDao.getTargetHardwareDefinitions().get(i), file);
targetHardwareDefinitionBuilder.buildBinary(softwareDefinitionFileDao.getTargetHardwareDefinitions()
.get(i), file);
}
}

Expand All @@ -77,18 +75,16 @@ public int buildBinary(SoftwareDefinitionFileDao softwareDefinitionFileDao, BdfF
fileDefBuilder.buildBinary(softwareDefinitionFileDao.getFileDefinitions().get(i), file);
}

IntegrityDefinitionBuilder integDefBuilder = new IntegrityDefinitionBuilder();
IntegrityDefinitionBuilder integDefBuilder = new IntegrityDefinitionBuilder();

// write the SDF integrity def
file.writeSdfIntegrityDefinitionPointer();
softwareDefinitionFileDao.getSdfIntegrityDefinition().setIntegrityValue(
Converter.hexToBytes("0000000A"));
softwareDefinitionFileDao.getSdfIntegrityDefinition().setIntegrityValue(Converter.hexToBytes("0000000A"));
integDefBuilder.buildBinary(softwareDefinitionFileDao.getSdfIntegrityDefinition(), file);

// write the LSP integrity def
file.writeLspIntegrityDefinitionPointer();
softwareDefinitionFileDao.getLspIntegrityDefinition().setIntegrityValue(
Converter.hexToBytes("0000000A"));
softwareDefinitionFileDao.getLspIntegrityDefinition().setIntegrityValue(Converter.hexToBytes("0000000A"));
integDefBuilder.buildBinary(softwareDefinitionFileDao.getLspIntegrityDefinition(), file);

// write the file size
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/edu/cmu/sv/arinc838/dao/FileDefinitionDao.java
Expand Up @@ -95,15 +95,15 @@ public String getFileName() {
}

public void setFileName(String fileName) {
this.fileName = DataValidator.validateStr64kXml(fileName);
this.fileName = fileName;
}

public long getFileSize() {
return fileSize;
}

public void setFileSize(long fileSize) {
this.fileSize = DataValidator.validateUint32(fileSize);
this.fileSize = fileSize;
}

public boolean isLast() {
Expand Down
Expand Up @@ -20,7 +20,6 @@

import edu.cmu.sv.arinc838.binary.BdfFile;
import edu.cmu.sv.arinc838.util.Converter;
import edu.cmu.sv.arinc838.validation.DataValidator;

public class SoftwareDefinitionFileDao {

Expand All @@ -47,14 +46,9 @@ public SoftwareDefinitionFileDao(BdfFile bdfFile) throws IOException {
this.initialize(bdfFile);
}

@SuppressWarnings("unchecked")
public void initialize(SdfFile swDefFile) {
DataValidator.validateFileFormatVersion(swDefFile.getFileFormatVersion());
List<FileDefinition> fileDefs = (List<FileDefinition>) DataValidator.validateList1(swDefFile
.getFileDefinitions());

fileDefinitions.clear();
for (FileDefinition fileDef : fileDefs) {
for (FileDefinition fileDef : swDefFile.getFileDefinitions()) {
fileDefinitions.add(new FileDefinitionDao(fileDef));
}

Expand Down
Expand Up @@ -15,7 +15,6 @@
import com.arinc.arinc838.SoftwareDescription;

import edu.cmu.sv.arinc838.binary.BdfFile;
import edu.cmu.sv.arinc838.validation.DataValidator;

public class SoftwareDescriptionDao {

Expand Down Expand Up @@ -46,24 +45,23 @@ public String getSoftwarePartnumber() {
}

public void setSoftwarePartnumber(String value) {
this.softwarePartNumber = DataValidator
.validateSoftwarePartNumber(value);
this.softwarePartNumber = value;
}

public String getSoftwareTypeDescription() {
return this.softwareTypeDescription;
}

public void setSoftwareTypeDescription(String value) {
this.softwareTypeDescription = DataValidator.validateStr64kXml(value);
this.softwareTypeDescription = value;
}

public byte[] getSoftwareTypeId() {
return this.softwareTypeId;
}

public void setSoftwareTypeId(byte[] value) {
this.softwareTypeId = DataValidator.validateHexbin32(value);
this.softwareTypeId = value;
}

@Override
Expand Down
Expand Up @@ -9,7 +9,9 @@
*/
package edu.cmu.sv.arinc838.builder;

import static org.mockito.Mockito.*;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.testng.Assert.assertEquals;

import java.io.File;
import java.io.FileNotFoundException;
Expand All @@ -18,19 +20,18 @@
import org.mockito.InOrder;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.arinc.arinc838.SoftwareDescription;

import edu.cmu.sv.arinc838.binary.BdfFile;
import edu.cmu.sv.arinc838.builder.SoftwareDescriptionDao;
import edu.cmu.sv.arinc838.dao.SoftwareDescriptionDao;
import edu.cmu.sv.arinc838.util.Converter;
import edu.cmu.sv.arinc838.validation.DataValidator;
import edu.cmu.sv.arinc838.validation.ReferenceData;
import static org.testng.Assert.*;

public class SoftwareDescriptionBuilderTest {

private SoftwareDescriptionDao first;
private SoftwareDescriptionDao second;
private SoftwareDescriptionBuilder builder;

@BeforeMethod
public void setup() {
Expand All @@ -39,118 +40,25 @@ public void setup() {
first.setSoftwareTypeDescription("description");
first.setSoftwareTypeId(Converter.hexToBytes("0000000A"));

second = new SoftwareDescriptionDao();
second.setSoftwarePartnumber(ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE);
second.setSoftwareTypeDescription("description");
second.setSoftwareTypeId(Converter.hexToBytes("0000000A"));
}

@Test
public void getSoftwarePartnumber() {
SoftwareDescription jaxbDesc = new SoftwareDescription();
jaxbDesc.setSoftwarePartnumber(ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE);
jaxbDesc.setSoftwareTypeDescription("test");
jaxbDesc.setSoftwareTypeId(new byte[] {1,2,3,4});
SoftwareDescriptionDao xmlDesc = new SoftwareDescriptionDao(
jaxbDesc);

assertEquals(jaxbDesc.getSoftwarePartnumber(),
xmlDesc.getSoftwarePartnumber());
}

@Test
public void getSoftwareTypeDescription() {
SoftwareDescription jaxbDesc = new SoftwareDescription();
jaxbDesc.setSoftwarePartnumber(ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE);
jaxbDesc.setSoftwareTypeDescription("test");
jaxbDesc.setSoftwareTypeId(new byte[] {1,2,3,4});
SoftwareDescriptionDao xmlDesc = new SoftwareDescriptionDao(
jaxbDesc);

assertEquals(jaxbDesc.getSoftwareTypeDescription(),
xmlDesc.getSoftwareTypeDescription());
}

@Test
public void getSoftwareTypeId() {
SoftwareDescription jaxbDesc = new SoftwareDescription();
jaxbDesc.setSoftwareTypeId(Converter.hexToBytes("00000007"));
jaxbDesc.setSoftwarePartnumber(ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE);
jaxbDesc.setSoftwareTypeDescription("test");
jaxbDesc.setSoftwareTypeId(new byte[] {1,2,3,4});
SoftwareDescriptionDao xmlDesc = new SoftwareDescriptionDao(
jaxbDesc);

assertEquals(jaxbDesc.getSoftwareTypeId(), xmlDesc.getSoftwareTypeId());
}

@Test
public void setSoftwarePartNumberTest() {
SoftwareDescription jaxbDesc = new SoftwareDescription();
jaxbDesc.setSoftwarePartnumber(ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE);
jaxbDesc.setSoftwareTypeDescription("test");
jaxbDesc.setSoftwareTypeId(new byte[] {1,2,3,4});
SoftwareDescriptionDao xmlDesc = new SoftwareDescriptionDao(
jaxbDesc);

String value = DataValidator
.generateSoftwarePartNumber("8GC??-0987-PLMT");

xmlDesc.setSoftwarePartnumber(value);

assertEquals(value, xmlDesc.getSoftwarePartnumber());
}

@Test
public void setSoftwareTypeDescription() {
SoftwareDescription jaxbDesc = new SoftwareDescription();
jaxbDesc.setSoftwarePartnumber(ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE);
jaxbDesc.setSoftwareTypeDescription("test");
jaxbDesc.setSoftwareTypeId(new byte[] {1,2,3,4});
SoftwareDescriptionDao xmlDesc = new SoftwareDescriptionDao(
jaxbDesc);

String value = "set test";

xmlDesc.setSoftwareTypeDescription(value);

assertEquals(value, xmlDesc.getSoftwareTypeDescription());
}

@Test
public void setSoftwareTypeId() {
SoftwareDescription jaxbDesc = new SoftwareDescription();
jaxbDesc.setSoftwarePartnumber(ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE);
jaxbDesc.setSoftwareTypeDescription("test");
jaxbDesc.setSoftwareTypeId(Converter.hexToBytes("00000007"));
SoftwareDescriptionDao xmlDesc = new SoftwareDescriptionDao(
jaxbDesc);

byte[] value = new byte[] { 1, 2, 3, 4 };

xmlDesc.setSoftwareTypeId(value);

assertEquals(value, xmlDesc.getSoftwareTypeId());
builder = new SoftwareDescriptionBuilder();
}

@Test
public void testBuildCreatesProperJaxbObject() {
SoftwareDescription desc = first.buildXml();
SoftwareDescription desc = builder.buildXml(first);

assertEquals(desc.getSoftwareTypeId(), first.getSoftwareTypeId());
assertEquals(desc.getSoftwareTypeDescription(),
first.getSoftwareTypeDescription());
assertEquals(desc.getSoftwarePartnumber(),
first.getSoftwarePartnumber());
assertEquals(desc.getSoftwareTypeDescription(), first.getSoftwareTypeDescription());
assertEquals(desc.getSoftwarePartnumber(), first.getSoftwarePartnumber());
}

@Test
public void testBuildBinary() throws FileNotFoundException, IOException
{
public void testBuildBinary() throws FileNotFoundException, IOException {
BdfFile file = new BdfFile(File.createTempFile("tmp", "bin"));
int bytesWritten = first.buildBinary(file);

// 2 + "MMMCC-SSSS-SSSS".length + 2 + "description".length + 0x0000000A length in bytes
int bytesWritten = builder.buildBinary(first, file);

// 2 + "MMMCC-SSSS-SSSS".length + 2 + "description".length + 0x0000000A
// length in bytes
// 17 + 13 + 4
assertEquals(bytesWritten, 34);
file.seek(0);
Expand All @@ -160,16 +68,16 @@ public void testBuildBinary() throws FileNotFoundException, IOException
file.read(typeId);
assertEquals(typeId, first.getSoftwareTypeId());

file.close();
}

@Test
public void testBuildBinaryWritesSoftwareTypeDescription()
throws IOException {
public void testBuildBinaryWritesSoftwareTypeDescription() throws IOException {
BdfFile file = mock(BdfFile.class);

InOrder order = inOrder(file);

first.buildBinary(file);
builder.buildBinary(first, file);

order.verify(file).writeSoftwareDescriptionPointer();
order.verify(file).writeStr64k(first.getSoftwarePartnumber());
Expand All @@ -178,41 +86,4 @@ public void testBuildBinaryWritesSoftwareTypeDescription()
order.verify(file).getFilePointer();
order.verifyNoMoreInteractions();
}

@Test
public void testCanConstructFromBinary()
throws IOException {
String partNumber = ReferenceData.SOFTWARE_PART_NUMBER_REFERENCE;
String description = "description";
byte[] typeId = Converter.hexToBytes("0000000A");

BdfFile file = new BdfFile(File.createTempFile("prefix", "suffix"));
file.writeStr64k(partNumber);
file.writeStr64k(description);
file.writeHexbin32(typeId);
file.seek(0);

SoftwareDescriptionDao desc = new SoftwareDescriptionDao(file);

assertEquals(desc.getSoftwarePartnumber(), partNumber);
assertEquals(desc.getSoftwareTypeDescription(), description);
assertEquals(desc.getSoftwareTypeId(), typeId);
}

@Test
public void testhashcode(){
assertEquals(first.hashCode(), first.getSoftwarePartnumber().hashCode());
}

@Test
public void testhashcodeWithNoPartNumber(){
SoftwareDescriptionDao desc = new SoftwareDescriptionDao();

assertEquals(desc.hashCode(), 0);
}

@Test
public void testEquals(){
assertEquals(first, second);
}
}
Expand Up @@ -66,7 +66,7 @@ public void buildBinaryIsLast() throws FileNotFoundException, IOException {
@Test
public void targetHardwareDefinitionBuilderBdfFile() throws FileNotFoundException, IOException {
BdfFile bdfFile = new BdfFile(File.createTempFile("tmpFile", ".bdf"));
int bytesWritten = new TargetHardwareDefinitionBuilder().buildBinary(thwDao, bdfFile);
new TargetHardwareDefinitionBuilder().buildBinary(thwDao, bdfFile);

bdfFile.seek(0); //return to start of file
bdfFile.readUint32(); //parent object reads the pointers
Expand Down

0 comments on commit ed75a40

Please sign in to comment.