message: Check if test is done at the end of processing step.
  When it was at the beginning me might have popped one message too many.
diff: @@ -247,17 +247,6 @@ where
  /// and pass it to the recipient validator for execution.
  /// Messages returned from the execution are scheduled for later delivery.
  pub(crate) fn crank<R: Rng>(&mut self, rand: &mut R) -> Result<CrankOk, TestRunError> {
  - // Stop the test when each node finalized all consensus values.
  - // Note that we're not testing the order of finalization here.
  - // TODO: Consider moving out all the assertions to client side.
  - if self
  - .virtual_net
  - .validators()
  - .all(|v| v.finalized_count() == self.consensus_values_num)
  - {
  - return Ok(CrankOk::Done);
  - }
  -
  let QueueEntry {
  delivery_time,
  recipient,
  @@ -304,8 +293,19 @@ where
  self.virtual_net.dispatch_messages(targeted_messages);
  + // Stop the test when each node finalized all consensus values.
  + // Note that we're not testing the order of finalization here.
  + // TODO: Consider moving out all the assertions to client side.
  + if self
  + .virtual_net
  + .validators()
  + .all(|v| v.finalized_count() == self.consensus_values_num)
  + {
  + return Ok(CrankOk::Done);
  + } else {
  Ok(CrankOk::Continue)
  }
  + }
  fn next_consensus_value(&mut self) -> Option<ConsensusValue> {
  self.consensus_values.pop_front()
  