private FixedBitIntReader(PinotDataBuffer dataBuffer) {
    _dataBuffer = dataBuffer;
  }
@Test
  public void testFixedBitIntReader()
      throws Exception {
    int[] values = new int[NUM_VALUES];
    for (int numBits = 1; numBits <= 31; numBits++) {
      File indexFile = new File(INDEX_DIR, "bit-" + numBits);
      try (
          FixedBitSVForwardIndexWriter indexWriter = new FixedBitSVForwardIndexWriter(indexFile, NUM_VALUES, numBits)) {
        int maxValue = numBits < 31 ? 1 << numBits : Integer.MAX_VALUE;
        for (int i = 0; i < NUM_VALUES; i++) {
          int value = RANDOM.nextInt(maxValue);
          values[i] = value;
          indexWriter.putDictId(value);
        }
      }
      try (PinotDataBuffer dataBuffer = PinotDataBuffer.mapReadOnlyBigEndianFile(indexFile)) {
        FixedBitIntReader intReader = FixedBitIntReader.getReader(dataBuffer, numBits);
        for (int i = 0; i < NUM_VALUES; i++) {
          assertEquals(intReader.read(i), values[i]);
        }
        for (int i = 0; i < NUM_VALUES - 2; i++) {
          assertEquals(intReader.readUnchecked(i), values[i]);
        }
        int[] out = new int[64];
        intReader.read32(0, out, 0);
        intReader.read32(32, out, 32);
        for (int i = 0; i < 64; i++) {
          assertEquals(out[i], values[i]);
        }
      }
    }
  }