@Test public void afterTerminateCallbackErrorAndErrorCallbackError() { IllegalStateException err = new IllegalStateException("expected afterTerminate"); IllegalArgumentException err2 = new IllegalArgumentException("error"); FluxPeekFuseable<String> flux = new FluxPeekFuseable<>( Flux.empty(), null, null, e -> { throw err2; }, null, () -> { throw err; }, null, null); AssertSubscriber<String> ts = AssertSubscriber.create(); try { flux.subscribe(ts); fail("expected thrown exception"); } catch (Exception e) { e.printStackTrace(); assertSame(e.toString(), err, e.getCause()); assertEquals(0, err2.getSuppressed().length); //err2 is never thrown } ts.assertNoValues(); ts.assertComplete(); }
@Test public void afterTerminateCallbackErrorAndErrorCallbackError() { IllegalStateException err = new IllegalStateException("afterTerminate"); IllegalArgumentException err2 = new IllegalArgumentException("error"); FluxPeek<String> flux = new FluxPeek<>(Flux.empty(), null, null, e -> { throw err2; }, null, () -> { throw err; }, null, null); AssertSubscriber<String> ts = AssertSubscriber.create(); try { flux.subscribe(ts); fail("expected thrown exception"); } catch (Exception e) { assertSame(err, e.getCause()); assertEquals(0, err2.getSuppressed().length); //err2 is never thrown } ts.assertNoValues(); ts.assertComplete(); }
@Test public void afterTerminateCallbackErrorAndErrorCallbackError2() { IllegalStateException afterTerminate = new IllegalStateException("afterTerminate"); IllegalArgumentException error = new IllegalArgumentException("error"); NullPointerException err = new NullPointerException(); FluxPeekFuseable<String> flux = new FluxPeekFuseable<>( Flux.error(err), null, null, e -> { throw error; }, null, () -> { throw afterTerminate; }, null, null); AssertSubscriber<String> ts = AssertSubscriber.create(); try { flux.subscribe(ts); fail("expected thrown exception"); } catch (Exception e) { assertSame(afterTerminate, e.getCause()); //afterTerminate suppressed error which itself suppressed original err assertEquals(1, afterTerminate.getSuppressed().length); assertEquals(error, afterTerminate.getSuppressed()[0]); assertEquals(1, error.getSuppressed().length); assertEquals(err, error.getSuppressed()[0]); } ts.assertNoValues(); //the subscriber still sees the 'error' message since actual.onError is called before the afterTerminate callback ts.assertErrorMessage("error"); }
@Test public void afterTerminateCallbackErrorAndErrorCallbackError2() { IllegalStateException afterTerminate = new IllegalStateException("afterTerminate"); IllegalArgumentException error = new IllegalArgumentException("error"); NullPointerException err = new NullPointerException(); FluxPeek<String> flux = new FluxPeek<>(Flux.error(err), null, null, e -> { throw error; }, null, () -> { throw afterTerminate; }, null, null); AssertSubscriber<String> ts = AssertSubscriber.create(); try { flux.subscribe(ts); fail("expected thrown exception"); } catch (Exception e) { assertSame(afterTerminate, e.getCause()); //afterTerminate suppressed error which itself suppressed original err assertEquals(1, afterTerminate.getSuppressed().length); assertEquals(error, afterTerminate.getSuppressed()[0]); assertEquals(1, error.getSuppressed().length); assertEquals(err, error.getSuppressed()[0]); } ts.assertNoValues(); //the subscriber still sees the 'error' message since actual.onError is called before the afterTerminate callback ts.assertErrorMessage("error"); }
} catch (IllegalArgumentException iae) { validationErrors.add(iae.getMessage()); for (Throwable t : iae.getSuppressed()) { validationErrors.add(t.getMessage());
@Test public void exceptionThrownInEnsuringBlockIsCaught() { IllegalStateException expected = new IllegalStateException(); assertEquals(Try.failure(expected), Try.success(1).ensuring(() -> {throw expected;})); Either<IllegalArgumentException, Object> actual = Try.failure(new IllegalArgumentException()) .ensuring(() -> { throw expected;}) .toEither(); assertThat(actual, isLeftThat(instanceOf(IllegalArgumentException.class))); assertEquals(left(expected), actual.biMapL(t -> t.getSuppressed()[0])); }
} catch (IllegalArgumentException iae) { validationErrors.add(iae.getMessage()); for (Throwable t : iae.getSuppressed()) { validationErrors.add(t.getMessage());
} catch (IllegalArgumentException iae) { validationErrors.add(iae.getMessage()); for (Throwable t : iae.getSuppressed()) { validationErrors.add(t.getMessage());
} catch (IllegalArgumentException iae) { validationErrors.add(iae.getMessage()); for (Throwable t : iae.getSuppressed()) { validationErrors.add(t.getMessage());