@Test
  public void testCompact() throws Exception {
    DynamicByteBuffer readBuffer = DynamicByteBuffer.allocate(512);

    byte[] bytes = new byte[521];
    DynamicByteBuffer data = DynamicByteBuffer.wrap(bytes);
    readBuffer.putBuffer(data);
    readBuffer.limit(data.position());
    int numberOfBytesToBeCopiedDuringCompact = readBuffer.remaining();
    readBuffer.compact(); // compact the read buffer
    Assert.assertEquals(numberOfBytesToBeCopiedDuringCompact, readBuffer.position());

    byte[] bytes1 = new byte[10];
    DynamicByteBuffer data1 = DynamicByteBuffer.wrap(bytes1);

    readBuffer.putBuffer(data1);
    readBuffer.limit(data1.position());

    numberOfBytesToBeCopiedDuringCompact = readBuffer.remaining();
    readBuffer.compact(); // compact the read buffer
    Assert.assertEquals(numberOfBytesToBeCopiedDuringCompact, readBuffer.position());

    readBuffer.position(10);
    numberOfBytesToBeCopiedDuringCompact = readBuffer.remaining();
    readBuffer.compact();
    Assert.assertEquals(numberOfBytesToBeCopiedDuringCompact, readBuffer.position());
  }
  @Test
  public void testBuffers() throws Exception {
    // tests reallocation of buffer automatically.
    String test1 = "Test1";
    String test2 = "Test2";
    DynamicByteBuffer buf1 = DynamicByteBuffer.wrap(test1.getBytes());
    DynamicByteBuffer buf2 = DynamicByteBuffer.wrap(test2.getBytes());
    buf1.get();
    buf1.get();

    int p = buf1.position();
    buf1.skip(buf1.remaining());
    buf1.putBuffer(buf2);
    buf1.flip();
    buf1.position(p);
    buf1 = buf1.slice();

    // TODO: should test actual contents of these buffers
    assertEquals(8, buf1.remaining());
  }
 @Test
 public void testGetAndSetSegment() throws Exception {
   // tests reallocation of buffer automatically.
   byte[] source = new byte[] {(byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6};
   DynamicByteBuffer buf = DynamicByteBuffer.allocate(2);
   buf.put(source, 1, 4); // put 2,3,4,5 into buffer
   buf.flip();
   assertEquals(4, buf.remaining());
   byte[] dest = new byte[3];
   buf.get(dest, 1, 2); // get 3,4 into dest, start position at 1
   assertEquals((byte) 0, dest[0]);
   assertEquals((byte) 2, dest[1]);
   assertEquals((byte) 3, dest[2]);
 }