### Question:
FutureRoundProposalMessageValidator { public boolean validateProposalMessage(final Proposal msg) { if (msg.getRoundIdentifier().getSequenceNumber() != chainHeight) { LOG.info("Illegal Proposal message, does not target the correct round height."); return false; } final MessageValidator messageValidator = messageValidatorFactory.createMessageValidator(msg.getRoundIdentifier(), parentHeader); return messageValidator.validateProposal(msg); } FutureRoundProposalMessageValidator(
      final MessageValidatorFactory messageValidatorFactory,
      final long chainHeight,
      final BlockHeader parentHeader); boolean validateProposalMessage(final Proposal msg);  }### Answer:
@Test public void validProposalMatchingCurrentChainHeightPassesValidation() { final Proposal proposal = messageFactoy.createProposal(roundIdentifier, proposedBlock, Optional.empty()); assertThat(validator.validateProposalMessage(proposal)).isTrue(); }
@Test public void proposalTargettingDifferentChainHeightFailsValidation() { final ConsensusRoundIdentifier futureChainIdentifier = TestHelpers.createFrom(roundIdentifier, 1, 0); final Proposal proposal = messageFactoy.createProposal(futureChainIdentifier, proposedBlock, Optional.empty()); assertThat(validator.validateProposalMessage(proposal)).isFalse(); }
@Test public void proposalWhichFailsMessageValidationFailsFutureRoundValidation() { final Proposal proposal = messageFactoy.createProposal(roundIdentifier, proposedBlock, Optional.empty()); when(messageValidator.validateProposal(any())).thenReturn(false); assertThat(validator.validateProposalMessage(proposal)).isFalse(); }