Refine search
@Test public void testColorsVsReference() throws IOException { ImageReader reader = createReader(); TestData data = new TestData(getClassLoaderResource("/ppm/colors.ppm"), new Dimension(3, 2)); reader.setInput(data.getInputStream()); BufferedImage expected = new BufferedImage(3, 2, BufferedImage.TYPE_3BYTE_BGR); expected.setRGB(0, 0, new Color(255, 0, 0).getRGB()); expected.setRGB(1, 0, new Color(0, 255, 0).getRGB()); expected.setRGB(2, 0, new Color(0, 0, 255).getRGB()); expected.setRGB(0, 1, new Color(255, 255, 0).getRGB()); expected.setRGB(1, 1, new Color(255, 255, 255).getRGB()); expected.setRGB(2, 1, new Color(0, 0, 0).getRGB()); assertImageDataEquals("Images differ from reference", expected, reader.read(0)); }
@Test public void testHandHotspotExplicitDestination() throws IOException { CURImageReader reader = createReader(); reader.setInput(getTestData().get(0).getInputStream()); BufferedImage image = reader.read(0); // Create dest image with same data, except properties... BufferedImage dest = new BufferedImage( image.getColorModel(), image.getRaster(), image.getColorModel().isAlphaPremultiplied(), null ); ImageReadParam param = new ImageReadParam(); param.setDestination(dest); assertHotSpot(getTestData().get(0), param, new Point(15, 15)); }
protected void assertReadWithSourceRegionParamEqualImage(final Rectangle r, final TestData data, final int imageIndex) throws IOException { ImageReader reader = createReader(); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam();
@Test public void testRGBAVsReference() throws IOException { ImageReader reader = createReader(); TestData data = new TestData(getClassLoaderResource("/pam/rgba.pam"), new Dimension(4, 2)); reader.setInput(data.getInputStream()); BufferedImage expected = new BufferedImage(4, 2, BufferedImage.TYPE_4BYTE_ABGR); expected.setRGB(0, 0, new Color(0, 0, 255).getRGB()); expected.setRGB(1, 0, new Color(0, 255, 0).getRGB()); expected.setRGB(2, 0, new Color(255, 0, 0).getRGB()); expected.setRGB(3, 0, new Color(255, 255, 255).getRGB()); expected.setRGB(0, 1, new Color(0, 0, 255, 127).getRGB()); expected.setRGB(1, 1, new Color(0, 255, 0, 127).getRGB()); expected.setRGB(2, 1, new Color(255, 0, 0, 127).getRGB()); expected.setRGB(3, 1, new Color(255, 255, 255, 127).getRGB()); assertImageDataEquals("Images differ from reference", expected, reader.read(0)); }
@Test public void testGetRawImageTypeCMYK() throws IOException { // Make sure images that are encoded as CMYK (not YCCK) actually return non-null for getRawImageType JPEGImageReader reader = createReader(); List<TestData> cmykData = Arrays.asList( new TestData(getClassLoaderResource("/jpeg/cmyk-sample.jpg"), new Dimension(100, 100)), new TestData(getClassLoaderResource("/jpeg/cmyk-sample-no-icc.jpg"), new Dimension(100, 100)) ); for (TestData data : cmykData) { reader.setInput(data.getInputStream()); ImageTypeSpecifier rawType = reader.getRawImageType(0); assertNotNull("No raw type for " + data, rawType); } }
@Test public void testNotBadCaching() throws IOException { T reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); BufferedImage one = reader.read(0); BufferedImage two = reader.read(0); assertNotSame("Multiple reads return same (mutable) image", one, two); one.setRGB(0, 0, Color.BLUE.getRGB()); two.setRGB(0, 0, Color.RED.getRGB()); assertTrue(one.getRGB(0, 0) != two.getRGB(0, 0)); reader.dispose(); }
@Test public void testXVThumbNotIncorrectlyRecognizedAsPAM() throws IOException { ImageReaderSpi provider = createProvider(); assertTrue("Should recognize PAM format", provider.canDecodeInput(new TestData(getClassLoaderResource("/pam/rgba.pam"), new Dimension()).getInputStream())); // Sanity assertFalse("Should distinguish xv-thumbs from PAM format", provider.canDecodeInput(new TestData(getClassLoaderResource("/xv-thumb/xv-thumb.xvt"), new Dimension()).getInputStream())); } }
@Test public void testAddIIOReadProgressListenerCallbacksPNG() { ImageReader reader = createReader(); TestData data = new TestData(getClassLoaderResource("/bmpsuite/q/rgb24png.bmp"), new Dimension(127, 64)); reader.setInput(data.getInputStream()); IIOReadProgressListener listener = mock(IIOReadProgressListener.class); reader.addIIOReadProgressListener(listener); try { reader.read(0); } catch (IOException e) { fail("Could not read image"); } // At least imageStarted and imageComplete, plus any number of imageProgress InOrder ordered = inOrder(listener); ordered.verify(listener).imageStarted(reader, 0); ordered.verify(listener, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listener).imageComplete(reader); }
@Test public void testThumbnailReading() throws IOException { PSDImageReader imageReader = createReader(); try (ImageInputStream stream = getTestData().get(0).getInputStream()) { imageReader.setInput(stream); assertEquals(1, imageReader.getNumThumbnails(0)); BufferedImage thumbnail = imageReader.readThumbnail(0, 0); assertNotNull(thumbnail); assertEquals(128, thumbnail.getWidth()); assertEquals(96, thumbnail.getHeight()); } }
@Test public void testAddIIOReadProgressListenerCallbacksJPEG() { ImageReader reader = createReader(); TestData data = new TestData(getClassLoaderResource("/bmpsuite/q/rgb24jpeg.bmp"), new Dimension(127, 64)); reader.setInput(data.getInputStream()); IIOReadProgressListener listener = mock(IIOReadProgressListener.class); reader.addIIOReadProgressListener(listener); try { reader.read(0); } catch (IOException e) { fail("Could not read image"); } // At least imageStarted and imageComplete, plus any number of imageProgress InOrder ordered = inOrder(listener); ordered.verify(listener).imageStarted(reader, 0); ordered.verify(listener, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listener).imageComplete(reader); }
@Test public void testEmbeddedBaseURI() throws URISyntaxException, IOException { URL resource = getClassLoaderResource("/svg/barChart.svg"); SVGImageReader reader = createReader(); TestData data = new TestData(resource, (Dimension) null); try (ImageInputStream stream = data.getInputStream()) { reader.setInput(stream); IIOReadWarningListener listener = mock(IIOReadWarningListener.class); reader.addIIOReadWarningListener(listener); SVGReadParam param = reader.getDefaultReadParam(); param.setBaseURI(resource.toURI().toASCIIString()); BufferedImage image = reader.read(0, param); assertNotNull(image); assertEquals(450, image.getWidth()); assertEquals(500, image.getHeight()); // CSS and embedded resources all go! verifyZeroInteractions(listener); } finally { reader.dispose(); } }
@Test public void testDisposeAfterRead() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); reader.dispose(); // Just pass with no exceptions }
@Test public void testThumbnailReadListeners() throws IOException { PSDImageReader imageReader = createReader(); try (ImageInputStream stream = getTestData().get(0).getInputStream()) { imageReader.setInput(stream); final List<Object> seqeunce = new ArrayList<>(); imageReader.addIIOReadProgressListener(new ProgressListenerBase() { private float mLastPercentageDone = 0; @Override public void thumbnailStarted(final ImageReader pSource, final int pImageIndex, final int pThumbnailIndex) { seqeunce.add("started"); } @Override public void thumbnailComplete(final ImageReader pSource) { seqeunce.add("complete"); } @Override public void thumbnailProgress(final ImageReader pSource, final float pPercentageDone) { // Optional assertTrue("Listener invoked out of sequence", seqeunce.size() == 1); assertTrue(pPercentageDone >= mLastPercentageDone); } }); BufferedImage thumbnail = imageReader.readThumbnail(0, 0); assertNotNull(thumbnail); assertEquals("Listeners not invoked", 2, seqeunce.size()); assertEquals("started", seqeunce.get(0)); assertEquals("complete", seqeunce.get(1)); } }
@Test public void testAddIIOReadProgressListenerCallbacks() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); IIOReadProgressListener listener = mock(IIOReadProgressListener.class); reader.addIIOReadProgressListener(listener); try { reader.read(0); } catch (IOException e) { fail("Could not read image"); } // At least imageStarted and imageComplete, plus any number of imageProgress InOrder ordered = inOrder(listener); ordered.verify(listener).imageStarted(reader, 0); ordered.verify(listener, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listener).imageComplete(reader); reader.dispose(); }
@Test public void testImageTypesLayers() throws IOException { PSDImageReader imageReader = createReader(); try (ImageInputStream stream = getTestData().get(3).getInputStream()) { imageReader.setInput(stream); int numImages = imageReader.getNumImages(true); for (int i = 0; i < numImages; i++) { ImageTypeSpecifier rawType = imageReader.getRawImageType(i); assertNotNull(rawType); Iterator<ImageTypeSpecifier> types = imageReader.getImageTypes(i); assertNotNull(types); assertTrue(types.hasNext()); boolean found = false; while (types.hasNext()) { ImageTypeSpecifier type = types.next(); if (!found && (rawType == type || rawType.equals(type))) { found = true; } } assertTrue("RAW image type not in type iterator", found); } } }
@Test public void testReRead() throws IOException { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream(), false); // Explicitly allow repositioning, even though it's the default BufferedImage first = reader.read(0); assertNotNull(first); BufferedImage second = reader.read(0); assertNotNull(second); // TODO: These images should be exactly the same, but there's no equals for images assertEquals(first.getType(), second.getType()); assertEquals(first.getWidth(), second.getWidth()); assertEquals(first.getHeight(), second.getHeight()); reader.dispose(); }
@Test public void testReadLayers() throws IOException { PSDImageReader imageReader = createReader(); try (ImageInputStream stream = getTestData().get(3).getInputStream()) { imageReader.setInput(stream); int numImages = imageReader.getNumImages(true); assertEquals(3, numImages); for (int i = 0; i < numImages; i++) { BufferedImage image = imageReader.read(i); assertNotNull(image); // Make sure layers are correct size assertEquals(image.getWidth(), imageReader.getWidth(i)); assertEquals(image.getHeight(), imageReader.getHeight(i)); } } }
@Test public void testMultipleAddIIOReadProgressListenerCallbacks() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); IIOReadProgressListener listener = mock(IIOReadProgressListener.class); IIOReadProgressListener listenerToo = mock(IIOReadProgressListener.class); IIOReadProgressListener listenerThree = mock(IIOReadProgressListener.class); reader.addIIOReadProgressListener(listener); reader.addIIOReadProgressListener(listenerToo); reader.addIIOReadProgressListener(listenerThree); try { reader.read(0); } catch (IOException e) { fail("Could not read image"); } // At least imageStarted and imageComplete, plus any number of imageProgress InOrder ordered = inOrder(listener, listenerToo, listenerThree); ordered.verify(listener).imageStarted(reader, 0); ordered.verify(listenerToo).imageStarted(reader, 0); ordered.verify(listenerThree).imageStarted(reader, 0); ordered.verify(listener, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listenerThree, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listener).imageComplete(reader); ordered.verify(listenerToo).imageComplete(reader); ordered.verify(listenerThree).imageComplete(reader); reader.dispose(); }
@Test public void testEmbeddedNoBaseURI() throws IOException { // With no base URI, we will throw an exception, about the missing embedded resource URL resource = getClassLoaderResource("/svg/barChart.svg"); SVGImageReader reader = createReader(); TestData data = new TestData(resource, (Dimension) null); try (ImageInputStream stream = data.getInputStream()) { reader.setInput(stream); BufferedImage image = reader.read(0); assertNotNull(image); assertEquals(450, image.getWidth()); assertEquals(500, image.getHeight()); } catch (IIOException allowed) { assertTrue(allowed.getMessage().contains("batikLogo.svg")); // The embedded resource we don't find } finally { reader.dispose(); } } }
@Test public void testAbort() { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); IIOReadProgressListener listener = mock(IIOReadProgressListener.class, "Progress1"); reader.addIIOReadProgressListener(listener); IIOReadProgressListener listenerToo = mock(IIOReadProgressListener.class, "Progress2"); reader.addIIOReadProgressListener(listenerToo); // Create a listener that just makes the reader abort immediately... IIOReadProgressListener abortingListener = mock(IIOReadProgressListener.class, "Aborter"); Answer<Void> abort = new Answer<Void>() { public Void answer(InvocationOnMock invocation) throws Throwable { reader.abort(); return null; } }; doAnswer(abort).when(abortingListener).imageStarted(any(ImageReader.class), anyInt()); doAnswer(abort).when(abortingListener).imageProgress(any(ImageReader.class), anyInt()); reader.addIIOReadProgressListener(abortingListener); try { reader.read(0); } catch (IOException e) { failBecause("Image could not be read", e); } verify(listener).readAborted(reader); verify(listenerToo).readAborted(reader); reader.dispose(); }