package com.berryworks.edireader.demo; import com.berryworks.edireader.benchmark.EDITestData; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.xml.sax.SAXException; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; public class EDItoXMLTest { private static final String TINY_INTERCHANGE = "ISA~00~ ~00~ ~ZZ~04000 ~ZZ~58401 ~040714~1003~U~00204~000038449~0~P~<$" + "GS~AG~04000~58401~040714~1003~38327~X~002040CHRY$" + "ST~824~000042460$" + "BGN~11~ 07141005162 ~040714~1003$" + "SE~3~000042460$" + "GE~1~38327$" + "IEA~1~000038449$\n"; private EDItoXML ediToXml; @Before public void setUp() { } @Test public void canUseEDItoXML() throws IOException, SAXException { String ansiInterchange = EDITestData.getAnsiInterchange(); StringReader reader = new StringReader(ansiInterchange); StringWriter writer = new StringWriter(); ediToXml = new EDItoXML(reader, writer); ediToXml.run(); } @Test public void withLeadingSpacesInData() { StringReader reader = new StringReader(TINY_INTERCHANGE); StringWriter writer = new StringWriter(); ediToXml = new EDItoXML(reader, writer); ediToXml.run(); String xmlText = writer.toString(); int indexOf = xmlText.indexOf("07141005162"); String neighborhood = xmlText.substring(indexOf - 7, indexOf + 21); Assert.assertEquals("GN02\"> 07141005162 </element", neighborhood); // Do it again, with the indenting option enabled reader = new StringReader(TINY_INTERCHANGE); writer = new StringWriter(); ediToXml = new EDItoXML(reader, writer); ediToXml.setIndent(true); ediToXml.run(); xmlText = writer.toString(); indexOf = xmlText.indexOf("07141005162"); neighborhood = xmlText.substring(indexOf - 7, indexOf + 21); Assert.assertEquals("GN02\"> 07141005162 </element", neighborhood); } @Test public void canIndent() { StringReader reader = new StringReader(TINY_INTERCHANGE); StringWriter writer = new StringWriter(); ediToXml = new EDItoXML(reader, writer); ediToXml.setIndent(true); ediToXml.run(); String xmlText = writer.toString(); Assert.assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<ediroot>\n" + " <interchange Standard=\"ANSI X.12\" AuthorizationQual=\"00\" Authorization=\" \" SecurityQual=\"00\" Security=\" \" Date=\"040714\" Time=\"1003\" StandardsId=\"U\" Version=\"00204\" Control=\"000038449\" AckRequest=\"0\" TestIndicator=\"P\">\n" + " <sender>\n" + " <address Id=\"04000 \" Qual=\"ZZ\"/>\n" + " </sender>\n" + " <receiver>\n" + " <address Id=\"58401 \" Qual=\"ZZ\"/>\n" + " </receiver>\n" + " <group GroupType=\"AG\" ApplSender=\"04000\" ApplReceiver=\"58401\" Date=\"040714\" Time=\"1003\" Control=\"38327\" StandardCode=\"X\" StandardVersion=\"002040CHRY\">\n" + " <transaction DocType=\"824\" Name=\"Application Advice\" Control=\"000042460\">\n" + " <segment Id=\"BGN\">\n" + " <element Id=\"BGN01\">11</element>\n" + " <element Id=\"BGN02\"> 07141005162 </element>\n" + " <element Id=\"BGN03\">040714</element>\n" + " <element Id=\"BGN04\">1003</element>\n" + " </segment>\n" + " </transaction>\n" + " </group>\n" + " </interchange>\n" + "</ediroot>", xmlText); } }