### Question:
StandardExceptionPropagator implements ExceptionPropagator { @Override public RuntimeException propagateException(Object key, ExceptionInformation exceptionInformation) { long expiry = exceptionInformation.getUntil(); String txt = ""; if (expiry > 0) { if (expiry == ExpiryTimeValues.ETERNAL) { txt = "expiry=ETERNAL, cause: "; } else { txt = "expiry=" + formatMillis(expiry) + ", cause: "; } } return new CacheLoaderException(txt + exceptionInformation.getException(), exceptionInformation.getException()); }  @Override RuntimeException propagateException(Object key,
                                             ExceptionInformation exceptionInformation);  }### Answer:
@Test public void propagate_eternal() { System.currentTimeMillis(); RuntimeException t = STANDARD_PROPAGATOR.propagateException( null, toInfo(new RuntimeException("serious thing"), Long.MAX_VALUE)); assertTrue(t.toString().contains("expiry=ETERNAL")); }
@Test public void propagate_sometime() { RuntimeException t = STANDARD_PROPAGATOR.propagateException( null, toInfo(new RuntimeException("serious thing"), SOME_TIME)); assertTrue(t.toString().contains("expiry=2016-05-25 09:30:12.123")); }
@Test public void propagate_notime() { RuntimeException t = STANDARD_PROPAGATOR.propagateException( null, toInfo(new RuntimeException("serious thing"), 0)); assertFalse(t.toString().contains("expiry=")); }