+/**
* TODO * - * @author Emmanuel Bigeon - * - */ + * @author Emmanuel Bigeon */ public class ReadingRunnableTest { /** @@ -61,11 +63,10 @@ public class ReadingRunnableTest { @Before public void setUp() {} - /** - * Test method for {@link fr.bigeon.gclc.manager.ReadingRunnable#getMessage()}. - */ + /** Test method for + * {@link fr.bigeon.gclc.manager.ReadingRunnable#getMessage()}. */ @Test - public final void testGetMessage(){ + public final void testGetMessage() { BufferedReader reader = null; ReadingRunnable runnable = new ReadingRunnable(reader); runnable.setRunning(false); @@ -79,11 +80,10 @@ public class ReadingRunnableTest { } - /** - * Test method for {@link fr.bigeon.gclc.manager.ReadingRunnable#hasMessage()}. - */ + /** Test method for + * {@link fr.bigeon.gclc.manager.ReadingRunnable#hasMessage()}. */ @Test - public final void testHasMessage(){ + public final void testHasMessage() { BufferedReader reader = null; ReadingRunnable runnable = new ReadingRunnable(reader); @@ -97,11 +97,53 @@ public class ReadingRunnableTest { } } - /** - * Test method for {@link fr.bigeon.gclc.manager.ReadingRunnable#getWaitForDelivery(java.lang.String)}. - */ + /** Test method for + * {@link fr.bigeon.gclc.manager.ReadingRunnable#getWaitForDelivery(java.lang.String)}. + * + * @throws InterruptedException */ @Test - public final void testGetWaitForDelivery(){ + public final void testGetWaitForDelivery() throws InterruptedException { + try (PipedOutputStream out = new PipedOutputStream(); + InputStream piped = new PipedInputStream(out); + BufferedReader reader = new BufferedReader( + new InputStreamReader(piped, "UTF-8"))) { + final ReadingRunnable runnable = new ReadingRunnable(reader); + Thread th0 = new Thread(runnable, "read"); + th0.start(); + Thread th = runnable.getWaitForDelivery(""); + + final Object start = new Object(); + + Thread th2 = new Thread(new Runnable() { + + @Override + public void run() { + synchronized (start) { + start.notify(); + } + try { + runnable.getMessage(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }, "get"); + synchronized (start) { + th2.start(); + start.wait(); + } + runnable.interrupt(); + try { + th.join(); + } catch (InterruptedException e) { + assertNull(e); + } + runnable.setRunning(false); + out.close(); + } catch (IOException e1) { + assertNull(e1); + } } }