Minor improvements and better test cases.

This commit is contained in:
Harald Kuhr 2020-10-28 17:07:14 +01:00
parent c04fed1aff
commit 08282ea09d
8 changed files with 143 additions and 3 deletions

View File

@ -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);
}

View File

@ -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";
}

View File

@ -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"));
}

View File

@ -0,0 +1,16 @@
package com.twelvemonkeys.imageio.stream;
import javax.imageio.spi.ImageInputStreamSpi;
public class ByteArrayImageInputStreamSpiTest extends ImageInputStreamSpiTest<byte[]> {
@Override
protected ImageInputStreamSpi createProvider() {
return new ByteArrayImageInputStreamSpi();
}
@Override
protected byte[] createInput() {
return new byte[0];
}
}

View File

@ -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<T> {
private final ImageInputStreamSpi provider = createProvider();
@SuppressWarnings("unchecked")
private final Class<T> inputClass = (Class<T>) ((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()));
}
}
}

View File

@ -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());
}
}

View File

@ -0,0 +1,16 @@
package com.twelvemonkeys.imageio.stream;
import javax.imageio.spi.ImageInputStreamSpi;
import java.net.URL;
public class URLImageInputStreamSpiTest extends ImageInputStreamSpiTest<URL> {
@Override
protected ImageInputStreamSpi createProvider() {
return new URLImageInputStreamSpi();
}
@Override
protected URL createInput() {
return getClass().getResource("/empty-stream.txt");
}
}