Files
Java-8583-Util/src/test/java/com/solab/iso8583/parse/TestComposites.java
T

98 lines
4.0 KiB
Java

package com.solab.iso8583.parse;
import com.solab.iso8583.IsoType;
import com.solab.iso8583.IsoValue;
import com.solab.iso8583.codecs.CompositeField;
import org.junit.Assert;
import org.junit.Test;
/**
* Tests for the CompositeField.
*
* @author Enrique Zamudio
* Date: 25/11/13 17:43
*/
public class TestComposites {
final String textData = "One 03Two00999X";
final byte[] binaryData = new byte[]{'O', 'n', 'e', ' ', ' ', 3, 'T', 'w', 'o',
0, 9, (byte) 0x99, 'X'};
@Test
public void testEncodeText() {
final CompositeField f = new CompositeField();
f.addValue(new IsoValue<>(IsoType.ALPHA, "One", 5));
f.getValues().get(0).setCharacterEncoding("UTF-8");
Assert.assertEquals("One ", f.encodeField(f));
f.addValue("Two", null, IsoType.LLVAR, 0);
f.getValues().get(1).setCharacterEncoding("UTF-8");
Assert.assertEquals("One 03Two", f.encodeField(f));
f.addValue(999, null, IsoType.NUMERIC, 5);
f.getValues().get(2).setCharacterEncoding("UTF-8");
Assert.assertEquals("One 03Two00999", f.encodeField(f));
f.addValue("X", null, IsoType.ALPHA, 1);
Assert.assertEquals(textData, f.encodeField(f));
}
@Test
public void testEncodeBinary() {
final CompositeField f = new CompositeField()
.addValue(new IsoValue<>(IsoType.ALPHA, "One", 5));
Assert.assertArrayEquals(new byte[]{'O', 'n', 'e', 32, 32}, f.encodeBinaryField(f));
f.addValue(new IsoValue<>(IsoType.LLVAR, "Two"));
Assert.assertArrayEquals(new byte[]{'O', 'n', 'e', ' ', ' ', 3, 'T', 'w', 'o'},
f.encodeBinaryField(f));
f.addValue(new IsoValue<>(IsoType.NUMERIC, 999l, 5));
f.addValue(new IsoValue<>(IsoType.ALPHA, "X", 1));
Assert.assertArrayEquals(binaryData, f.encodeBinaryField(f));
}
@Test
public void testDecodeText() {
final CompositeField dec = new CompositeField()
.addParser(new AlphaParseInfo(5))
.addParser(new LlvarParseInfo())
.addParser(new NumericParseInfo(5))
.addParser(new AlphaParseInfo(1));
final CompositeField f = dec.decodeField(textData);
Assert.assertNotNull(f);
Assert.assertEquals(4, f.getValues().size());
Assert.assertEquals("One ", f.getValues().get(0).getValue());
Assert.assertEquals("Two", f.getValues().get(1).getValue());
Assert.assertEquals("00999", f.getValues().get(2).getValue());
Assert.assertEquals("X", f.getValues().get(3).getValue());
}
@Test
public void testDecodeBinary() {
final CompositeField dec = new CompositeField()
.addParser(new AlphaParseInfo(5))
.addParser(new LlvarParseInfo())
.addParser(new NumericParseInfo(5))
.addParser(new AlphaParseInfo(1));
final CompositeField f = dec.decodeBinaryField(binaryData, 0, binaryData.length);
Assert.assertNotNull(f);
Assert.assertEquals(4, f.getValues().size());
Assert.assertEquals("One ", f.getValues().get(0).getValue());
Assert.assertEquals("Two", f.getValues().get(1).getValue());
Assert.assertEquals(999l, f.getValues().get(2).getValue());
Assert.assertEquals("X", f.getValues().get(3).getValue());
}
@Test
public void testDecodeBinaryWithOffset() {
final CompositeField dec = new CompositeField()
.addParser(new LlvarParseInfo())
.addParser(new NumericParseInfo(5))
.addParser(new AlphaParseInfo(1));
int offset = 5;
final CompositeField f = dec.decodeBinaryField(binaryData, offset, this.binaryData.length - offset);
Assert.assertNotNull(f);
Assert.assertEquals(3, f.getValues().size());
Assert.assertEquals("Two", f.getValues().get(0).getValue());
Assert.assertEquals(999l, f.getValues().get(1).getValue());
Assert.assertEquals("X", f.getValues().get(2).getValue());
}
}