Mercurial > dive4elements > river
view gwt-client/src/test/java/test/ModuleRunnerOutput.java @ 9567:86e522bc7f36
jUnit-Tests completed
author | gernotbelger |
---|---|
date | Mon, 05 Nov 2018 13:21:57 +0100 |
parents | |
children | 531a60b7af95 |
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package test; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.dive4elements.artifacts.common.utils.ClientProtocolUtils; import org.dive4elements.artifacts.httpclient.http.HttpClient; import org.dive4elements.river.client.server.ChartServiceHelper; import org.junit.Assert; import org.w3c.dom.Document; /** * @author Domenico Nardi Tironi * */ public class ModuleRunnerOutput { private static final String IGNORE_ERSTELLDATUM = "# Datum der Erstellung"; private static final String IGNORE_FLYS_VERSION = "# FLYS-Version:"; private static final String IGNORE_BEARBEITER = "# Bearbeiter:"; private static final String LINE_SEPARATOR = System.getProperty("line.separator"); private static final String EXPORT_FILE_DIR = "D:" + File.separator; final FilenameSupplier filename; final String outputModeName; // private final String collectionIdentifier; private final Map<String, String> params; public final String getOutputModename() { return this.outputModeName; } public ModuleRunnerOutput(final FilenameSupplier filename, final String outputModeName, final String currentKm) { this.filename = filename; this.outputModeName = outputModeName; this.params = getChartExportAttributeMap(currentKm, outputModeName); } protected final void assertAndWriteToFile(final HttpClient client, final String collectionId) throws IOException { final String type = "csv"; final String enc = "UTF-8";// req.getParameter("encoding"); final URL expectedResource = getClass().getResource(this.filename.getFilename()); final Document attr = ChartServiceHelper.getChartAttributes(this.params); final Document request = ClientProtocolUtils.newOutCollectionDocument(collectionId, this.outputModeName, type, attr); final InputStream response = client.collectionOut(request, collectionId, this.outputModeName); final String actual = deleteErstelldatum(IOUtils.toString(response, "UTF-8")); final String expected = deleteErstelldatum(FileUtils.readFileToString(new File(expectedResource.getFile()), enc)); // if (!actual.equals(expected)) { // if (this.writeToFile != null && this.writeToFile == true) { doGetWriteToDisk(actual); // TODO: WENN der Test negativ ausfällt, Datei abspeichern -> Diskussion // } try { Assert.assertEquals(expected, actual); } catch (final AssertionError e) { // TODO write (both?) files // doGetWriteToDisk(actual); // TODO: WENN der Test negativ ausfällt, Datei abspeichern -> Diskussion throw e; } } public final void doGetWriteToDisk(final String actual_text) throws FileNotFoundException, IOException { // final String name = mode; final String type = "csv"; final String fn = this.outputModeName + System.currentTimeMillis() + "." + type; final String enc = "windows-1252"; final String filepath = EXPORT_FILE_DIR + fn; // BOM final byte[] BOM = new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }; final String bomChar = new String(BOM, "UTF-8"); final String actualWithBom = new StringBuilder().append(BOM).append(actual_text).toString(); final InputStreamReader in = new InputStreamReader(new ByteArrayInputStream(Charset.forName(enc).encode(actualWithBom).array()), enc); IOUtils.copy(in, new FileOutputStream(filepath), enc); } private final String deleteErstelldatum(final String input) { String result = ""; final String[] lines = input.split(LINE_SEPARATOR); for (final String line : lines) { if (!line.contains(IGNORE_ERSTELLDATUM) && !line.contains(IGNORE_FLYS_VERSION) && !line.contains(IGNORE_BEARBEITER)) { result = result + line + LINE_SEPARATOR; } } return result; } private final Map<String, String> getChartExportAttributeMap(final String currentKm, final String outputmodeName) { // From ChartOutputServiceImpl final Map<String, String> attr = new HashMap<String, String>(); attr.put("width", "-1"); // req.getParameter("width")); attr.put("height", "-1"); // req.getParameter("height")); // attr.put("minx", null);// req.getParameter("minx")); // attr.put("maxx", req.getParameter("maxx")); // attr.put("miny", req.getParameter("miny")); // attr.put("maxy", req.getParameter("maxy")); attr.put("format", "csv"); // req.getParameter("format")); attr.put("export", "true");// req.getParameter("export")); if (currentKm != null) attr.put("km", currentKm);// req.getParameter("currentKm")); // encoding? // Weiteres (nicht mehr von CHartOutputServiceImpl, sondern von URL-Parametern): attr.put("type", outputmodeName); attr.put("locale", "de"); attr.put("timestamp", String.valueOf(System.currentTimeMillis())); attr.put("encoding", "windows-1252"); return attr; } }