@Test
public void testUnmodifiableBuffer() throws Exception {

    ByteBuf buf = unmodifiableBuffer(buffer(16));
    try {
        buf.discardReadBytes();
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setByte(0, (byte) 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setBytes(0, EMPTY_BUFFER, 0, 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setBytes(0, EMPTY_BYTES, 0, 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setBytes(0, ByteBuffer.allocate(0));
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setShort(0, (short) 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setMedium(0, 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setInt(0, 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    try {
        buf.setLong(0, 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    InputStream inputStream = Mockito.mock(InputStream.class);
    try {
        buf.setBytes(0, inputStream, 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    Mockito.verifyZeroInteractions(inputStream);
    ScatteringByteChannel scatteringByteChannel = Mockito.mock(ScatteringByteChannel.class);
    try {
        buf.setBytes(0, scatteringByteChannel, 0);
        fail();
    } catch (UnsupportedOperationException e) {
        // Expected
    }
    Mockito.verifyZeroInteractions(scatteringByteChannel);
    buf.release();
}