package org.mapfish.print.output; import net.sf.jasperreports.engine.JasperPrint; import org.junit.Test; import org.mapfish.print.AbstractMapfishSpringTest; import org.mapfish.print.config.Configuration; import org.mapfish.print.config.ConfigurationFactory; import org.mapfish.print.test.util.ImageSimilarity; import org.mapfish.print.wrapper.json.PJsonObject; import org.springframework.beans.factory.annotation.Autowired; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Map; public class JasperReportOutputFormatSimpleMapTest extends AbstractMapfishSpringTest { public static final String BASE_DIR = "simple_map/"; @Autowired private ConfigurationFactory configurationFactory; @Autowired private Map<String, OutputFormat> outputFormat; @Test public void testPrint() throws Exception { final Configuration config = configurationFactory.getConfig(getFile(BASE_DIR + "config.yaml")); PJsonObject requestData = loadJsonRequestData(); final AbstractJasperReportOutputFormat format = (AbstractJasperReportOutputFormat) this.outputFormat.get("pngOutputFormat"); JasperPrint print = format.getJasperPrint(requestData, config, getFile(JasperReportOutputFormatSimpleMapTest.class, BASE_DIR), getTaskDirectory()).print; BufferedImage reportImage = ImageSimilarity.exportReportToImage(print, 0); // note that we are using a sample size of 50, because the image is quite big. // otherwise small differences are not detected! new ImageSimilarity(reportImage, 50).assertSimilarity(getFile(BASE_DIR + "expectedReport.png"), 10); } @Test public void testAllOutputFormats() throws Exception { final Configuration config = configurationFactory.getConfig(getFile(BASE_DIR + "config.yaml")); PJsonObject requestData = loadJsonRequestData(); for (OutputFormat format : this.outputFormat.values()) { OutputStream outputStream = new ByteArrayOutputStream(); format.print(requestData, config, getFile(JasperReportOutputFormatSimpleMapTest.class, BASE_DIR), getTaskDirectory(), outputStream); // no error? its a pass } } public static PJsonObject loadJsonRequestData() throws IOException { return parseJSONObjectFromFile(JasperReportOutputFormatSimpleMapTest.class, BASE_DIR + "requestData.json"); } }