From 8f386b4abd0e22161a4f9414fb6162bc116ca11b Mon Sep 17 00:00:00 2001 From: Emmanuel Bigeon Date: Fri, 10 Apr 2020 15:58:30 -0400 Subject: [PATCH] [tests] Add test on input contract Signed-off-by: Emmanuel Bigeon --- .../bigeon/gclc/test/InputContractTest.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 gclc-test/src/test/java/net/bigeon/gclc/test/InputContractTest.java diff --git a/gclc-test/src/test/java/net/bigeon/gclc/test/InputContractTest.java b/gclc-test/src/test/java/net/bigeon/gclc/test/InputContractTest.java new file mode 100644 index 0000000..05cf34c --- /dev/null +++ b/gclc-test/src/test/java/net/bigeon/gclc/test/InputContractTest.java @@ -0,0 +1,52 @@ +/** gclc-test: InputContractTest + * Created on Apr. 6, 2020 + */ +package net.bigeon.gclc.test; + +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; + +import org.junit.After; +import org.junit.Test; + +import net.bigeon.gclc.manager.EmptyInput; +import net.bigeon.gclc.manager.StreamConsoleInput; + +/** @author Emmanuel Bigeon */ +public class InputContractTest { + + /** Test method for + * {@link net.bigeon.gclc.test.InputContract#testInputContract(java.util.function.Supplier)}. */ + @Test + public void testTestInputContract() throws IOException, InterruptedException { + final InputContract contract = new InputContract(); + try (InputStream in = new PipedInputStream(new PipedOutputStream()); + PrintStream out = new PrintStream("temp.txt")) { + contract.testInputContract( + () -> new StreamConsoleInput(out, in, StandardCharsets.UTF_8)); + } + + try { + contract.testInputContract(() -> EmptyInput.INSTANCE); + fail("Empty input does not fit the contract for inputs since it cannot be closed."); + } catch (final AssertionError e) { + // ok + } + } + + @After + public void tearDown() { + final File f = new File("temp.txt"); + if (f.exists()) { + f.delete(); + } + } + +}