package de.persosim.simulator.protocols;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import de.persosim.simulator.utils.HexString;
/**
* @author slutters
*
*/
public class OidTest {
/**
* Inner class to test methods implemented by Oid without references to
* other implementing classes.
*
* @author amay
*
*/
private class TestOid extends GenericOid {
public TestOid(byte[] byteArrayRepresentation) {
super(byteArrayRepresentation);
}
@Override
public String getIdString() {
return "TestOid";
}
}
/**
* Positive test: check whether OID object equals itself.
*/
@Test
public void equals_Self() {
Oid oid = new TestOid(new byte[] { 1 });
assertTrue(oid.equals(oid));
}
/**
* Positive test: check whether OID object equals identical copy.
*/
@Test
public void equals_Same() {
Oid oid1 = new TestOid(new byte[] { 1 });
Oid oid2 = new TestOid(new byte[] { 1 });
assertTrue(oid1.equals(oid2));
}
/**
* Negative test: check whether OID object does not equal different OID of
* same type.
*/
@Test
public void equals_Null() {
Oid oid = new TestOid(new byte[] { 1 });
assertFalse(oid.equals(null));
}
/**
* Negative test: check whether OID object does not equal different OID of
* same type.
*/
@Test
public void equals_DifferentContent() {
Oid oid1 = new TestOid(new byte[] { 1 });
Oid oid2 = new TestOid(new byte[] { 2 });
assertFalse(oid1.equals(oid2));
}
/**
* Positive test: check whether OID object that contain the same byte[]
* contents but differ in type are nevertheless equal.
*/
@Test
public void equals_equalContentAndDifferentType() {
Oid testOid = new TestOid(new byte[] { 1 });
Oid anonymousTypeOid = new GenericOid(new byte[] { 1 }) {
@Override
public String getIdString() {
return "SecondTestOidType";
}
};
assertTrue("testOid.equals(annonymousType)", testOid.equals(anonymousTypeOid));
assertTrue("annonymousType.equals(testOid)", anonymousTypeOid.equals(testOid));
}
/**
* Positive test: check whether OID object starts with the provided prefix.
*/
@Test
public void startsWithPrefix() {
Oid oid = new TestOid(HexString.toByteArray("00112233445566778899"));
byte[] prefix = HexString.toByteArray("00112233");
assertTrue(oid.startsWithPrefix(prefix));
}
/**
* Positive test: check whether OID object starts with the provided prefix,
* prefix is empty.
*/
@Test
public void startsWithPrefix_PrefixIsEmpty() {
Oid oid = new TestOid(HexString.toByteArray("00112233445566778899"));
byte[] prefix = new byte[0];
assertTrue(oid.startsWithPrefix(prefix));
}
/**
* Positive test: check whether whole OID is regarded as prefix.
*/
@Test
public void startsWithPrefix_PrefixOfSameLengthAsOid() {
Oid oid = new TestOid(HexString.toByteArray("00112233445566778899"));
byte[] prefix = oid.toByteArray();
assertTrue(oid.startsWithPrefix(prefix));
}
/**
* Negative test: check whether OID object starts with the provided prefix,
* prefix different.
*/
@Test
public void startsWithPrefix_PrefixDifferent() {
Oid oid = new TestOid(HexString.toByteArray("00112233445566778899"));
byte[] prefix = HexString.toByteArray("11");
assertFalse(oid.startsWithPrefix(prefix));
}
/**
* Negative test: check whether OID object starts with the provided prefix,
* provided prefix longer that actual oid content.
*/
@Test
public void startsWithPrefix_PrefixLonger() {
Oid oid = new TestOid(HexString.toByteArray("00112233445566778899"));
byte[] prefix = HexString.toByteArray("00112233445566778899AA");
assertFalse(oid.startsWithPrefix(prefix));
}
/**
* Negative test: check whether OID object starts with the provided prefix,
* prefix is null.
*/
@Test(expected = NullPointerException.class)
public void startsWithPrefix_PrefixNull() {
Oid oid = new TestOid(HexString.toByteArray("00112233445566778899"));
byte[] prefix = null;
oid.startsWithPrefix(prefix);
}
}