@Test
  public void testRead() {
    UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(_BUFFER);

    for (int i = 0; i < _SIZE; i++) {
      Assert.assertEquals(i, unsyncByteArrayInputStream.read());
    }

    Assert.assertEquals(-1, unsyncByteArrayInputStream.read());
  }
  @Test
  public void testConstructor() {
    UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(_BUFFER);

    Assert.assertEquals(_SIZE, unsyncByteArrayInputStream.available());

    unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(_BUFFER, _SIZE / 2, _SIZE / 2);

    Assert.assertEquals(_SIZE / 2, unsyncByteArrayInputStream.available());
  }
  @Test
  public void testSkip() {
    UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(_BUFFER);

    long size = _SIZE * 2 / 3;

    Assert.assertEquals(size, unsyncByteArrayInputStream.skip(size));
    Assert.assertEquals(_SIZE - size, unsyncByteArrayInputStream.available());
    Assert.assertEquals(_SIZE - size, unsyncByteArrayInputStream.skip(size));
    Assert.assertEquals(0, unsyncByteArrayInputStream.available());
  }
  @Test
  public void testMarkAndReset() {
    UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(_BUFFER);

    Assert.assertEquals(0, unsyncByteArrayInputStream.read());
    Assert.assertEquals(1, unsyncByteArrayInputStream.read());

    unsyncByteArrayInputStream.mark(-1);

    Assert.assertEquals(_SIZE - 2, unsyncByteArrayInputStream.available());
    Assert.assertEquals(2, unsyncByteArrayInputStream.read());
    Assert.assertEquals(3, unsyncByteArrayInputStream.read());
    Assert.assertEquals(_SIZE - 4, unsyncByteArrayInputStream.available());

    unsyncByteArrayInputStream.reset();

    Assert.assertEquals(_SIZE - 2, unsyncByteArrayInputStream.available());
    Assert.assertEquals(2, unsyncByteArrayInputStream.read());
    Assert.assertEquals(3, unsyncByteArrayInputStream.read());

    Assert.assertEquals(_SIZE - 4, unsyncByteArrayInputStream.available());
  }
  @Test
  public void testBlockRead() {
    UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(_BUFFER);

    int size = _SIZE * 2 / 3;

    byte[] buffer = new byte[size];

    int read = unsyncByteArrayInputStream.read(buffer);

    Assert.assertEquals(size, read);

    for (int i = 0; i < read; i++) {
      Assert.assertEquals(i, buffer[i]);
    }

    read = unsyncByteArrayInputStream.read(buffer);

    Assert.assertEquals(_SIZE - size, read);

    for (int i = 0; i < read; i++) {
      Assert.assertEquals(i + size, buffer[i]);
    }
  }
  @Test
  public void testMarkSupported() {
    UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(_BUFFER);

    Assert.assertTrue(unsyncByteArrayInputStream.markSupported());
  }