### Question:
IbftRound { public void startRoundWith( final RoundChangeArtifacts roundChangeArtifacts, final long headerTimestamp) { final Optional<Block> bestBlockFromRoundChange = roundChangeArtifacts.getBlock(); final RoundChangeCertificate roundChangeCertificate = roundChangeArtifacts.getRoundChangeCertificate(); Block blockToPublish; if (!bestBlockFromRoundChange.isPresent()) { LOG.debug("Sending proposal with new block. round={}", roundState.getRoundIdentifier()); blockToPublish = blockCreator.createBlock(headerTimestamp); } else { LOG.debug( "Sending proposal from PreparedCertificate. round={}", roundState.getRoundIdentifier()); blockToPublish = IbftBlockInterface.replaceRoundInBlock( bestBlockFromRoundChange.get(), getRoundIdentifier().getRoundNumber(), IbftBlockHeaderFunctions.forCommittedSeal()); } updateStateWithProposalAndTransmit(blockToPublish, Optional.of(roundChangeCertificate)); } IbftRound(
      final RoundState roundState,
      final IbftBlockCreator blockCreator,
      final ProtocolContext protocolContext,
      final BlockImporter blockImporter,
      final Subscribers<MinedBlockObserver> observers,
      final NodeKey nodeKey,
      final MessageFactory messageFactory,
      final IbftMessageTransmitter transmitter,
      final RoundTimer roundTimer); ConsensusRoundIdentifier getRoundIdentifier(); void createAndSendProposalMessage(final long headerTimeStampSeconds); void startRoundWith(
      final RoundChangeArtifacts roundChangeArtifacts, final long headerTimestamp); void handleProposalMessage(final Proposal msg); void handlePrepareMessage(final Prepare msg); void handleCommitMessage(final Commit msg); Optional<PreparedRoundArtifacts> constructPreparedRoundArtifacts();  }### Answer:
@Test public void aProposalWithAnewBlockIsSentUponReceptionOfARoundChangeWithNoCertificate() { final RoundState roundState = new RoundState(roundIdentifier, 2, messageValidator); final IbftRound round = new IbftRound( roundState, blockCreator, protocolContext, blockImporter, subscribers, nodeKey, messageFactory, transmitter, roundTimer); final RoundChangeCertificate roundChangeCertificate = new RoundChangeCertificate(emptyList()); round.startRoundWith(new RoundChangeArtifacts(empty(), emptyList()), 15); verify(transmitter, times(1)) .multicastProposal(eq(roundIdentifier), any(), eq(Optional.of(roundChangeCertificate))); }