package de.persosim.simulator.tlv;
import static org.junit.Assert.*;
import org.junit.Test;
public class TlvDataObjectTest implements TlvConstants {
private static final String INDENT1 = "\n ";
private static final String INDENT2 = "\n ";
/**
* Positive test: PrimitiveTlvDataObject should be represented identical to it's toString()
*/
@Test
public void testDumpTlvDataObject_singlePrimitiveObject() {
TlvDataObject obj = TlvDataObjectFactory.createTLVDataObject("020101");
String expected = obj.toString();
assertEquals(expected, TlvDataObject.dumpTlvObject(obj));
}
/**
* Negative test: return an empty String on null parameter
*/
@Test
public void testDumpTlvDataObject_nullArgument() {
TlvDataObject obj = null;
String expected = "";
assertEquals(expected, TlvDataObject.dumpTlvObject(obj));
}
/**
* Positive test: ConstructedTlvDataObject with no child at all
*/
@Test
public void testDumpTlvDataObject_constructedObjectNoChild() {
TlvDataObject obj = TlvDataObjectFactory.createTLVDataObject("3000");
String expected = obj.toString();
assertEquals(expected, TlvDataObject.dumpTlvObject(obj));
}
/**
* Positive test: Simple ConstructedTlvDataObject with one primitive child
*/
@Test
public void testDumpTlvDataObject_constructedObjectOneChild() {
TlvDataObject obj = TlvDataObjectFactory.createTLVDataObject("3003020101");
String expected = "30|03|" +
INDENT1+"02|01|01";
assertEquals(expected, TlvDataObject.dumpTlvObject(obj));
}
/**
* Positive test: Simple ConstructedTlvDataObject with two primitive children
*/
@Test
public void testDumpTlvDataObject_constructedObjectTwoChildren() {
TlvDataObject obj = TlvDataObjectFactory.createTLVDataObject("3006020101020102");
String expected = "30|06|" +
INDENT1 + "02|01|01" +
INDENT1 + "02|01|02";
assertEquals(expected, TlvDataObject.dumpTlvObject(obj));
}
/**
* Positive test: ConstructedTlvDataObject with one constructed child, which has two primitive children
*/
@Test
public void testDumpTlvDataObject_constructedObjectConstructedChildTwoChildren() {
TlvDataObject obj = TlvDataObjectFactory.createTLVDataObject("30083006020101020102");
String expected = "30|08|" +
INDENT1 + "30|06|" +
INDENT2 + "02|01|01" +
INDENT2 + "02|01|02";
assertEquals(expected, TlvDataObject.dumpTlvObject(obj));
}
/**
* Positive test: ConstructedTlvDataObject with one constructed child and primitive children afterwards
*/
@Test
public void testDumpTlvDataObject_complexConstructedObject() {
TlvDataObject obj = TlvDataObjectFactory.createTLVDataObject("300B3006020101020102020101");
String expected = "30|0B|" +
INDENT1 + "30|06|" +
INDENT2 + "02|01|01" +
INDENT2 + "02|01|02" +
INDENT1 + "02|01|01";
assertEquals(expected, TlvDataObject.dumpTlvObject(obj));
}
}