#431: Clean-up + added test

This commit is contained in:
Harald Kuhr 2018-08-18 13:12:54 +02:00
parent 2235f6c911
commit 4afa934251
2 changed files with 20 additions and 4 deletions

View File

@ -70,9 +70,8 @@ public final class PICTImageReaderSpi extends ImageReaderSpiBase {
// Skip header 512 bytes for file-based streams
stream.reset();
// If we don't mark again here, the reset call in the finally block will:
// A) do nothing
// B) eat marks created in the stream previously
// We need to set mark again, to make sure the reset call in
// the finally block will not consume existing marks
stream.mark();
skipNullHeader(stream);
@ -118,7 +117,7 @@ public final class PICTImageReaderSpi extends ImageReaderSpiBase {
return (magic & 0xffff0000) == PICT.MAGIC_V1 || magic == PICT.MAGIC_V2;
}
public ImageReader createReaderInstance(final Object pExtension) throws IOException {
public ImageReader createReaderInstance(final Object pExtension) {
return new PICTImageReader(this);
}

View File

@ -8,6 +8,7 @@ import org.junit.Test;
import javax.imageio.spi.IIORegistry;
import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.stream.ImageInputStream;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
@ -15,6 +16,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
/**
@ -91,6 +93,21 @@ public class PICTImageReaderTest extends ImageReaderAbstractTest<PICTImageReader
super.testReadWithSubsampleParamPixels();
}
@Test
public void testProviderShouldNotConsumeExistingMarks() throws IOException {
try (ImageInputStream stream = new ByteArrayImageInputStream(new byte[1024])) {
stream.seek(42);
stream.mark();
stream.seek(123);
sProvider.canDecodeInput(stream);
assertEquals(123, stream.getStreamPosition());
stream.reset();
assertEquals(42, stream.getStreamPosition());
}
}
// Regression tests
@Test