From 08282ea09d7c2709bcee26844b285aa014779e3b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 28 Oct 2020 17:07:14 +0100 Subject: [PATCH] Minor improvements and better test cases. --- .../stream/ByteArrayImageInputStreamSpi.java | 3 +- .../stream/URLImageInputStreamSpi.java | 5 ++ .../imageio/spi/ProviderInfoTest.java | 2 +- .../ByteArrayImageInputStreamSpiTest.java | 16 ++++ .../stream/ImageInputStreamSpiTest.java | 81 +++++++++++++++++++ .../stream/StreamProviderInfoTest.java | 23 ++++++ .../stream/URLImageInputStreamSpiTest.java | 16 ++++ .../src/test/resources/empty-stream.txt | 0 8 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpiTest.java create mode 100644 imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ImageInputStreamSpiTest.java create mode 100644 imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/StreamProviderInfoTest.java create mode 100644 imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpiTest.java create mode 100644 imageio/imageio-core/src/test/resources/empty-stream.txt diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java index ce8afd5b..29655d1c 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java @@ -35,7 +35,6 @@ import com.twelvemonkeys.imageio.spi.ProviderInfo; import javax.imageio.spi.ImageInputStreamSpi; import javax.imageio.stream.ImageInputStream; import java.io.File; -import java.io.IOException; import java.util.Locale; /** @@ -56,7 +55,7 @@ public class ByteArrayImageInputStreamSpi extends ImageInputStreamSpi { super(providerInfo.getVendorName(), providerInfo.getVersion(), byte[].class); } - public ImageInputStream createInputStreamInstance(Object pInput, boolean pUseCache, File pCacheDir) throws IOException { + public ImageInputStream createInputStreamInstance(Object pInput, boolean pUseCache, File pCacheDir) { if (pInput instanceof byte[]) { return new ByteArrayImageInputStream((byte[]) pInput); } diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java index 0a907c46..e0426b0a 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java @@ -114,6 +114,11 @@ public class URLImageInputStreamSpi extends ImageInputStreamSpi { } } + @Override + public boolean canUseCacheFile() { + return true; + } + public String getDescription(final Locale pLocale) { return "Service provider that instantiates an ImageInputStream from a URL"; } diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTest.java index 92350b29..4b4b4ca3 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTest.java @@ -45,7 +45,7 @@ import static org.junit.Assert.*; */ public class ProviderInfoTest { @Test - public void testCreateNorma() { + public void testCreateNormal() { new ProviderInfo(Package.getPackage("java.util")); } diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpiTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpiTest.java new file mode 100644 index 00000000..3b5242a4 --- /dev/null +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpiTest.java @@ -0,0 +1,16 @@ +package com.twelvemonkeys.imageio.stream; + +import javax.imageio.spi.ImageInputStreamSpi; + +public class ByteArrayImageInputStreamSpiTest extends ImageInputStreamSpiTest { + + @Override + protected ImageInputStreamSpi createProvider() { + return new ByteArrayImageInputStreamSpi(); + } + + @Override + protected byte[] createInput() { + return new byte[0]; + } +} \ No newline at end of file diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ImageInputStreamSpiTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ImageInputStreamSpiTest.java new file mode 100644 index 00000000..3845b9a8 --- /dev/null +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ImageInputStreamSpiTest.java @@ -0,0 +1,81 @@ +package com.twelvemonkeys.imageio.stream; + +import org.junit.Test; + +import javax.imageio.ImageIO; +import javax.imageio.spi.ImageInputStreamSpi; +import java.io.IOException; +import java.lang.reflect.ParameterizedType; +import java.util.Locale; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +abstract class ImageInputStreamSpiTest { + private final ImageInputStreamSpi provider = createProvider(); + + @SuppressWarnings("unchecked") + private final Class inputClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + + protected abstract ImageInputStreamSpi createProvider(); + + protected abstract T createInput(); + + @Test + public void testInputClass() { + assertEquals(inputClass, provider.getInputClass()); + } + + @Test + public void testVendorName() { + assertNotNull(provider.getVendorName()); + assertEquals("TwelveMonkeys", provider.getVendorName()); + } + + @Test + public void testVersion() { + assertNotNull(provider.getVersion()); + } + + @Test + public void testDescription() { + assertNotNull(provider.getDescription(null)); + assertNotNull(provider.getDescription(Locale.ENGLISH)); + } + + @Test(expected = IllegalArgumentException.class) + public void createNull() throws IOException { + provider.createInputStreamInstance(null); + } + + @Test(expected = IllegalArgumentException.class) + public void createNullCached() throws IOException { + provider.createInputStreamInstance(null, true, ImageIO.getCacheDirectory()); + } + + @Test(expected = IllegalArgumentException.class) + public void createCachedNullCache() throws IOException { + if (provider.canUseCacheFile() || provider.needsCacheFile()) { + provider.createInputStreamInstance(createInput(), true, null); + } + } + + @Test + public void create() throws IOException { + assertNotNull(provider.createInputStreamInstance(createInput())); + } + + @Test + public void createCached() throws IOException { + if (provider.canUseCacheFile()) { + assertNotNull(provider.createInputStreamInstance(createInput(), true, ImageIO.getCacheDirectory())); + } + } + + @Test + public void createNonCached() throws IOException { + if (!provider.needsCacheFile()) { + assertNotNull(provider.createInputStreamInstance(createInput(), false, ImageIO.getCacheDirectory())); + } + } +} diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/StreamProviderInfoTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/StreamProviderInfoTest.java new file mode 100644 index 00000000..ffa29e5a --- /dev/null +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/StreamProviderInfoTest.java @@ -0,0 +1,23 @@ +package com.twelvemonkeys.imageio.stream; + +import com.twelvemonkeys.imageio.spi.ProviderInfo; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class StreamProviderInfoTest { + private final ProviderInfo providerInfo = new StreamProviderInfo(); + + @Test + public void testVendorName() { + assertNotNull(providerInfo.getVendorName()); + assertEquals("TwelveMonkeys", providerInfo.getVendorName()); + } + + @Test + public void testVersion() { + assertNotNull(providerInfo.getVersion()); + } +} \ No newline at end of file diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpiTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpiTest.java new file mode 100644 index 00000000..51882f86 --- /dev/null +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpiTest.java @@ -0,0 +1,16 @@ +package com.twelvemonkeys.imageio.stream; + +import javax.imageio.spi.ImageInputStreamSpi; +import java.net.URL; + +public class URLImageInputStreamSpiTest extends ImageInputStreamSpiTest { + @Override + protected ImageInputStreamSpi createProvider() { + return new URLImageInputStreamSpi(); + } + + @Override + protected URL createInput() { + return getClass().getResource("/empty-stream.txt"); + } +} \ No newline at end of file diff --git a/imageio/imageio-core/src/test/resources/empty-stream.txt b/imageio/imageio-core/src/test/resources/empty-stream.txt new file mode 100644 index 00000000..e69de29b