### Question:
RetryOrCLDowngradeRetryPolicy implements RetryPolicy { @Override public RetryDecision onReadTimeout(Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry) { return readAndWriteRetryPolicy.onReadTimeout(statement, cl, requiredResponses, receivedResponses, dataRetrieved, nbRetry); } RetryOrCLDowngradeRetryPolicy(CassandraConfiguration cassandraConfiguration, RetryPolicy readAndWriteRetryPolicy); @Override RetryDecision onReadTimeout(Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry); @Override RetryDecision onWriteTimeout(Statement statement, ConsistencyLevel cl, WriteType writeType, int requiredAcks, int receivedAcks, int nbRetry); @Override RetryDecision onUnavailable(Statement statement, ConsistencyLevel cl, int requiredReplica, int aliveReplica, int nbRetry);  }### Answer:
@Test public void onReadTimeoutShouldDelegate() { int numberOfRetry = MAX_NUMBER_OF_RETRY - 1; RetryDecision expectedRetryDecision = RetryDecision.rethrow(); ConsistencyLevel consistencyLevel = ConsistencyLevel.QUORUM; int requiredResponses = 1; int receivedResponses = 1; boolean dataRetrieved = true; expect(readAndWriteRetryPolicy.onReadTimeout(statement, consistencyLevel, requiredResponses, receivedResponses, dataRetrieved, numberOfRetry)) .andReturn(expectedRetryDecision); control.replay(); RetryOrCLDowngradeRetryPolicy retryOrCLDowngradeRetryPolicy = new RetryOrCLDowngradeRetryPolicy(cassandraConfiguration, readAndWriteRetryPolicy); RetryDecision retryDecision = retryOrCLDowngradeRetryPolicy.onReadTimeout(statement, consistencyLevel, requiredResponses, receivedResponses, dataRetrieved, numberOfRetry); control.verify(); assertThat(retryDecision).isEqualTo(expectedRetryDecision); }