@Test
public void testCopiedBuffer() {

    ByteBuf copied = copiedBuffer(ByteBuffer.allocateDirect(16));
    assertEquals(16, copied.capacity());
    copied.release();
    assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
            copiedBuffer(new byte[][] { new byte[] { 1, 2, 3 } }));
    assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
            copiedBuffer(new byte[] { 1 }, new byte[] { 2 }, new byte[] { 3 }));
    assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
            copiedBuffer(new ByteBuf[] { wrappedBuffer(new byte[] { 1, 2, 3 })}));
    assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
            copiedBuffer(wrappedBuffer(new byte[] { 1 }),
                    wrappedBuffer(new byte[] { 2 }), wrappedBuffer(new byte[] { 3 })));
    assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
            copiedBuffer(new ByteBuffer[] { ByteBuffer.wrap(new byte[] { 1, 2, 3 }) }));
    assertEqualsAndRelease(wrappedBuffer(new byte[] { 1, 2, 3 }),
            copiedBuffer(ByteBuffer.wrap(new byte[] { 1 }),
                    ByteBuffer.wrap(new byte[] { 2 }), ByteBuffer.wrap(new byte[] { 3 })));
}