[tests] Add test on input contract

Signed-off-by: Emmanuel Bigeon <emmanuel@bigeon.fr>
This commit is contained in:
Emmanuel Bigeon 2020-04-10 15:58:30 -04:00
parent 1454938db8
commit 8f386b4abd

View File

@ -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();
}
}
}