Commit 386b7a16 authored by Eric Duminil's avatar Eric Duminil
Browse files

Full CLI tests. :D

parent e43835c8
package eu.simstadt.regionchooser; package eu.simstadt.regionchooser;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.PrintWriter; import java.io.BufferedWriter;
import java.io.StringWriter; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.jupiter.api.AfterEach; // JUnit 5
import org.junit.jupiter.api.BeforeEach; // JUnit 5
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import picocli.CommandLine; import picocli.CommandLine;
class RegionChooserCommandLineInterfaceTest class RegionChooserCommandLineInterfaceTest
{ {
final PrintStream originalOut = System.out;
final PrintStream originalErr = System.err;
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final ByteArrayOutputStream err = new ByteArrayOutputStream();
@Test private static final Path TEST_REPOSITORY = Paths.get("src/test/resources/testdata/");
void testCLIWithoutArgument() {
RegionChooserCommandLineInterface app = new RegionChooserCommandLineInterface();
CommandLine cmd = new CommandLine(app);
StringWriter sw = new StringWriter(); @BeforeEach
cmd.setOut(new PrintWriter(sw)); public void setUpStreams() {
out.reset();
err.reset();
System.setOut(new PrintStream(out));
System.setErr(new PrintStream(err));
}
// black box testing @AfterEach
int exitCode = cmd.execute("--input=input.gml", "--output=output.gml", "--wkt=input.wkt"); public void restoreStreams() {
assertEquals(0, exitCode); System.setOut(originalOut);
assertEquals("Your output is abc...", sw.toString()); System.setErr(originalErr);
} }
@Test
void testNoInput() {
new CommandLine(new RegionChooserCommandLineInterface()).execute("");
originalOut.println(err.toString());
String expectedErr = "Missing required options: '--input=input.gml', '--output=output.gml', '--wkt=polygon.wkt'";
assertTrue(err.toString().contains(expectedErr), err.toString() + " should contain " + expectedErr);
}
@Test
void testExtractRegionFromTwoCitygmls() throws IOException {
String wktPolygon = "POLYGON((3512984.7003764412 5405148.310572891,3513038.6360455155 5405010.072163861,3513142.7277745553 5405004.02571992,3514204.1661769524 5405563.192081669,3514399.2818417274 5405720.905457244,3514291.6158155007 5405896.706492759,3512984.7003764412 5405148.310572891))";
Path citygml1 = TEST_REPOSITORY.resolve("Stuttgart.proj/Stuttgart_LOD0_LOD1_small.gml");
Path citygml2 = TEST_REPOSITORY.resolve("Stuttgart.proj/Stöckach_überarbeitete GML-NoBuildingPart.gml");
Path outGML = Files.createTempFile("output", ".gml");
Path inWKT = Files.createTempFile("polygon", ".wkt");
try (BufferedWriter wkt = Files.newBufferedWriter(inWKT)) {
wkt.write(wktPolygon);
}
new CommandLine(new RegionChooserCommandLineInterface()).execute("--input=" + citygml1 + "," + citygml2,
"--output=" + outGML, "--wkt=" + inWKT, "--epsg=31463", "--local");
String expectedErr = "Buildings found in selected region 20";
assertTrue(err.toString().contains(expectedErr), err.toString() + " should contain " + expectedErr);
originalOut.println(Files.size(outGML));
assertTrue(Files.size(outGML) > 600_000);
}
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment