use of cyclops.reactive.ReactiveSeq in project cyclops by aol.
the class ReactiveZippingTest method testUnzip3.
@Test
public void testUnzip3() {
Supplier<ReactiveSeq<Tuple3<Integer, String, Long>>> s = () -> of(new Tuple3(1, "a", 2l), new Tuple3(2, "b", 3l), new Tuple3(3, "c", 4l));
Tuple3<ReactiveSeq<Integer>, ReactiveSeq<String>, ReactiveSeq<Long>> u1 = ReactiveSeq.unzip3(s.get());
assertTrue(u1._1().toList().containsAll(Arrays.asList(1, 2, 3)));
assertTrue(u1._2().toList().containsAll(asList("a", "b", "c")));
assertTrue(u1._3().toList().containsAll(asList(2l, 3l, 4l)));
}
use of cyclops.reactive.ReactiveSeq in project cyclops by aol.
the class SimpleReactStream method zip.
/**
* Zip two Streams, zipping against the underlying futures of both Streams
* Placeholders (Futures) will be populated immediately in the new zipped Stream and results
* will be populated asyncrhonously
*
* @param other Another FutureStream to zip Futures with
* @return New Sequence of CompletableFutures
*/
default <R> SimpleReactStream<Tuple2<U, R>> zip(final SimpleReactStream<R> other) {
final ReactiveSeq seq = ReactiveSeq.fromStream(getLastActive().stream()).zip(ReactiveSeq.fromStream(other.getLastActive().stream()));
final ReactiveSeq<Tuple2<CompletableFuture<U>, CompletableFuture<R>>> withType = seq;
final SimpleReactStream futureStream = fromStreamOfFutures((Stream) withType.map(t -> CompletableFuture.allOf(t._1(), t._2()).thenApply(v -> Tuple.tuple(t._1().join(), t._2().join()))));
return futureStream;
}
use of cyclops.reactive.ReactiveSeq in project cyclops by aol.
the class MergeLatestTest method mergeLatestEmpty.
@Test
public void mergeLatestEmpty() {
AtomicReference<Vector<Integer>> data = new AtomicReference(Vector.empty());
AtomicBoolean complete = new AtomicBoolean(false);
AtomicReference<Throwable> error = new AtomicReference<Throwable>(null);
Spouts.<Integer>mergeLatest(Spouts.<ReactiveSeq<Integer>>of()).forEach(z -> {
assertFalse(complete.get());
data.updateAndGet(s -> s.plus(z));
}, e -> {
error.set(e);
}, () -> {
complete.set(true);
});
Assert.assertThat(complete.get(), equalTo(true));
}
use of cyclops.reactive.ReactiveSeq in project cyclops by aol.
the class MergeLatestTest method mergeEmpty.
@Test
public void mergeEmpty() {
AtomicReference<Vector<Integer>> data = new AtomicReference(Vector.empty());
AtomicBoolean complete = new AtomicBoolean(false);
AtomicReference<Throwable> error = new AtomicReference<Throwable>(null);
Spouts.<Integer>merge(Spouts.<ReactiveSeq<Integer>>of()).forEach(z -> {
assertFalse(complete.get());
data.updateAndGet(s -> s.plus(z));
}, e -> {
error.set(e);
}, () -> {
complete.set(true);
});
Assert.assertThat(complete.get(), equalTo(true));
}
use of cyclops.reactive.ReactiveSeq in project cyclops by aol.
the class ZippingTest method testUnzip4WithLimits.
@Test
public void testUnzip4WithLimits() {
Supplier<ReactiveSeq<Tuple4<Integer, String, Long, Character>>> s = () -> of(new Tuple4(1, "a", 2l, 'z'), new Tuple4(2, "b", 3l, 'y'), new Tuple4(3, "c", 4l, 'x'));
Tuple4<ReactiveSeq<Integer>, ReactiveSeq<String>, ReactiveSeq<Long>, ReactiveSeq<Character>> u1 = ReactiveSeq.unzip4(s.get());
assertTrue(u1._1().limit(1).toList().containsAll(Arrays.asList(1)));
assertTrue(u1._2().limit(2).toList().containsAll(asList("a", "b")));
assertTrue(u1._3().limit(3).toList().containsAll(asList(2l, 3l, 4l)));
assertTrue(u1._4().limit(4).toList().containsAll(asList('z', 'y', 'x')));
}
Aggregations