Refactored some stream classes and added PositionalInputStream

This commit is contained in:
Ziver Koc 2021-08-26 22:45:24 +02:00
parent 946f5f5133
commit 5771133792
7 changed files with 290 additions and 68 deletions

View file

@ -0,0 +1,75 @@
package zutil.io;
import org.junit.Test;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
public class PositionalInputStreamTest {
@Test
public void read() throws IOException {
PositionalInputStream in = new PositionalInputStream(new StringInputStream("hello"));
assertEquals(0, in.getPosition());
assertEquals('h', (char) in.read());
assertEquals(1, in.getPosition());
assertEquals('e', (char) in.read());
assertEquals(2, in.getPosition());
assertEquals('l', (char) in.read());
assertEquals(3, in.getPosition());
assertEquals('l', (char) in.read());
assertEquals(4, in.getPosition());
assertEquals('o', (char) in.read());
assertEquals(5, in.getPosition());
assertEquals(-1, in.read());
assertEquals(5, in.getPosition());
assertEquals(-1, in.read());
assertEquals(5, in.getPosition());
}
@Test
public void readArray() throws IOException {
PositionalInputStream in = new PositionalInputStream(new StringInputStream("hello world"));
byte[] buffer = new byte[20];
assertEquals(5, in.read(buffer, 0, 5));
assertEquals("hello", new String(buffer, 0, 5));
assertEquals(5, in.getPosition());
assertEquals(' ', (char) in.read());
assertEquals(6, in.getPosition());
assertEquals(5, in.read(buffer));
assertEquals("world", new String(buffer, 0, 5));
assertEquals(11, in.getPosition());
assertEquals(-1, in.read());
assertEquals(11, in.getPosition());
}
@Test
public void skip() throws IOException {
PositionalInputStream in = new PositionalInputStream(new StringInputStream("hello world"));
assertEquals(5, in.skip(5));
assertEquals(5, in.getPosition());
assertEquals(6, in.skip(20));
assertEquals(11, in.getPosition());
}
@Test
public void mark() throws IOException {
PositionalInputStream in = new PositionalInputStream(new StringInputStream("hello world"));
in.mark(20);
assertEquals(6, in.skip(6));
assertEquals(6, in.getPosition());
in.reset();
assertEquals(0, in.getPosition());
assertEquals('h', (char) in.read());
assertEquals(1, in.getPosition());
}
}

View file

@ -0,0 +1,58 @@
package zutil.io;
import org.junit.Test;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
public class StringInputStreamTest {
@Test
public void read() throws IOException {
StringInputStream in = new StringInputStream("hello");
assertEquals('h', (char) in.read());
assertEquals('e', (char) in.read());
assertEquals('l', (char) in.read());
assertEquals('l', (char) in.read());
assertEquals('o', (char) in.read());
assertEquals(-1, in.read());
assertEquals(-1, in.read());
}
@Test
public void readArray() throws IOException {
StringInputStream in = new StringInputStream("hello world");
byte[] buffer = new byte[20];
assertEquals(5, in.read(buffer, 0, 5));
assertEquals("hello", new String(buffer, 0, 5));
assertEquals(' ', (char) in.read());
assertEquals(5, in.read(buffer));
assertEquals("world", new String(buffer, 0, 5));
assertEquals(-1, in.read());
}
@Test
public void skip() {
StringInputStream in = new StringInputStream("hello world");
assertEquals(5, in.skip(5));
assertEquals(6, in.skip(20));
}
@Test
public void mark() throws IOException {
StringInputStream in = new StringInputStream("hello world");
in.mark(20);
assertEquals(6, in.skip(6));
in.reset();
assertEquals('h', (char) in.read());
}
}