ImageInputStreamSpiTest.java
package com.twelvemonkeys.imageio.stream;
import javax.imageio.ImageIO;
import javax.imageio.spi.ImageInputStreamSpi;
import java.io.EOFException;
import java.io.IOException;
import java.lang.reflect.ParameterizedType;
import java.util.Locale;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
abstract class ImageInputStreamSpiTest<T> {
protected final ImageInputStreamSpi provider = createProvider();
@SuppressWarnings("unchecked")
protected final Class<T> inputClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
protected abstract ImageInputStreamSpi createProvider();
protected abstract T createInput() throws IOException;
@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
public void createNull() throws IOException {
assertThrows(IllegalArgumentException.class, () -> provider.createInputStreamInstance(null));
}
@Test
public void createNullCached() throws IOException {
assertThrows(IllegalArgumentException.class, () -> provider.createInputStreamInstance(null, true, ImageIO.getCacheDirectory()));
}
@Test
public void createCachedNullCache() throws IOException {
try {
provider.createInputStreamInstance(createInput(), true, null);
}
catch (IllegalArgumentException expected) {
// All good
assertFalse(provider.needsCacheFile());
}
}
@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()));
}
}
}