@Test @Ignore("Known issue: Subsampled reading not supported") @Override public void testReadWithSubsampleParamPixels() throws IOException { super.testReadWithSubsampleParamPixels(); }
protected void assertProviderInstalledForName(final String pFormat, final Class<? extends ImageReader> pReaderClass) { assertProviderInstalled0(pFormat.toUpperCase(), pReaderClass, ImageIO.getImageReadersByFormatName(pFormat.toUpperCase())); assertProviderInstalled0(pFormat.toLowerCase(), pReaderClass, ImageIO.getImageReadersByFormatName(pFormat.toLowerCase())); }
@Test public void testProviderInstalledForMIMETypes() { Class<? extends ImageReader> readerClass = getReaderClass(); for (String type : getMIMETypes()) { assertProviderInstalledForMIMEType(type, readerClass); } }
@Test public void testProviderInstalledForNames() { Class<? extends ImageReader> readerClass = getReaderClass(); for (String name : getFormatNames()) { assertProviderInstalledForName(name, readerClass); } }
@Test public void testProviderInstalledForSuffixes() { Class<? extends ImageReader> readerClass = getReaderClass(); for (String suffix : getSuffixes()) { assertProviderInstalledForSuffix(suffix, readerClass); } }
@Test public void testReadWithSubsampleParamPixels() throws IOException { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); BufferedImage image = null; BufferedImage subsampled = null; try { image = reader.read(0, param); param.setSourceSubsampling(2, 2, 0, 0); subsampled = reader.read(0, param); } catch (IOException e) { failBecause("Image could not be read", e); } assertSubsampledImageDataEquals("Subsampled image data does not match expected", image, subsampled, param); reader.dispose(); }
@Test public void testSetDestinationIllegal() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); List<ImageTypeSpecifier> illegalTypes = createIllegalTypes(reader.getImageTypes(0)); destination.getType() == BufferedImage.TYPE_BYTE_INDEXED) && message.contains("indexcolormodel")))) { failBecause( "Wrong message: " + message + " for type " + destination.getType(), expected );
@Test 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 | IllegalArgumentException 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") || message.contains("num source & dest bands differ"))) { // Allow this to bubble up, due to a bug in the Sun PNGImageReader throw expected; } } } reader.dispose(); }
@Test public void testGetTypeSpecifiers() throws IOException { final ImageReader reader = createReader(); for (TestData data : getTestData()) { reader.setInput(data.getInputStream()); ImageTypeSpecifier rawType = reader.getRawImageType(0); if (rawType == null && allowsNullRawImageType()) { continue; } 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); } reader.dispose(); }
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(); assertEquals("Read image has wrong width: " + image.getWidth(), r.width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), r.height, image.getHeight()); assertImageDataEquals("Images differ", roi, image);
@Test public void testReadWithSourceRegionParamEqualImage() throws IOException { // Default invocation assertReadWithSourceRegionParamEqualImage(new Rectangle(3, 3, 9, 9), getTestData().get(0), 0); }
@Test public void testWriteRead() throws IOException { ImageWriter writer = createImageWriter(); ImageReader reader = ImageIO.getImageReader(writer); assumeNotNull(reader); for (RenderedImage testData : getTestData()) { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) { writer.setOutput(stream); writer.write(drawSomething((BufferedImage) testData)); } try (ImageInputStream stream = ImageIO.createImageInputStream(new ByteArrayInputStream(buffer.toByteArray()))) { reader.setInput(stream); BufferedImage image = reader.read(0); assertNotNull(image); assertImageDataEquals("Images differ for " + testData, (BufferedImage) testData, image); } } } }
@Test public void testReadWithSubsampleParamPixels() throws IOException { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); BufferedImage image = null; BufferedImage subsampled = null; try { image = reader.read(0, param); param.setSourceSubsampling(2, 2, 0, 0); subsampled = reader.read(0, param); } catch (IOException e) { failBecause("Image could not be read", e); } assertSubsampledImageDataEquals("Subsampled image data does not match expected", image, subsampled, param); }
@Test public void testSetDestinationIllegal() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); List<ImageTypeSpecifier> illegalTypes = createIllegalTypes(reader.getImageTypes(0)); destination.getType() == BufferedImage.TYPE_BYTE_INDEXED) && message.contains("indexcolormodel")))) { failBecause( "Wrong message: " + message + " for type " + destination.getType(), expected );
@Test public void testProviderInstalledForNames() { Class<? extends ImageReader> readerClass = getReaderClass(); for (String name : getFormatNames()) { assertProviderInstalledForName(name, readerClass); } }
@Test public void testProviderInstalledForSuffixes() { Class<? extends ImageReader> readerClass = getReaderClass(); for (String suffix : getSuffixes()) { assertProviderInstalledForSuffix(suffix, readerClass); } }
@Test 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 | IllegalArgumentException 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; } } } }
@Test public void testGetTypeSpecifiers() throws IOException { final ImageReader reader = createReader(); for (TestData data : getTestData()) { reader.setInput(data.getInputStream()); ImageTypeSpecifier rawType = reader.getRawImageType(0); if (rawType == null && allowsNullRawImageType()) { continue; } 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); } }
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(); assertEquals("Read image has wrong width: " + image.getWidth(), r.width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), r.height, image.getHeight()); assertImageDataEquals("Images differ", roi, image);
@Test public void testReadWithSourceRegionParamEqualImage() throws IOException { // Default invocation assertReadWithSourceRegionParamEqualImage(new Rectangle(3, 3, 9, 9), getTestData().get(0), 0); }