| /* |
| * Copyright (C) 2023, SAP SE and others |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Distribution License v. 1.0 which is available at |
| * https://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| package org.eclipse.jgit.util.io; |
| |
| import static org.junit.Assert.assertArrayEquals; |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertThrows; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.io.IOException; |
| import java.nio.ByteBuffer; |
| import java.util.Arrays; |
| |
| import org.eclipse.jgit.internal.JGitText; |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| public class ByteBufferInputStreamTest { |
| |
| private static final byte data[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, |
| 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; |
| |
| private ByteBuffer buf; |
| |
| private ByteBufferInputStream is; |
| |
| @Before |
| public void setup() { |
| buf = ByteBuffer.wrap(data); |
| is = new ByteBufferInputStream(buf); |
| } |
| |
| @After |
| public void tearDown() { |
| is.close(); |
| } |
| |
| @Test |
| public void testRead() throws IOException { |
| assertEquals(0x00, is.read()); |
| assertEquals(0x01, is.read()); |
| assertEquals(0x02, is.read()); |
| assertEquals(0x03, is.read()); |
| assertEquals(0x04, is.read()); |
| assertEquals(0x05, is.read()); |
| assertEquals(0x06, is.read()); |
| assertEquals(0x07, is.read()); |
| assertEquals(0x08, is.read()); |
| assertEquals(0x09, is.read()); |
| assertEquals(0x0A, is.read()); |
| assertEquals(0x0B, is.read()); |
| assertEquals(0x0C, is.read()); |
| assertEquals(0x0D, is.read()); |
| assertEquals(0x0E, is.read()); |
| assertEquals(0x0F, is.read()); |
| assertEquals(-1, is.read()); |
| } |
| |
| @Test |
| public void testReadMultiple() throws IOException { |
| byte[] x = new byte[5]; |
| int n = is.read(x); |
| assertEquals(5, n); |
| assertArrayEquals(new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04 }, x); |
| } |
| |
| @Test |
| public void testReadMultipleOffset() throws IOException { |
| byte[] x = new byte[7]; |
| int n = is.read(x, 4, 3); |
| assertEquals(3, n); |
| assertArrayEquals( |
| new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02 }, |
| x); |
| } |
| |
| @Test |
| public void testReadAll() throws IOException { |
| byte[] x = is.readAllBytes(); |
| assertEquals(16, x.length); |
| assertArrayEquals(data, x); |
| } |
| |
| @Test |
| public void testMarkReset() throws IOException { |
| byte[] x = new byte[5]; |
| int n = is.read(x); |
| assertEquals(11, is.available()); |
| assertTrue(is.markSupported()); |
| is.mark(is.available()); |
| is.reset(); |
| byte[] y = new byte[5]; |
| int m = is.read(y); |
| assertEquals(n, m); |
| assertArrayEquals(new byte[] { 0x05, 0x06, 0x07, 0x08, 0x09 }, y); |
| } |
| |
| @Test |
| public void testClosed() { |
| is.close(); |
| Exception e = assertThrows(IOException.class, () -> is.read()); |
| assertEquals(JGitText.get().inputStreamClosed, e.getMessage()); |
| } |
| |
| @Test |
| public void testReadNBytes() throws IOException { |
| byte[] x = is.readNBytes(4); |
| assertArrayEquals(new byte[] { 0x00, 0x01, 0x02, 0x03 }, x); |
| } |
| |
| @Test |
| public void testReadNBytesOffset() throws IOException { |
| byte[] x = new byte[10]; |
| Arrays.fill(x, (byte) 0x0F); |
| is.readNBytes(x, 3, 4); |
| assertArrayEquals(new byte[] { 0x0F, 0x0F, 0x0F, 0x00, 0x01, 0x02, 0x03, |
| 0x0F, 0x0F, 0x0F }, x); |
| } |
| |
| @Test |
| public void testRead0() throws IOException { |
| byte[] x = new byte[7]; |
| int n = is.read(x, 4, 0); |
| assertEquals(0, n); |
| |
| is.readAllBytes(); |
| n = is.read(x, 4, 3); |
| assertEquals(-1, n); |
| } |
| |
| @Test |
| public void testSkip() throws IOException { |
| assertEquals(15, is.skip(15)); |
| assertEquals(0x0F, is.read()); |
| assertEquals(-1, is.read()); |
| } |
| |
| @Test |
| public void testSkip0() throws IOException { |
| assertEquals(0, is.skip(0)); |
| assertEquals(0x00, is.read()); |
| } |
| } |