Changed prompt interruption contract
Signed-off-by: Emmanuel Bigeon <emmanuel@bigeon.fr>
This commit is contained in:
@@ -80,6 +80,7 @@ import java.io.BufferedWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PipedInputStream;
|
||||
import java.io.PipedOutputStream;
|
||||
@@ -90,6 +91,9 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import net.bigeon.gclc.utils.ReadingRunnable;
|
||||
import net.bigeon.test.junitmt.FunctionalTestRunnable;
|
||||
import net.bigeon.test.junitmt.TestFunction;
|
||||
import net.bigeon.test.junitmt.ThreadTest;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -198,9 +202,11 @@ public class ReadingRunnableTest {
|
||||
public final void testGetPendingMessages() throws IOException, InterruptedException {
|
||||
|
||||
final PipedOutputStream out = new PipedOutputStream();
|
||||
final BufferedReader reader = new BufferedReader(new InputStreamReader(new PipedInputStream(out), StandardCharsets.UTF_8));
|
||||
final BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(new PipedInputStream(out), StandardCharsets.UTF_8));
|
||||
final ReadingRunnable runnable = new ReadingRunnable(reader);
|
||||
final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
|
||||
final BufferedWriter writer = new BufferedWriter(
|
||||
new OutputStreamWriter(out, StandardCharsets.UTF_8));
|
||||
writer.write("one");
|
||||
writer.newLine();
|
||||
writer.write("two");
|
||||
@@ -222,4 +228,30 @@ public class ReadingRunnableTest {
|
||||
// ok
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInterruption() throws IOException, InterruptedException {
|
||||
final PipedOutputStream out = new PipedOutputStream();
|
||||
final BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(new PipedInputStream(out), StandardCharsets.UTF_8));
|
||||
final ReadingRunnable runnable = new ReadingRunnable(reader);
|
||||
|
||||
final FunctionalTestRunnable test = new FunctionalTestRunnable(
|
||||
new TestFunction() {
|
||||
@Override
|
||||
public void apply() throws IOException {
|
||||
try {
|
||||
runnable.getMessage();
|
||||
fail("Message interruption should cause an exception");
|
||||
} catch (final InterruptedIOException e) {
|
||||
// ok
|
||||
}
|
||||
}
|
||||
});
|
||||
final Thread th = new Thread(test, "Prompt wait");
|
||||
th.start();
|
||||
th.join(200);
|
||||
runnable.interrupt();
|
||||
ThreadTest.assertRuns(th, test);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user