### Question:
ExponentialBackoffExceptionHandler implements ExceptionHandler { @Override public int hashCode() { return Objects.hash(maximumTries, sleepDuration, sleepUnit); } ExponentialBackoffExceptionHandler(
      int maximumTries, long sleepDuration, TimeUnit sleepUnit); @Override boolean handleException(Exception ex, int ntries); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test public void equals_sameObject_true() { ExponentialBackoffExceptionHandler original = new ExponentialBackoffExceptionHandler(1, 1, TimeUnit.SECONDS); assertEquals(original, original); assertEquals(original.hashCode(), original.hashCode()); }
@Test public void equals_similarObject_true() { ExponentialBackoffExceptionHandler original = new ExponentialBackoffExceptionHandler(1, 1, TimeUnit.SECONDS); ExponentialBackoffExceptionHandler other = new ExponentialBackoffExceptionHandler(1, 1, TimeUnit.SECONDS); assertEquals(original, other); assertEquals(original.hashCode(), other.hashCode()); }
@Test public void equals_differentObject_false() { ExponentialBackoffExceptionHandler original = new ExponentialBackoffExceptionHandler(1, 1, TimeUnit.SECONDS); ExponentialBackoffExceptionHandler other = new ExponentialBackoffExceptionHandler(2, 3, TimeUnit.SECONDS); assertNotEquals(original, other); assertNotEquals(original.hashCode(), other.hashCode()); }