@Test public void testChangeOutputStream() throws IOException, SerializeException, DeserializeException { final Integer[] integers1 = new Integer[] {10, 20, 30, 42}; final Integer[] integers2 = new Integer[] {100, 200, 300, 420}; ByteArrayOutputStream byteOutputStream1 = new ByteArrayOutputStream(); ByteArrayOutputStream byteOutputStream2 = new ByteArrayOutputStream(); try (DataOutputStreamEx dataOutputStream = DataOutputStreamEx.create(byteOutputStream1, 30)) { for (Integer integer : integers1) { dataOutputStream.serialize(intSerializer(), integer, MAX_SIZE_127); } dataOutputStream.changeOutputStream(byteOutputStream2); for (Integer integer : integers2) { dataOutputStream.serialize(intSerializer(), integer, MAX_SIZE_127); } } ByteArrayInputStream byteInputStream1 = new ByteArrayInputStream(byteOutputStream1.toByteArray()); ByteArrayInputStream byteInputStream2 = new ByteArrayInputStream(byteOutputStream2.toByteArray()); try (DataInputStreamEx dataInputStream1 = DataInputStreamEx.create(byteInputStream1, 10); DataInputStreamEx dataInputStream2 = DataInputStreamEx.create(byteInputStream2, 10)) { for (Integer integer : integers1) { assertEquals(integer, dataInputStream1.deserialize(intSerializer())); } for (Integer integer : integers2) { assertEquals(integer, dataInputStream2.deserialize(intSerializer())); } assertTrue(dataInputStream1.isEndOfStream()); assertTrue(dataInputStream2.isEndOfStream()); } assertEquals(getPoolItemsString(), getCreatedItems(), getPoolItems()); }