ByteBuffer { public byte remove() throws BufferIsEmptyException { if (size() == 0) { throw new BufferIsEmptyException("Buffer is empty and no bytes available to remove"); } byte b = this.buffer[this.currentReadPosition]; this.currentReadPosition = (this.currentReadPosition + 1) % this.buffer.length; this.currentBufferSize -= 1; return b; } ByteBuffer();  ByteBuffer(int capacity);  ByteBuffer(byte[] bytes);  ByteBuffer(byte[] bytes, int capacity);  ByteBuffer(byte[] bytes, int offset, int length);  ByteBuffer(byte[] bytes, int offset, int length, int capacity);  ByteBuffer(String string0);  ByteBuffer(String string0, int capacity); int size(); int capacity(); int free(); boolean isFree(int count); boolean isEmpty(); boolean isFull(); void clear(); void add(byte b); void add(byte[] bytes); void add(byte[] bytes, int offset, int length); void delete(int count); byte remove(); byte[] remove(int count); int occurrences(byte b); int occurrences(byte[] bytes); ByteBuffer copy(); ByteBuffer copy(int offset, int length); ByteBuffer copy(int offset, int length, int capacity); byte get(int index); byte[] toArray(); byte[] toArray(int offset, int length); byte[] toArray(int offset, int length, int capacity); void toArray(int offset, int length, byte[] targetBuffer, int targetOffset); boolean startsWith(byte[] prefix); boolean endsWith(byte[] prefix); int indexOf(byte[] bytes); int indexOf(byte[] bytes, int offset); @Override int hashCode(); @Override boolean equals(Object obj); boolean equals(byte[] bytes); @Override String toString(); String toHexString(); String toHexString(int offset, int length);  }
@Test(expected=BufferIsEmptyException.class) public void removeToCauseBufferIsEmptyException() throws BufferException { ByteBuffer buffer = new ByteBuffer(5); buffer.remove(); }