int assertDeleteSucceed(int i, int freeSpaceBeforeDelete, int deleteSpace) {
    int startOffset = appender.getTupleStartOffset(i);
    int endOffset = appender.getTupleEndOffset(i);
    int tupleLength = appender.getTupleLength(i);

    appender.delete(i);

    assertEquals(startOffset, appender.getTupleStartOffset(i));
    assertEquals(-endOffset, appender.getTupleEndOffset(i));
    assertEquals(-tupleLength, appender.getTupleLength(i));
    assertEquals(freeSpaceBeforeDelete, appender.getContiguousFreeSpace());
    assertEquals(deleteSpace + tupleLength + freeSpaceBeforeDelete, appender.getTotalFreeSpace());
    return tupleLength;
  }
  int assertTupleIsExpected(int i, int dataOffset) {
    int lenStrMeta = UTF8StringUtil.getNumBytesToStoreLength(i);
    int tupleLength = 2 * 4 + 4 + lenStrMeta + i + 1;
    assertEquals(dataOffset, appender.getTupleStartOffset(i));
    assertEquals(tupleLength, appender.getTupleLength(i));

    assertEquals(dataOffset + 2 * 4, appender.getAbsoluteFieldStartOffset(i, 0));
    assertEquals(4, appender.getFieldLength(i, 0));
    assertEquals(
        i + 1,
        IntSerDeUtils.getInt(
            appender.getBuffer().array(), appender.getAbsoluteFieldStartOffset(i, 0)));
    assertEquals(dataOffset + 2 * 4 + 4, appender.getAbsoluteFieldStartOffset(i, 1));
    assertEquals(lenStrMeta + i + 1, appender.getFieldLength(i, 1));
    return tupleLength;
  }