From 6abbeb93bb408c759c5e5a504d76dee768512686 Mon Sep 17 00:00:00 2001 From: Enrique Zamudio Date: Fri, 18 Jan 2013 12:03:32 -0600 Subject: [PATCH] Fix #4 (which wasn't really a bug but uncovered a couple of them) --- src/test/java/j8583/TestIssue4.java | 65 +++++++++++++++++++++++++++++ src/test/resources/issue4.xml | 21 ++++++++++ src/test/resources/log4j.properties | 4 ++ 3 files changed, 90 insertions(+) create mode 100644 src/test/java/j8583/TestIssue4.java create mode 100644 src/test/resources/issue4.xml create mode 100644 src/test/resources/log4j.properties diff --git a/src/test/java/j8583/TestIssue4.java b/src/test/java/j8583/TestIssue4.java new file mode 100644 index 0000000..b7f96d0 --- /dev/null +++ b/src/test/java/j8583/TestIssue4.java @@ -0,0 +1,65 @@ +package j8583; + +import com.solab.iso8583.IsoMessage; +import com.solab.iso8583.MessageFactory; +import com.solab.iso8583.parse.ConfigParser; +import org.junit.Assert; +import org.junit.Test; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.text.ParseException; + +/** + * Tests for chochos/j8583#4. + * + * @author Enrique Zamudio + * Date: 18/01/13 10:13 + */ +public class TestIssue4 { + + @Test + public void testTextBitmap() throws IOException, ParseException { + MessageFactory tmf = new MessageFactory(); + ConfigParser.configureFromClasspathConfig(tmf, "issue4.xml"); + IsoMessage tm = tmf.newMessage(0x800); + final ByteBuffer bb = tm.writeToBuffer(2); + Assert.assertEquals("Wrong message length for new TXT", + 70, bb.array().length); + Assert.assertEquals(68, bb.getShort()); + + MessageFactory tmfp = new MessageFactory(); + ConfigParser.configureFromClasspathConfig(tmfp, "issue4.xml"); + byte[] buf2 = new byte[bb.remaining()]; + bb.get(buf2); + tm = tmfp.parseMessage(buf2, 0); + final ByteBuffer bbp = tm.writeToBuffer(2); + Assert.assertArrayEquals("Parsed-reencoded TXT differs from original", + bb.array(), bbp.array()); + } + + @Test + public void testBinaryBitmap() throws IOException, ParseException { + MessageFactory mf = new MessageFactory(); + ConfigParser.configureFromClasspathConfig(mf, "issue4.xml"); + IsoMessage bm = mf.getMessageTemplate(0x800); + bm.setBinaryBitmap(true); + final ByteBuffer bb = bm.writeToBuffer(2); + Assert.assertEquals("Wrong message length for new BIN", 62, bb.array().length); + Assert.assertEquals(60, bb.getShort()); + + MessageFactory mfp = new MessageFactory(); + mfp.setUseBinaryBitmap(true); + ConfigParser.configureFromClasspathConfig(mfp, "issue4.xml"); + byte[] buf2 = new byte[bb.remaining()]; + bb.get(buf2); + bm = mfp.parseMessage(buf2, 0); + Assert.assertTrue("Parsed message should have binary bitmap flag set", + bm.isBinaryBitmap()); + Assert.assertFalse(bm.isBinary()); + final ByteBuffer bbp = bm.writeToBuffer(2); + Assert.assertArrayEquals("Parsed-reencoded BIN differs from original", + bb.array(), bbp.array()); + } + +} diff --git a/src/test/resources/issue4.xml b/src/test/resources/issue4.xml new file mode 100644 index 0000000..6363fff --- /dev/null +++ b/src/test/resources/issue4.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties new file mode 100644 index 0000000..b51e0c9 --- /dev/null +++ b/src/test/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger=TRACE, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %C{1} - %m%n