package folioxml.folio; import folioxml.core.IIncludeResolutionService; import folioxml.core.InvalidMarkupException; import folioxml.core.StringIncludeResolver; import folioxml.slx.SlxRecord; import folioxml.slx.SlxRecordReader; import folioxml.translation.SlxTranslatingReader; import folioxml.xml.SlxToXmlTransformer; import folioxml.xml.XmlRecord; import org.junit.Test; import java.io.IOException; import java.io.StringReader; import static org.junit.Assert.assertEquals; public class FolioSlxTransformerTest { public FolioSlxTransformerTest() { } @Test public void TestOverlappingField() throws InvalidMarkupException, IOException { String fff = "<RD>\n" + "<FD:\"field 1\"><FD:\"field 2\">field 1 and field 2 </FD:\"field 1\"> field 2</FD:\"field 2\">\n" + "<FD:\"field 1\"> field 1 <FD:\"field 2\"> field 1 and field 2</FD:\"field 1\"> field 2</FD:\"field 2\">"; FolioTokenReader ftr = new FolioTokenReader(new StringReader(fff), new StringIncludeResolver()); SlxRecordReader srr = new SlxRecordReader(new SlxTranslatingReader(ftr)); SlxRecord root = srr.read(); SlxRecord r = srr.read(); assertEquals("<record class=\"NormalLevel\">\n" + "<p><span class=\"field_1\" type=\"field 1\"><span class=\"field_2\" type=\"field 2\">field 1 and field 2 </span type=\"field 1\"> field 2</span type=\"field 2\">\n" + "<span class=\"field_1\" type=\"field 1\"> field 1 <span class=\"field_2\" type=\"field 2\"> field 1 and field 2</span type=\"field 1\"> field 2</span type=\"field 2\"></p></record>", r.toSlxMarkup(false)); SlxToXmlTransformer gts = new SlxToXmlTransformer(); XmlRecord xml = gts.convert(r); assertEquals("<record class=\"NormalLevel\">\n" + "<p><span class=\"field_1\" type=\"field 1\"><span class=\"field_2\" type=\"field 2\">field 1 and field 2 </span></span><span class=\"field_2\" type=\"field 2\"> field 2</span>\n" + "<span class=\"field_1\" type=\"field 1\"> field 1 <span class=\"field_2\" type=\"field 2\"> field 1 and field 2</span></span><span class=\"field_2\" type=\"field 2\"> field 2</span></p></record>", xml.toXmlString(false)); } @Test public void TestSegment() throws InvalidMarkupException, IOException { String defFile = "<LN:Book:Chapter>"; t( "<CM> ***********************************************\n" + "** Folio Flat File Identifier and Version Info **\n" + "*********************************************** </CM>\n" + "<VI:Folio,FFF,4.6.1.0>\n\n\n" + "<CM> ***********************************************\n" + " ** Definition File Include **\n" + " *********************************************** </CM>\n" + "<DI:\"def.def\"><TT:\" Content Title \">\n" + "<RE:\"3/20/2001 5:57:07 PM\">\n" + "<AU> Imazen </AU>\n" + "<SU> </SU>\n" + "<AS> </AS>\n" + "<RM> Imazen</RM>\n" + "<HE><JU:LF><AP:0.125><IN:FI:0><TS:Right,RT,NO><BR:BT:0.00972222,0><SD:NO><GI><TB><FT:\"Times New Roman\",SR>Page: <GP><FT></HE>\n" + "<FO></FO>\n" + "\n" + "\n" + "<CM> ***********************************************\n" + " ** Record Text **\n" + " *********************************************** </CM>\n\n" + "<RD,ID:19:Book,CH><GR:\"nonindexed info\"><GR:\"group 5\"><GR:\"group 2\"><GR:\"group 4\">" + "<BH><JU:CN><BR:AL:0.15,0.0291667,FC:255,255,0><SD:255,0,0><FD:\"non indexed field\"><BD+><UN:2+><PT:48><FC:255,255,0>" + "<BC:255,0,0>WARNING!<UN><PT><FC:0,0,255><BC><CR><PT:12><FC:255,255,0><BC:255,0,0>You have inadvertently opened the infobase: <UN+>Test.NFO<UN><CR><CR><PT:16>" + "", new StringIncludeResolver().add(new StringIncludeResolver("def.def", defFile))); } public void t(String s, IIncludeResolutionService service) throws InvalidMarkupException, IOException { //try{ FolioTokenReader ftr = new FolioTokenReader(new StringReader(s), service); SlxRecordReader srr = new SlxRecordReader(new SlxTranslatingReader(ftr)); SlxRecord r; while (true) { r = srr.read(); if (r == null) break; } /*}catch (InvalidMarkupException ime ){ System.out.println(ime.getMessage()); }*/ } }