protected List<TestData> getTestData() { return Arrays.asList( new TestData( getClassLoaderResource("/ico/JavaCup.ico"), new Dimension(48, 48), new Dimension(32, 32), new Dimension(16, 16), new Dimension(48, 48), new Dimension(32, 32), new Dimension(16, 16), new Dimension(48, 48), new Dimension(32, 32), new Dimension(16, 16) ), new TestData(getClassLoaderResource("/ico/favicon.ico"), new Dimension(32, 32)), new TestData( getClassLoaderResource("/ico/joypad.ico"), new Dimension(16, 16), new Dimension(24, 24), new Dimension(32, 32), new Dimension(48, 48), new Dimension(16, 16), new Dimension(24, 24), new Dimension(32, 32), new Dimension(48, 48) ), // Windows Vista icon, PNG encoded for 256x256 sizes new TestData( getClassLoaderResource("/ico/down.ico"), new Dimension(16, 16), new Dimension(16, 16), new Dimension(32, 32), new Dimension(32, 32), new Dimension(48, 48), new Dimension(48, 48), new Dimension(256, 256), new Dimension(256, 256), new Dimension(16, 16), new Dimension(32, 32), new Dimension(48, 48), new Dimension(256, 256) ) ); }
public void testSetDestinationIllegal() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream());
public void testReadWithSizeAndSourceRegionParam() { // TODO: Is this test correct??? ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); if (param.canSetSourceRenderSize()) { Dimension size = data.getDimension(0); size = new Dimension(size.width * 2, size.height * 2); param.setSourceRenderSize(size); param.setSourceRegion(new Rectangle(0, 0, 10, 10)); BufferedImage image = null; try { image = reader.read(0, param); } catch (IOException e) { fail("Image could not be read: " + e); } assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), 10, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), 10, image.getHeight()); } }
public void testAbort() { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream());
public void testMultipleAddIIOReadProgressListenerCallbacks() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream());
public void testSetDestinationTypeIllegal() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); List<ImageTypeSpecifier> illegalTypes = createIllegalTypes(reader.getImageTypes(0)); ImageReadParam param = reader.getDefaultReadParam(); for (ImageTypeSpecifier illegalType : illegalTypes) { param.setDestinationType(illegalType); try { reader.read(0, param); fail("Expected to throw exception with illegal type specifier"); } catch (IIOException expected) { // TODO: This is thrown by ImageReader.getDestination. But are we happy with that? String message = expected.getMessage().toLowerCase(); if (!(message.contains("destination") && message.contains("type"))) { // Allow this to bubble up, du to a bug in the Sun PNGImageReader throw expected; } } catch (IllegalArgumentException expected) { String message = expected.getMessage().toLowerCase(); if (!(message.contains("destination") && message.contains("type"))) { // Allow this to bubble up, du to a bug in the Sun PNGImageReader throw expected; } } } }
public void testRemoveIIOReadProgressListenerMultiple() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); Mock mockListener = new Mock(IIOReadProgressListener.class, "Listener1"); IIOReadProgressListener listener = (IIOReadProgressListener) mockListener.proxy(); reader.addIIOReadProgressListener(listener); Mock mockListenerToo = new Mock(IIOReadProgressListener.class, "Listener2"); mockListenerToo.expects(once()).method("imageStarted").with(eq(reader), eq(0)); mockListenerToo.stubs().method("imageProgress").withAnyArguments(); mockListenerToo.expects(once()).method("imageComplete").with(eq(reader)); IIOReadProgressListener listenerToo = (IIOReadProgressListener) mockListenerToo.proxy(); reader.addIIOReadProgressListener(listenerToo); reader.removeIIOReadProgressListener(listener); try { reader.read(0); } catch (IOException e) { fail("Could not read image"); } // Should not have called any methods... mockListener.verify(); mockListenerToo.verify(); }
public void testGetTypeSpecifiers() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageTypeSpecifier rawType = reader.getRawImageType(0); assertNotNull(rawType); Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); assertNotNull(types); assertTrue(types.hasNext()); // TODO: This might fail even though the specifiers are obviously equal, if the // color spaces they use are not the SAME instance, as ColorSpace uses identity equals // and Interleaved ImageTypeSpecifiers are only equal if color spaces are equal... boolean rawFound = false; while (types.hasNext()) { ImageTypeSpecifier type = types.next(); if (type.equals(rawType)) { rawFound = true; break; } } assertTrue("ImageTypeSepcifier from getRawImageType should be in the iterator from getImageTypes", rawFound); }
for (TestData data : getTestData()) { reader.setInput(data.getInputStream()); for (int i = 0; i < data.getImageCount(); i++) { BufferedImage image = null; try { fail(String.format("Image %s index %s could not be read: %s", data.getInput(), i, e)); assertNotNull(String.format("Image %s index %s was null!", data.getInput(), i), image); String.format("Image %s index %s has wrong width: %s", data.getInput(), i, image.getWidth()), data.getDimension(i).width, image.getWidth() ); assertEquals( String.format("Image %s index %s has wrong height: %s", data.getInput(), i, image.getHeight()), data.getDimension(i).height, image.getHeight() );
public void testSetDestinationType() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); while (types.hasNext()) { ImageTypeSpecifier type = types.next(); param.setDestinationType(type); BufferedImage result = reader.read(0, param); assertEquals(type.getColorModel(), result.getColorModel()); // The following logically tests // assertEquals(type.getSampleModel(), result.getSampleModel()); // but SampleModel does not have a proper equals method. SampleModel expectedModel = type.getSampleModel(); SampleModel resultModel = result.getSampleModel(); assertEquals(expectedModel.getDataType(), resultModel.getDataType()); assertEquals(expectedModel.getNumBands(), resultModel.getNumBands()); assertEquals(expectedModel.getNumDataElements(), resultModel.getNumDataElements()); assertTrue(Arrays.equals(expectedModel.getSampleSize(), resultModel.getSampleSize())); assertEquals(expectedModel.getTransferType(), resultModel.getTransferType()); for (int i = 0; i < expectedModel.getNumBands(); i++) { assertEquals(expectedModel.getSampleSize(i), resultModel.getSampleSize(i)); } } }
public void testReadAsRenderedImageIndexOutOfBounds() throws IIOException { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); RenderedImage image = null; try { image = reader.readAsRenderedImage(reader.getNumImages(true), reader.getDefaultReadParam()); fail("Read image with index out of bounds"); } catch (IndexOutOfBoundsException expected) { // Ignore } catch (IIOException e) { // Allow this to bubble up, due to a bug in the Sun JPEGImageReader throw e; } catch (IOException e) { fail("Image could not be read: " + e); } assertNull(image); }
public void testAddIIOReadProgressListenerCallbacks() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); Mock mockListener = new Mock(IIOReadProgressListener.class); String started = "Started"; mockListener.expects(once()).method("imageStarted").withAnyArguments().id(started); mockListener.stubs().method("imageProgress").withAnyArguments().after(started); mockListener.expects(once()).method("imageComplete").withAnyArguments().after(started); reader.addIIOReadProgressListener((IIOReadProgressListener) mockListener.proxy()); try { reader.read(0); } catch (IOException e) { fail("Could not read image"); } // At least imageStarted and imageComplete, plus any number of imageProgress mockListener.verify(); }
public void testGetNumImages() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); int num = -1; try { num = reader.getNumImages(false); } catch (IOException e) { fail(e.getMessage()); } assertTrue(num == -1 || num > 0); try { num = reader.getNumImages(true); } catch (IOException e) { fail(e.getMessage()); } assertTrue(num > 0); }
public void testReadWithSubsampleAndSourceRegionParam() { // NOTE: The "standard" (com.sun.imageio.plugin.*) ImageReaders pass // this test, so the test should be correct... ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); param.setSourceSubsampling(2, 2, 0, 0); param.setSourceRegion(new Rectangle(0, 0, 10, 10)); BufferedImage image = null; try { image = reader.read(0, param); } catch (IOException e) { fail("Image could not be read: " + e); } assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), 5, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), 5, image.getHeight()); }
public void testGetAspectratioIndexOutOfBounds() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); //float aspectratio = 0f; try { // NOTE: Some readers (like the com.sun.imageio stuff) ignores // index in getWidth/getHeight for formats with only one image... /*aspectratio =*/ reader.getAspectRatio(-1); //assertEquals("Wrong aspectratio aspectratio", data.getDimension().width / (float) data.getDimension().height, aspectratio, 0f); } catch (IndexOutOfBoundsException ignore) { } catch (IOException e) { fail("Could not read image aspectratio" + e); } }
public void testReadAsRenderedImageWithDefaultParam() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); RenderedImage image = null; try { image = reader.readAsRenderedImage(0, reader.getDefaultReadParam()); } catch (IOException e) { fail("Image could not be read: " + e); } assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), data.getDimension(0).width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), data.getDimension(0).height, image.getHeight()); }
public void testReadWithSubsampleParam() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); param.setSourceSubsampling(5, 5, 0, 0); BufferedImage image = null; try { image = reader.read(0, param); } catch (IOException e) { fail("Image could not be read: " + e); } assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: ", (double) data.getDimension(0).width / 5.0, image.getWidth(), 1.0); assertEquals("Read image has wrong height: ", (double) data.getDimension(0).height / 5.0, image.getHeight(), 1.0); }
public void testRemoveIIOReadProgressListener() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); Mock mockListener = new Mock(IIOReadProgressListener.class); IIOReadProgressListener listener = (IIOReadProgressListener) mockListener.proxy(); reader.addIIOReadProgressListener(listener); reader.removeIIOReadProgressListener(listener); try { reader.read(0); } catch (IOException e) { fail("Could not read image"); } // Should not have called any methods... mockListener.verify(); }
public void testGetHeightIndexOutOfBounds() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); //int height = 0; try { /*height =*/ reader.getHeight(-1); // NOTE: Some readers (like the com.sun.imageio stuff) ignores // index in getWidth/getHeight for formats with only one image... //assertEquals("Wrong height reported", data.getDimension().height, height); } catch (IndexOutOfBoundsException ignore) { } catch (IOException e) { fail("Could not read image height: " + e); } }
public void testReadIndexNegative() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); BufferedImage image = null; try { image = reader.read(-1); fail("Read image with illegal index"); } catch (IndexOutOfBoundsException ignore) { } catch (IOException e) { fail("Image could not be read: " + e); } assertNull(image); }