public InputBuffer(BufferType type, int inputSize) throws IOException {

    final int capacity = inputSize;
    this.type = type;

    if (capacity > 0) {

      switch (type) {
      case DIRECT_BUFFER:
        this.byteBuffer = bufferPool.getBuffer(capacity);
        this.byteBuffer.order(ByteOrder.BIG_ENDIAN);
        break;
      case HEAP_BUFFER:
        this.byteBuffer = ByteBuffer.allocate(capacity);
        this.byteBuffer.order(ByteOrder.BIG_ENDIAN);
        break;
      }
      byteBuffer.position(0);
      byteBuffer.limit(0);
    }
  }
@Test
  public void testInputBuffer() throws IOException {
    final int size = 100;
    final InputBuffer input1 = new InputBuffer(BufferType.DIRECT_BUFFER, size);
    assertThat(input1.getType()).isEqualTo(BufferType.DIRECT_BUFFER);

    assertThat(input1.position()).isZero();
    assertThat(input1.length()).isZero();
    assertThat(input1.remaining()).isZero();
    assertThat(input1.capacity()).isEqualTo(size);

    final InputBuffer input2 = new InputBuffer(BufferType.HEAP_BUFFER, size);
    assertThat(input2.getType()).isEqualTo(BufferType.HEAP_BUFFER);

    assertThat(input2.position()).isZero();
    assertThat(input2.length()).isZero();
    assertThat(input2.remaining()).isZero();
    assertThat(input2.capacity()).isEqualTo(size);

    final InputBuffer input3 = new InputBuffer(new byte[size]);
    assertThat(input3.getType()).isEqualTo(BufferType.HEAP_BUFFER);

    assertThat(input3.position()).isZero();
    assertThat(input3.length()).isZero();
    assertThat(input3.remaining()).isZero();
    assertThat(input3.capacity()).isEqualTo(size);
  }