package simple.escp.json; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import simple.escp.data.DataSource; import simple.escp.data.DataSources; import simple.escp.dom.Report; import simple.escp.dom.line.TableLine; import simple.escp.dom.line.TextLine; import simple.escp.fill.DataSourceBinding; import simple.escp.fill.TableFillHelper; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import java.io.IOException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class WrappedBufferTest { private TableFillHelper.WrappedBuffer wrappedBuffer; private Report generatedReport; @Before public void setup() throws URISyntaxException, IOException { JsonTemplate jsonTemplate = new JsonTemplate(getClass().getResource("/single_table_wrap.json").toURI()); List<JsonTemplateFillTest.Person> persons = new ArrayList<>(); persons.add(new JsonTemplateFillTest.Person("None12345678901234567890", "David12345678901234567890", "None12345678901234567890")); persons.add(new JsonTemplateFillTest.Person("David12345678901234567890", "Solid", "Snake12345678901234567890")); persons.add(new JsonTemplateFillTest.Person("Snake12345678901234567890", "Jocki", "Hendry12345678901234567890")); Map<String, Object> source = new HashMap<>(); source.put("persons", persons); DataSource ds = DataSources.from(source); ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); scriptEngineManager.setBindings(new DataSourceBinding(new DataSource[]{ds})); ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript"); Report report = jsonTemplate.parse(); generatedReport = new Report(3, null, null); TableLine tableLine = report.getFirstPageWithTableLines().getTableLines().get(0); TableFillHelper tableFillHelper = new TableFillHelper(generatedReport, scriptEngine, tableLine, persons); wrappedBuffer = tableFillHelper.getWrappedBuffer(); } @Test public void width() { assertEquals(10, wrappedBuffer.getWidth(0)); assertEquals(20, wrappedBuffer.getWidth(1)); assertEquals(10, wrappedBuffer.getWidth(2)); } @Test public void isEmpty() { assertTrue(wrappedBuffer.isEmpty()); wrappedBuffer.add(0, "01234567900123456790"); assertFalse(wrappedBuffer.isEmpty()); wrappedBuffer.clear(); assertTrue(wrappedBuffer.isEmpty()); } @Test public void add() { String result = wrappedBuffer.add(0, "123456789012345"); assertEquals("1234567890", result); assertEquals("12345", wrappedBuffer.getBuffer(0)); } @Test public void consume() { String result = wrappedBuffer.add(0, "1234567890ABCDEFGHIJ12345"); assertEquals("1234567890", result); result = wrappedBuffer.consume(0); assertEquals("ABCDEFGHIJ", result); assertEquals("12345", wrappedBuffer.getBuffer(0)); result = wrappedBuffer.consume(0); assertEquals("12345 ", result); assertNull(wrappedBuffer.getBuffer(0)); assertTrue(wrappedBuffer.isEmpty()); } @Test public void consumeEmpty() { assertEquals(" ", wrappedBuffer.consume(0)); assertEquals(" ", wrappedBuffer.consume(1)); assertEquals(" ", wrappedBuffer.consume(2)); } @Test public void flush() { wrappedBuffer.add(0, "1234567890ABCDEFGHIJ12345"); wrappedBuffer.add(2, "123456789012345"); wrappedBuffer.flush(); assertEquals(1, generatedReport.getNumberOfPages()); assertEquals("ABCDEFGHIJ 12345 ", ((TextLine)generatedReport.getPage(1).getLine(1)).getText()); assertEquals("12345 ", ((TextLine)generatedReport.getPage(1).getLine(2)).getText()); assertTrue(wrappedBuffer.isEmpty()); } }