@Test public void writeAll() throws IOException { MockSink mockSink = new MockSink(); BufferedSink bufferedSink = Okio.buffer(mockSink); bufferedSink.getBuffer().writeUtf8("abc"); assertEquals(3, bufferedSink.writeAll(new Buffer().writeUtf8("def"))); assertEquals(6, bufferedSink.getBuffer().size()); assertEquals("abcdef", bufferedSink.getBuffer().readUtf8(6)); mockSink.assertLog(); // No writes. }
@Test public void writeAllExhausted() throws IOException { MockSink mockSink = new MockSink(); BufferedSink bufferedSink = Okio.buffer(mockSink); assertEquals(0, bufferedSink.writeAll(new Buffer())); assertEquals(0, bufferedSink.getBuffer().size()); mockSink.assertLog(); // No writes. }
@Test public void bufferedSinkEmitMultipleSegments() throws IOException { Buffer sink = new Buffer(); BufferedSink bufferedSink = Okio.buffer((Sink) sink); bufferedSink.writeUtf8(repeat('a', SEGMENT_SIZE * 4 - 1)); assertEquals(SEGMENT_SIZE * 3, sink.size()); assertEquals(SEGMENT_SIZE - 1, bufferedSink.getBuffer().size()); }
@Test public void bufferedSinkFlush() throws IOException { Buffer sink = new Buffer(); BufferedSink bufferedSink = Okio.buffer((Sink) sink); bufferedSink.writeByte('a'); assertEquals(0, sink.size()); bufferedSink.flush(); assertEquals(0, bufferedSink.getBuffer().size()); assertEquals(1, sink.size()); }
@Test public void bufferedSinkEmitsTailWhenItIsComplete() throws IOException { Buffer sink = new Buffer(); BufferedSink bufferedSink = Okio.buffer((Sink) sink); bufferedSink.writeUtf8(repeat('a', SEGMENT_SIZE - 1)); assertEquals(0, sink.size()); bufferedSink.writeByte(0); assertEquals(SEGMENT_SIZE, sink.size()); assertEquals(0, bufferedSink.getBuffer().size()); }