@Test @SuppressWarnings("unchecked") public void createZipWithPrefetchIterable() { List<Flux<Integer>> list = Arrays.asList(Flux.just(1), Flux.just(2)); Flux<Integer> f = Flux.zip(list, 123, obj -> 0); assertThat(f.getPrefetch()).isEqualTo(123); }
@Test public void prematureCompleteIterableEmpty() { StepVerifier.create(Flux.zip(Arrays.asList(), obj -> 0)) .verifyComplete(); }
@Parameters(name = "client[{0}] - server [{1}]") public static Object[][] arguments() throws IOException { WebSocketClient[] clients = new WebSocketClient[] { new TomcatWebSocketClient(), new JettyWebSocketClient(), new ReactorNettyWebSocketClient(), new UndertowWebSocketClient(Xnio.getInstance().createWorker(OptionMap.EMPTY)) }; Map<HttpServer, Class<?>> servers = new LinkedHashMap<>(); servers.put(new TomcatHttpServer(TMP_DIR.getAbsolutePath(), WsContextListener.class), TomcatConfig.class); servers.put(new JettyHttpServer(), JettyConfig.class); servers.put(new ReactorHttpServer(), ReactorNettyConfig.class); servers.put(new UndertowHttpServer(), UndertowConfig.class); Flux<WebSocketClient> f1 = Flux.fromArray(clients).concatMap(c -> Flux.just(c).repeat(servers.size())); Flux<HttpServer> f2 = Flux.fromIterable(servers.keySet()).repeat(clients.length); Flux<Class<?>> f3 = Flux.fromIterable(servers.values()).repeat(clients.length); return Flux.zip(f1, f2, f3).map(Tuple3::toArray).collectList().block() .toArray(new Object[clients.length * servers.size()][2]); }
@Test @SuppressWarnings("unchecked") public void createZipWithPrefetch() { Flux<Integer>[] list = new Flux[]{Flux.just(1), Flux.just(2)}; Flux<Integer> f = Flux.zip(obj -> 0, 123, list); assertThat(f.getPrefetch()).isEqualTo(123); }
@Test public void prematureCompleteEmptySource() { StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1), Mono.empty())) .verifyComplete(); }
@Test public void prematureCompleteSourceEmptyDouble() { DirectProcessor<Integer> d = DirectProcessor.create(); StepVerifier.create(Flux.zip(obj -> 0, d, s -> { CoreSubscriber<?> a = ((DirectProcessor.DirectInner) d.inners().findFirst().get()) .actual; Operators.complete(s); a.onComplete(); }, Mono.just(1))) .verifyComplete(); }
@Test public void prematureCompleteSourceEmpty() { StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1), Mono.empty() .hide())) .verifyComplete(); }
@Test public void prematureCompleteIterableCallableNull() { StepVerifier.create(Flux.zip(Arrays.asList(Flux.just(1), Mono.fromCallable(() -> null)), obj -> 0)) .verifyComplete(); }
@Test public void prematureCompleteEmptySourceHide() { StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1) .hide(), Mono.empty())) .verifyComplete(); }
@Test public void failNull() { StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1), null)) .verifyError(NullPointerException.class); }
@Test //FIXME use Violation.NO_CLEANUP_ON_TERMINATE public void failDoubleErrorSilent() { Hooks.onErrorDropped(e -> { }); StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1), Flux.never(), s -> { s.onSubscribe(Operators.emptySubscription()); s.onError(new Exception("test")); s.onError(new Exception("test2")); })) .verifyErrorMessage("test"); Hooks.resetOnErrorDropped(); }
@Test public void prematureCompleteCallableNull() { StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1), Mono.fromCallable(() -> null))) .verifyComplete(); }
@Test public void failCombinedNull() { StepVerifier.create(Flux.zip(obj -> null, Flux.just(1), Flux.just(2))) .verifyError(NullPointerException.class); }
@Test public void zip() { StepVerifier.create(Flux.zip(obj -> (int) obj[0], Flux.just(1))) .expectNext(1) .verifyComplete(); }
@Test //FIXME use Violation.NO_CLEANUP_ON_TERMINATE public void ignoreDoubleComplete() { StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1), Flux.never(), s -> { s.onSubscribe(Operators.emptySubscription()); s.onComplete(); s.onComplete(); })) .verifyComplete(); }
@Test public void ignoreRequestZeroHideAll() { StepVerifier.create(Flux.zip(obj -> (int) obj[0] + (int) obj[1], Flux.just(1) .hide(), Flux.just(2) .hide()), 0) .consumeSubscriptionWith(s -> s.request(0)) .thenRequest(1) .expectNext(3) .verifyComplete(); }
@Test public void prematureCompleteCallableNullHideAll() { StepVerifier.create(Flux.zip(obj -> 0, Flux.just(1) .hide(), Mono.fromCallable(() -> null) .hide())) .verifyComplete(); }
@Test @SuppressWarnings("unchecked") public void zip4() { StepVerifier.create(Flux.zip(Flux.just(1), Flux.just(2), Flux.just(3), Flux.just(4))) .expectNext(Tuples.of(1, 2, 3, 4)) .verifyComplete(); }
@Test @SuppressWarnings("unchecked") public void zip5() { StepVerifier.create(Flux.zip(Flux.just(1), Flux.just(2), Flux.just(3), Flux.just(4), Flux.just(5))) .expectNext(Tuples.of(1, 2, 3, 4, 5)) .verifyComplete(); }
@Test public void subsequentSumHidden() { AssertSubscriber<Integer> ts = AssertSubscriber.create(); range(1, 5).hide() .publish(o -> zip((Object[] a) -> (Integer) a[0] + (Integer) a[1], o, o .skip(1))) .subscribe(ts); ts.assertValues(1 + 2, 2 + 3, 3 + 4, 4 + 5) .assertNoError() .assertComplete(); }