@Test
  public void testReset() throws Exception {
    final int numSegments = MEMORY_SIZE / MEMORY_PAGE_SIZE;
    final List<MemorySegment> memory =
        this.memoryManager.allocatePages(new DummyInvokable(), numSegments);

    FixedLengthRecordSorter<IntPair> sorter = newSortBuffer(memory);
    RandomIntPairGenerator generator = new RandomIntPairGenerator(SEED);

    // write the buffer full with the first set of records
    IntPair record = new IntPair();
    int num = -1;
    do {
      generator.next(record);
      num++;
    } while (sorter.write(record) && num < 3354624);

    sorter.reset();

    // write a second sequence of records. since the values are of fixed length, we must be able to
    // write an equal number
    generator.reset();

    // write the buffer full with the first set of records
    int num2 = -1;
    do {
      generator.next(record);
      num2++;
    } while (sorter.write(record) && num2 < 3354624);

    Assert.assertEquals(
        "The number of records written after the reset was not the same as before.", num, num2);

    // re-read the records
    generator.reset();
    IntPair readTarget = new IntPair();

    int i = 0;
    while (i < num) {
      generator.next(record);
      readTarget = sorter.getRecord(readTarget, i++);

      int rk = readTarget.getKey();
      int gk = record.getKey();

      int rv = readTarget.getValue();
      int gv = record.getValue();

      Assert.assertEquals("The re-read key is wrong", gk, rk);
      Assert.assertEquals("The re-read value is wrong", gv, rv);
    }

    // release the memory occupied by the buffers
    this.memoryManager.release(sorter.dispose());
  }