@Test public void testFlushOnAdapterDoesNotMoveFlushedPositionInBacking() throws IOException { MemoryCacheImageOutputStream backing = new MemoryCacheImageOutputStream(new ByteArrayOutputStream()); IIOOutputStreamAdapter adapter = new IIOOutputStreamAdapter(backing); // Sanity check assertEquals(0, backing.getFlushedPosition()); // Write & flush adapter.write(0xCA); adapter.write(new byte[8]); adapter.write(0xFE); adapter.flush(); // Assertions assertEquals(10, backing.length()); assertEquals(10, backing.getStreamPosition()); assertEquals(0, backing.getFlushedPosition()); // Just make sure we can safely seek back to start and read data back backing.seek(0); assertEquals(0, backing.getStreamPosition()); // If this can be read, I think the contract of flush is also fulfilled (kind of) assertEquals(0xCA, backing.read()); assertEquals(8, backing.skipBytes(8)); assertEquals(0xFE, backing.read()); } }
/** * Writes the bits (if any) before to seek. * * <p>In the default {@link javax.imageio.stream.MemoryCacheImageOutputStream} implementation, * when we seek position the bits previously written by the {@link #writeBits(long, int)} method * are lost. This method overriding fix this issue.</p> */ @Override public void seek(final long pos) throws IOException { flushBits(); super.seek(pos); }
public void testReadAn() throws IllegalCeosFormatException, IOException { final String expected = "Kinkerlitzchen"; _ios.writeBytes(expected); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(expected, ceosReader.readAn(expected.length())); }
public void testReadFnWithLeadingZero() throws IllegalCeosFormatException, IOException { _ios.writeBytes(" 9.0060123"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(9.0060123, ceosReader.readFn(16), 1E-10); }
public void testReadFnWithTrailingZero() throws IllegalCeosFormatException, IOException { _ios.writeBytes(" 9.0060000"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(9.006, ceosReader.readFn(16), 1E-6); }
public void testReadEn() throws IllegalCeosFormatException, IOException { _ios.writeBytes(" 1.782000000000000E+04"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(17820, ceosReader.readEn(22), 1E-6); }
public void testReadB8() throws IOException, IllegalCeosFormatException { final byte[] bytes = new byte[]{0x00, 0x01, 0x00, 0x11, 0x00, 0x00, 0x1B, (byte) 0xBC}; _ios.write(bytes); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(281547991161788L, ceosReader.readB8()); }
public void testReadIn() throws IllegalCeosFormatException, IOException { _ios.writeBytes(" 7358"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(7358, ceosReader.readIn(6)); }
public void testWriteToStream() throws IOException { final TiffLong tiffLong = new TiffLong(_TIFFLONG_MAX); final MemoryCacheImageOutputStream stream = new MemoryCacheImageOutputStream(new ByteArrayOutputStream()); tiffLong.write(stream); assertEquals(4, stream.length()); stream.seek(0); assertEquals(0xffffffff, stream.readInt()); }
public void testReadB1() throws IOException, IllegalCeosFormatException { _ios.writeByte(122); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(122, ceosReader.readB1()); }
public void testReadGn() throws IllegalCeosFormatException, IOException { _ios.writeBytes("-1.06962770630708111E+01"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(-1.06962770630708111E+01, ceosReader.readGn(24), 1E-25); }
public void testReadB1GreatValue() throws IOException, IllegalCeosFormatException { _ios.writeByte(245); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(245, ceosReader.readB1()); }
public void testReadFnWithNegative() throws IllegalCeosFormatException, IOException { _ios.writeBytes(" -89.0060123"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(-89.0060123, ceosReader.readFn(16), 1E-10); }
public void testReadFnWithPositive() throws IllegalCeosFormatException, IOException { _ios.writeBytes(" 19.0060123"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(19.0060123, ceosReader.readFn(16), 1E-10); }
public void testWriteToStream() throws IOException { final TiffShort tiffShort = new TiffShort(_TIFFSHORT_MAX); final MemoryCacheImageOutputStream stream = new MemoryCacheImageOutputStream(new ByteArrayOutputStream()); tiffShort.write(stream); assertEquals(2, stream.length()); stream.seek(0); assertEquals((short) 0xffff, stream.readShort()); }
public void testWriteToStream() throws IOException { final long numerator = _TIFFRATIONAL_MAX; final long denominator = _TIFFRATIONAL_MAX - 3; final TiffRational tiffRational = new TiffRational(numerator, denominator); final MemoryCacheImageOutputStream stream = new MemoryCacheImageOutputStream(new ByteArrayOutputStream()); tiffRational.write(stream); assertEquals(8, stream.length()); stream.seek(0); assertEquals((int) numerator, stream.readInt()); assertEquals((int) denominator, stream.readInt()); }
public void testWrite_withOneProduct() throws Exception { final MemoryCacheImageOutputStream ios = new MemoryCacheImageOutputStream(new ByteArrayOutputStream()); _tiffHeader.write(ios); final long ifdSize = _tiffHeader.getIfdAt(0).getRequiredIfdSize(); final long valuesSize = _tiffHeader.getIfdAt(0).getRequiredReferencedValuesSize(); final long startIfd = TiffHeader.FIRST_IFD_OFFSET.getValue(); final long expectedStreamLength = startIfd + ifdSize + valuesSize; final long expectedNextIFDOffset = 0; assertEquals(expectedStreamLength, ios.length()); ios.seek(startIfd + ifdSize - 4); assertEquals(expectedNextIFDOffset, ios.readInt()); }
public void testReadI4() throws IllegalCeosFormatException, IOException { _ios.writeBytes("19730060"); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); assertEquals(1973, ceosReader.readI4()); assertEquals(60, ceosReader.readI4()); }
public void testReadB8Array() throws IOException, IllegalCeosFormatException { final long expected1 = 281547991161788L; final long expected2 = 1L; _ios.writeLong(expected1); _ios.writeLong(expected2); _ios.seek(0); final CeosFileReader ceosReader = new CeosFileReader(_ios); final long[] values = new long[2]; ceosReader.readB8(values); assertEquals(expected1, values[0]); assertEquals(expected2, values[1]); }
public void testWriteToStream_OneTiffShortValue() throws IOException { final TiffDirectoryEntry entry = new TiffDirectoryEntry(new TiffShort(232), new TiffShort(28)); final MemoryCacheImageOutputStream ios = new MemoryCacheImageOutputStream(new ByteArrayOutputStream()); entry.write(ios); assertEquals(12, ios.length()); ios.seek(0); assertEquals(232, ios.readShort()); assertEquals(TiffType.SHORT_TYPE, ios.readShort()); assertEquals(1, ios.readInt()); assertEquals(28, ios.readShort()); assertEquals(0, ios.readShort()); }