package simple.escp.json; import org.junit.Test; import simple.escp.dom.Page; import simple.escp.dom.Report; import simple.escp.dom.TableColumn; import simple.escp.dom.line.ListLine; import simple.escp.dom.line.TableLine; import static org.junit.Assert.*; public class ParserTest { @Test public void parseTable() { String jsonString = "{" + "\"pageFormat\": {" + "\"pageLength\": 3" + "}," + "\"template\": [" + "\"This is line 1.\"," + "{" + "\"table\": \"sources\"," + "\"columns\":" + "[" + "{ \"source\": \"field1\", \"width\": 10 }," + "{ \"source\": \"field2\", \"width\": 15 }," + "{ \"source\": \"field3\", \"width\": 8 }" + "]" + "}," + "\"This is line 2.\"" + "]" + "}"; JsonTemplate jsonTemplate = new JsonTemplate(jsonString); Report report = jsonTemplate.parse(); assertEquals(1, report.getNumberOfPages()); Page page = report.getPage(1); assertEquals(3, page.getNumberOfLines()); assertEquals("This is line 1.", page.getLine(1).toString()); assertFalse(page.getLine(1).isDynamic()); assertEquals("This is line 2.", page.getLine(3).toString()); assertFalse(page.getLine(3).isDynamic()); assertTrue(page.getLine(2).isDynamic()); assertTrue(page.getLine(2) instanceof TableLine); TableLine tableLine = (TableLine) page.getLine(2); assertEquals("sources", tableLine.getSource()); assertEquals(3, tableLine.getNumberOfColumns()); TableColumn column = tableLine.getColumnAt(1); assertEquals("field1", column.getText()); assertEquals(10, column.getWidth()); column = tableLine.getColumnAt(2); assertEquals("field2", column.getText()); assertEquals(15, column.getWidth()); column = tableLine.getColumnAt(3); assertEquals("field3", column.getText()); assertEquals(8, column.getWidth()); } @Test public void parseTableInDetail() { String jsonString = "{" + "\"pageFormat\": {" + "\"pageLength\": 3" + "}," + "\"template\": {" + "\"header\": [\"This is header.\"]," + "\"detail\": [{" + "\"table\": \"sources\"," + "\"columns\":" + "[" + "{ \"source\": \"field1\", \"width\": 10 }," + "{ \"source\": \"field2\", \"width\": 15 }," + "{ \"source\": \"field3\", \"width\": 8 }" + "]" + "}]," + "\"footer\": [\"This is footer.\"]" + "}" + "}"; JsonTemplate jsonTemplate = new JsonTemplate(jsonString); Report report = jsonTemplate.parse(); assertEquals(1, report.getNumberOfPages()); Page page = report.getPage(1); assertEquals(3, page.getNumberOfLines()); assertEquals("This is header.", page.getLine(1).toString()); assertFalse(page.getLine(1).isDynamic()); assertEquals("This is footer.", page.getLine(3).toString()); assertFalse(page.getLine(3).isDynamic()); assertTrue(page.getLine(2).isDynamic()); assertTrue(page.getLine(2) instanceof TableLine); TableLine tableLine = (TableLine) page.getLine(2); assertEquals("sources", tableLine.getSource()); assertEquals(3, tableLine.getNumberOfColumns()); TableColumn column = tableLine.getColumnAt(1); assertEquals("field1", column.getText()); assertEquals("field1", column.getCaption()); assertEquals(10, column.getWidth()); column = tableLine.getColumnAt(2); assertEquals("field2", column.getText()); assertEquals("field2", column.getText()); assertEquals(15, column.getWidth()); column = tableLine.getColumnAt(3); assertEquals("field3", column.getText()); assertEquals("field3", column.getText()); assertEquals(8, column.getWidth()); } @Test public void parseTableWithColumnCaption() { String jsonString = "{" + "\"pageFormat\": {" + "\"pageLength\": 3" + "}," + "\"template\": {" + "\"header\": [\"This is header.\"]," + "\"detail\": [{" + "\"table\": \"sources\"," + "\"columns\":" + "[" + "{ \"source\": \"field1\", \"width\": 10, \"caption\": \"Column A\" }," + "{ \"source\": \"field2\", \"width\": 15, \"caption\": \"Column B\" }," + "{ \"source\": \"field3\", \"width\": 8, \"caption\": \"Column C\" }" + "]" + "}]," + "\"footer\": [\"This is footer.\"]" + "}" + "}"; JsonTemplate jsonTemplate = new JsonTemplate(jsonString); Report report = jsonTemplate.parse(); assertEquals(1, report.getNumberOfPages()); Page page = report.getPage(1); assertEquals(3, page.getNumberOfLines()); assertEquals("This is header.", page.getLine(1).toString()); assertFalse(page.getLine(1).isDynamic()); assertEquals("This is footer.", page.getLine(3).toString()); assertFalse(page.getLine(3).isDynamic()); assertTrue(page.getLine(2).isDynamic()); assertTrue(page.getLine(2) instanceof TableLine); TableLine tableLine = (TableLine) page.getLine(2); assertEquals("sources", tableLine.getSource()); assertEquals(3, tableLine.getNumberOfColumns()); TableColumn column = tableLine.getColumnAt(1); assertEquals("field1", column.getText()); assertEquals("Column A", column.getCaption()); assertEquals(10, column.getWidth()); column = tableLine.getColumnAt(2); assertEquals("field2", column.getText()); assertEquals("Column B", column.getCaption()); assertEquals(15, column.getWidth()); column = tableLine.getColumnAt(3); assertEquals("field3", column.getText()); assertEquals("Column C", column.getCaption()); assertEquals(8, column.getWidth()); } @Test public void parseListLine() { String jsonString = "{" + "\"pageFormat\": {" + "\"pageLength\": 3" + "}," + "\"template\": {" + "\"header\": [\"This is header.\"]," + "\"detail\": [{" + "\"list\": \"sources\"," + "\"line\": \"${field1} + ${field2} = ${field3}\"," + "\"header\":" + "[" + "\"This is list header1\"," + "\"This is list header2\"" + "]," + "\"footer\":" + "[" + "\"This is list footer1\"," + "\"This is list footer2\"" + "]" + "}]," + "\"footer\": [\"This is footer.\"]" + "}" + "}"; JsonTemplate jsonTemplate = new JsonTemplate(jsonString); Report report = jsonTemplate.parse(); assertEquals(1, report.getNumberOfPages()); Page page = report.getPage(1); assertEquals(3, page.getNumberOfLines()); assertEquals("This is header.", page.getLine(1).toString()); assertFalse(page.getLine(1).isDynamic()); assertEquals("This is footer.", page.getLine(3).toString()); assertFalse(page.getLine(3).isDynamic()); assertTrue(page.getLine(2).isDynamic()); assertTrue(page.getLine(2) instanceof ListLine); ListLine listLine = (ListLine) page.getLine(2); assertEquals("sources", listLine.getSource()); assertEquals("${field1} + ${field2} = ${field3}", listLine.getLineSource()); assertEquals(2, listLine.getHeader().length); assertEquals("This is list header1", listLine.getHeader()[0].getText()); assertEquals("This is list header2", listLine.getHeader()[1].getText()); assertEquals(2, listLine.getFooter().length); assertEquals("This is list footer1", listLine.getFooter()[0].getText()); assertEquals("This is list footer2", listLine.getFooter()[1].getText()); } }