/*
* 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.dao;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertNull;
import java.util.Arrays;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.arinc.arinc838.IntegrityDefinition;
import edu.cmu.sv.arinc838.dao.IntegrityDefinitionDao.IntegrityType;
import edu.cmu.sv.arinc838.util.Converter;
public class IntegrityDefinitionDaoTest {
private IntegrityDefinition integDef;
private IntegrityDefinitionDao integDao;
@BeforeMethod
public void setup() {
integDef = new IntegrityDefinition();
integDef.setIntegrityType(IntegrityType.CRC16.getType());
integDef.setIntegrityValue(Converter.hexToBytes("DEADBEEF"));
}
@Test
public void testXmlConstructor() {
integDao = new IntegrityDefinitionDao(integDef);
assertEquals(integDef.getIntegrityType(), integDao.getIntegrityType());
assertEquals(integDef.getIntegrityValue(), integDao.getIntegrityValue());
}
@Test
public void testIntegrityTypeAccessors () {
integDao = new IntegrityDefinitionDao();
long type1 = IntegrityType.CRC16.getType();
long newType = IntegrityType.CRC64.getType();
integDef.setIntegrityType(type1);
integDao.setIntegrityType(newType);
assertNotEquals(integDef.getIntegrityType(), integDao.getIntegrityType());
integDao.setIntegrityType(integDef.getIntegrityType());
assertEquals(integDef.getIntegrityType(), integDao.getIntegrityType());
}
@Test
public void testSetIntegrityValue() {
integDao = new IntegrityDefinitionDao();
byte[] b1 = new byte[] { 0x11 };
byte[] b2 = new byte[] { 0x11, 0x12 };
integDef.setIntegrityValue(b1);
integDao.setIntegrityValue(b2);
assertNotEquals(integDef.getIntegrityValue(), integDao.getIntegrityValue());
integDao.setIntegrityValue(integDef.getIntegrityValue());
assertEquals(integDef.getIntegrityValue(), integDao.getIntegrityValue());
}
@Test
public void testIntegrityTypeEnum()
{
assertEquals(2, IntegrityDefinitionDao.IntegrityType.CRC16.getType());
assertEquals(3, IntegrityDefinitionDao.IntegrityType.CRC32.getType());
assertEquals(6, IntegrityDefinitionDao.IntegrityType.CRC64.getType());
}
@Test
public void testIntegrityTypeEnumFromLong()
{
assertEquals(IntegrityDefinitionDao.IntegrityType.CRC16, IntegrityDefinitionDao.IntegrityType.fromLong(2));
assertEquals(IntegrityDefinitionDao.IntegrityType.CRC32, IntegrityDefinitionDao.IntegrityType.fromLong(3));
assertEquals(IntegrityDefinitionDao.IntegrityType.CRC64, IntegrityDefinitionDao.IntegrityType.fromLong(6));
assertNull(IntegrityDefinitionDao.IntegrityType.fromLong(-1));
}
@Test
public void testHashCode(){
IntegrityDefinitionDao integDao = new IntegrityDefinitionDao(integDef);
assertEquals(integDao.hashCode(), Arrays.hashCode(integDao.getIntegrityValue()));
}
@Test
public void testHashCodeWithNoIntegrity(){
assertEquals(new IntegrityDefinitionDao().hashCode(), 0);
}
@Test
public void testEquals(){
IntegrityDefinitionDao first = new IntegrityDefinitionDao(integDef);
IntegrityDefinitionDao second = new IntegrityDefinitionDao(integDef);
assertEquals(first, second);
assertEquals(second, first);
assertNotEquals("null", first);
}
}