public boolean nextTuple() {
   tupleId++;
   while (tupleId >= tupleCount) {
     if (!input.hasNext()) {
       return false;
     }
     ByteBuffer buf = input.next();
     accessor.reset(buf);
     tupleId = 0;
     tupleCount = accessor.getTupleCount();
   }
   seekToField(0);
   return true;
 }
  static void assertReadSorted(
      List<RunAndMaxFrameSizePair> runs,
      IFrameTupleAccessor fta,
      IFrame frame,
      Map<Integer, String> keyValuePair)
      throws HyracksDataException {

    assertTrue(runs.size() > 0);
    for (RunAndMaxFrameSizePair run : runs) {
      run.run.open();
      int preKey = Integer.MIN_VALUE;
      while (run.run.nextFrame(frame)) {
        fta.reset(frame.getBuffer());
        preKey = assertFTADataIsSorted(fta, keyValuePair, preKey);
      }
      run.run.close();
    }
    assertTrue(keyValuePair.isEmpty());
  }