Search in sources :

Example 1 with AsynchronousByteChannel

use of java.nio.channels.AsynchronousByteChannel in project j2objc by google.

the class ChannelsTest method testInputStreamAsynchronousByteChannel.

public void testInputStreamAsynchronousByteChannel() throws Exception {
    AsynchronousByteChannel abc = mock(AsynchronousByteChannel.class);
    InputStream is = Channels.newInputStream(abc);
    Future<Integer> result = mock(Future.class);
    ArgumentCaptor<ByteBuffer> bbCaptor = ArgumentCaptor.forClass(ByteBuffer.class);
    final byte[] bytesRead = new byte[10];
    when(abc.read(bbCaptor.capture())).thenReturn(result);
    when(result.get()).thenAnswer(new Answer<Integer>() {

        public Integer answer(InvocationOnMock invocation) {
            ByteBuffer bb = bbCaptor.getValue();
            assertEquals(bytesRead.length, bb.remaining());
            // Write '7' bytes
            bb.put(new byte[] { 0, 1, 2, 3, 4, 5, 6 });
            return 7;
        }
    });
    assertEquals(7, is.read(bytesRead));
    // Only 7 bytes of data should be written into the buffer
    byte[] bytesExpected = new byte[] { 0, 1, 2, 3, 4, 5, 6, 0, 0, 0 };
    assertTrue(Arrays.equals(bytesExpected, bytesRead));
    Mockito.verify(abc).read(isA(ByteBuffer.class));
    Mockito.verify(result).get();
}
Also used : AsynchronousByteChannel(java.nio.channels.AsynchronousByteChannel) InputStream(java.io.InputStream) InvocationOnMock(org.mockito.invocation.InvocationOnMock) ByteBuffer(java.nio.ByteBuffer)

Example 2 with AsynchronousByteChannel

use of java.nio.channels.AsynchronousByteChannel in project j2objc by google.

the class ChannelsTest method testOutputStreamAsynchronousByteChannel.

public void testOutputStreamAsynchronousByteChannel() throws Exception {
    AsynchronousByteChannel abc = mock(AsynchronousByteChannel.class);
    OutputStream os = Channels.newOutputStream(abc);
    Future<Integer> result = mock(Future.class);
    ArgumentCaptor<ByteBuffer> bbCaptor = ArgumentCaptor.forClass(ByteBuffer.class);
    final byte[] data = "world".getBytes();
    when(abc.write(bbCaptor.capture())).thenReturn(result);
    when(result.get()).thenAnswer(new Answer<Integer>() {

        public Integer answer(InvocationOnMock invocation) {
            ByteBuffer bb = bbCaptor.getValue();
            assertEquals(data.length, bb.remaining());
            byte[] readData = new byte[data.length];
            // Read the whole thing
            bb.get(readData);
            assertTrue(Arrays.equals(data, readData));
            return data.length;
        }
    });
    os.write(data);
    Mockito.verify(abc).write(isA(ByteBuffer.class));
    Mockito.verify(result).get();
}
Also used : AsynchronousByteChannel(java.nio.channels.AsynchronousByteChannel) InvocationOnMock(org.mockito.invocation.InvocationOnMock) OutputStream(java.io.OutputStream) ByteBuffer(java.nio.ByteBuffer)

Example 3 with AsynchronousByteChannel

use of java.nio.channels.AsynchronousByteChannel in project redisson by redisson.

the class RedissonBinaryStreamTest method testAsyncReadWrite.

@Test
public void testAsyncReadWrite() throws ExecutionException, InterruptedException {
    RBinaryStream stream = redisson.getBinaryStream("test");
    AsynchronousByteChannel channel = stream.getAsynchronousChannel();
    ByteBuffer bb = ByteBuffer.wrap(new byte[] { 1, 2, 3, 4, 5, 6, 7 });
    channel.write(bb).get();
    AsynchronousByteChannel channel2 = stream.getAsynchronousChannel();
    ByteBuffer b = ByteBuffer.allocate(7);
    channel2.read(b).get();
    b.flip();
    assertThat(b).isEqualByComparingTo(bb);
}
Also used : RBinaryStream(org.redisson.api.RBinaryStream) AsynchronousByteChannel(java.nio.channels.AsynchronousByteChannel) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.jupiter.api.Test)

Aggregations

ByteBuffer (java.nio.ByteBuffer)3 AsynchronousByteChannel (java.nio.channels.AsynchronousByteChannel)3 InvocationOnMock (org.mockito.invocation.InvocationOnMock)2 InputStream (java.io.InputStream)1 OutputStream (java.io.OutputStream)1 Test (org.junit.jupiter.api.Test)1 RBinaryStream (org.redisson.api.RBinaryStream)1