@Test public void testNoConflateOnSignalThenSubscriptionEvents() { List<Event<String>> script = Arrays.asList( new TaskEvent<String>(() -> {}, "A"), new WaitEvent<String>(Duration.ofSeconds(5), "B"), new SignalCountEvent<>(3, "C"), new SubscriptionEvent<String>("D"), new SubscriptionEvent<String>(sub -> { }, "E") ); Queue<Event<String>> queue = DefaultVerifySubscriber.conflateScript(script, null); assertThat(queue) .hasSize(5) .extracting(e -> e.getClass().getName()) .containsExactly( TaskEvent.class.getName(), WaitEvent.class.getName(), SignalCountEvent.class.getName(), SubscriptionEvent.class.getName(), SubscriptionEvent.class.getName()); }
void waitTaskEvent() { Event<T> event; while ((event = taskEvents.poll()) != null) { try { if (event instanceof SubscriptionTaskEvent) { updateRequested(event); } ((TaskEvent<T>) event).run(this); } catch (Throwable t) { Exceptions.throwIfFatal(t); cancel(); if (t instanceof AssertionError) { throw (AssertionError) t; } throw Exceptions.propagate(t); } } }
@Override public DefaultStepVerifierBuilder<T> then(Runnable task) { Objects.requireNonNull(task, "task"); this.script.add(new TaskEvent<>(task, "then")); return this; }
@Test public void testConflateOnTaskThenSubscriptionEvents() { List<Event<String>> script = Arrays.asList( new TaskEvent<String>(() -> {}, "A"), new TaskEvent<String>(() -> {}, "B"), new WaitEvent<String>(Duration.ofSeconds(5), "C"), new SubscriptionEvent<String>("D"), new SubscriptionEvent<String>(sub -> { }, "E") ); Queue<Event<String>> queue = DefaultVerifySubscriber.conflateScript(script, null); assertThat(queue) .hasSize(5) .extracting(e -> e.getClass().getName()) .containsExactly( TaskEvent.class.getName(), TaskEvent.class.getName(), WaitEvent.class.getName(), DefaultStepVerifierBuilder.SubscriptionTaskEvent.class.getName(), DefaultStepVerifierBuilder.SubscriptionTaskEvent.class.getName()); }
void waitTaskEvent() { Event<T> event; while ((event = taskEvents.poll()) != null) { try { if (event instanceof SubscriptionTaskEvent) { updateRequested(event); } ((TaskEvent<T>) event).run(this); } catch (Throwable t) { Exceptions.throwIfFatal(t); cancel(); if (t instanceof AssertionError) { throw (AssertionError) t; } throw Exceptions.propagate(t); } } }
@Override public DefaultStepVerifierBuilder<T> then(Runnable task) { Objects.requireNonNull(task, "task"); this.script.add(new TaskEvent<>(task, "then")); return this; }