protected final RenderedImage getTestData(final int index) { return getTestData().get(index); }
@Test(expected = IllegalStateException.class) public void testWriteNoOutput() { ImageWriter writer = createImageWriter(); try { writer.write(getTestData(0)); } catch (IOException e) { fail(e.getMessage()); } }
@Test public void testAddIIOWriteProgressListenerCallbacks() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); writer.setOutput(ImageIO.createImageOutputStream(buffer)); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listener); try { writer.write(getTestData(0)); } catch (IOException e) { fail("Could not write image"); } // At least imageStarted and imageComplete, plus any number of imageProgress InOrder ordered = inOrder(listener); ordered.verify(listener).imageStarted(writer, 0); ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt()); ordered.verify(listener).imageComplete(writer); }
@Test public void testWrite() throws IOException { ImageWriter writer = createImageWriter(); for (RenderedImage testData : getTestData()) { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) { writer.setOutput(stream); writer.write(drawSomething((BufferedImage) testData)); } catch (IOException e) { fail(e.getMessage()); } assertTrue("No image data written", buffer.size() > 0); } }
@Test public void testRemoveAllIIOWriteProgressListeners() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); writer.setOutput(ImageIO.createImageOutputStream(buffer)); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listener); writer.removeAllIIOWriteProgressListeners(); try { writer.write(getTestData(0)); } catch (IOException e) { fail("Could not write image"); } // Should not have called any methods... verifyZeroInteractions(listener); }
@Test public void testRemoveIIOWriteProgressListener() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); writer.setOutput(ImageIO.createImageOutputStream(buffer)); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listener); writer.removeIIOWriteProgressListener(listener); try { writer.write(getTestData(0)); } catch (IOException e) { fail("Could not write image"); } // Should not have called any methods... verifyZeroInteractions(listener); }
@Test public void testRemoveAllIIOWriteProgressListenersMultiple() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); writer.setOutput(ImageIO.createImageOutputStream(buffer)); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listener); IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listenerToo); writer.removeAllIIOWriteProgressListeners(); try { writer.write(getTestData(0)); } catch (IOException e) { fail("Could not write image"); } // Should not have called any methods... verifyZeroInteractions(listener); verifyZeroInteractions(listenerToo); } }
@Test public void testMultipleAddIIOWriteProgressListenerCallbacks() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); writer.setOutput(ImageIO.createImageOutputStream(buffer)); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); IIOWriteProgressListener listenerThree = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listener); writer.addIIOWriteProgressListener(listenerToo); writer.addIIOWriteProgressListener(listenerThree); try { writer.write(getTestData(0)); } catch (IOException e) { fail("Could not write image"); } // At least imageStarted and imageComplete, plus any number of imageProgress InOrder ordered = inOrder(listener, listenerToo, listenerThree); ordered.verify(listener).imageStarted(writer, 0); ordered.verify(listenerToo).imageStarted(writer, 0); ordered.verify(listenerThree).imageStarted(writer, 0); ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt()); ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt()); ordered.verify(listenerThree, atLeastOnce()).imageProgress(eq(writer), anyInt()); ordered.verify(listener).imageComplete(writer); ordered.verify(listenerToo).imageComplete(writer); ordered.verify(listenerThree).imageComplete(writer); }
@Test public void testRemoveIIOWriteProgressListenerMultiple() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); writer.setOutput(ImageIO.createImageOutputStream(buffer)); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listener); IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listenerToo); writer.removeIIOWriteProgressListener(listener); try { writer.write(getTestData(0)); } catch (IOException e) { fail("Could not write image"); } // Should not have called any methods... verifyZeroInteractions(listener); // At least imageStarted and imageComplete, plus any number of imageProgress InOrder ordered = inOrder(listenerToo); ordered.verify(listenerToo).imageStarted(writer, 0); ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt()); ordered.verify(listenerToo).imageComplete(writer); }