@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()); }
boolean onSubscriptionLoop(){ SubscriptionEvent<T> subscriptionEvent; if (this.script.peek() instanceof SubscriptionEvent) { subscriptionEvent = (SubscriptionEvent<T>) this.script.poll(); if (subscriptionEvent instanceof RequestEvent) { updateRequested(subscriptionEvent); } if (subscriptionEvent.isTerminal()) { doCancel(); return true; } subscriptionEvent.consume(get()); } return false; }
boolean onSubscriptionLoop(){ SubscriptionEvent<T> subscriptionEvent; if (this.script.peek() instanceof SubscriptionEvent) { subscriptionEvent = (SubscriptionEvent<T>) this.script.poll(); if (subscriptionEvent instanceof RequestEvent) { updateRequested(subscriptionEvent); } if (subscriptionEvent.isTerminal()) { doCancel(); return true; } subscriptionEvent.consume(get()); } return false; }
SubscriptionTaskEvent(SubscriptionEvent<T> subscriptionEvent) { super(null, subscriptionEvent.getDescription()); this.delegate = subscriptionEvent; }
@Override public DefaultStepVerifier<T> thenCancel() { this.script.add(new SubscriptionEvent<>("thenCancel")); return build(); }
@Override void run(DefaultVerifySubscriber<T> parent) throws Exception { if (delegate.isTerminal()) { parent.doCancel(); } else { delegate.consume(parent.get()); } } }
@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()); }
SubscriptionTaskEvent(SubscriptionEvent<T> subscriptionEvent) { super(null, subscriptionEvent.getDescription()); this.delegate = subscriptionEvent; }
@Override void run(DefaultVerifySubscriber<T> parent) throws Exception { if (delegate.isTerminal()) { parent.doCancel(); } else { delegate.consume(parent.get()); } } }
@Override public DefaultStepVerifier<T> thenCancel() { this.script.add(new SubscriptionEvent<>("thenCancel")); return build(); }