From 160f780309a038b8f908ec199070006bb50c4fd8 Mon Sep 17 00:00:00 2001 From: Enrique Zamudio Date: Mon, 13 May 2013 18:53:20 -0500 Subject: [PATCH] Tests for #13 --- src/test/java/j8583/TestEbcdic.java | 78 +++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/test/java/j8583/TestEbcdic.java diff --git a/src/test/java/j8583/TestEbcdic.java b/src/test/java/j8583/TestEbcdic.java new file mode 100644 index 0000000..7e9cfa1 --- /dev/null +++ b/src/test/java/j8583/TestEbcdic.java @@ -0,0 +1,78 @@ +package j8583; + +import com.solab.iso8583.IsoType; +import com.solab.iso8583.IsoValue; +import com.solab.iso8583.parse.LlbinParseInfo; +import com.solab.iso8583.parse.LllbinParseInfo; +import com.solab.iso8583.parse.LllvarParseInfo; +import com.solab.iso8583.parse.LlvarParseInfo; +import org.junit.Assert; +import org.junit.Test; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.text.ParseException; + +/** + * Test for EBCDIC support. + * + * @author Enrique Zamudio + * Date: 13/05/13 18:12 + */ +public class TestEbcdic { + + private IsoValue llvar = new IsoValue(IsoType.LLVAR, "Testing, testing, 123"); + + @Test + public void testAscii() throws IOException, ParseException { + llvar.setCharacterEncoding("UTF-8"); + final ByteArrayOutputStream bout = new ByteArrayOutputStream(); + llvar.write(bout, false, false); + byte[] buf = bout.toByteArray(); + Assert.assertEquals(50, buf[0]); + Assert.assertEquals(49, buf[1]); + final LlvarParseInfo parser = new LlvarParseInfo(); + parser.setCharacterEncoding("UTF-8"); + IsoValue field = parser.parse(1, buf, 0, null); + Assert.assertEquals(llvar.getValue(), field.getValue()); + } + + @Test + public void testEbcdic() throws IOException, ParseException { + llvar.setCharacterEncoding("Cp1047"); + final ByteArrayOutputStream bout = new ByteArrayOutputStream(); + llvar.write(bout, false, true); + byte[] buf = bout.toByteArray(); + Assert.assertEquals((byte)242, buf[0]); + Assert.assertEquals((byte) 241, buf[1]); + final LlvarParseInfo parser = new LlvarParseInfo(); + parser.setCharacterEncoding("Cp1047"); + parser.setForceStringDecoding(true); + IsoValue field = parser.parse(1, buf, 0, null); + Assert.assertEquals(llvar.getValue(), field.getValue()); + } + + @Test + public void testParsers() throws UnsupportedEncodingException, ParseException { + final byte[] stringA = "A".getBytes("Cp1047"); + final LllvarParseInfo lllvar = new LllvarParseInfo(); + lllvar.setCharacterEncoding("Cp1047"); + lllvar.setForceStringDecoding(true); + IsoValue field = lllvar.parse(1, new byte[]{(byte)240, (byte)240, (byte)241, (byte)193}, 0, null); + Assert.assertEquals(new String(stringA, "Cp1047"), field.getValue()); + + final LllbinParseInfo lllbin = new LllbinParseInfo(); + lllbin.setCharacterEncoding("Cp1047"); + lllbin.setForceStringDecoding(true); + field = lllbin.parse(1, new byte[]{(byte)240, (byte)240, (byte)242, 67, 49}, 0, null); + Assert.assertArrayEquals(stringA, (byte[])field.getValue()); + + final LlbinParseInfo llbin = new LlbinParseInfo(); + llbin.setCharacterEncoding("Cp1047"); + llbin.setForceStringDecoding(true); + field = llbin.parse(1, new byte[]{(byte)240, (byte)242, 67, 49}, 0, null); + Assert.assertArrayEquals(stringA, (byte[])field.getValue()); + } + +}