Search in sources :

Example 6 with Tuple2

use of cyclops.data.tuple.Tuple2 in project cyclops by aol.

the class LazySeqAgronaTest method testZipWithFutures.

@Test
public void testZipWithFutures() {
    FutureStream stream = of("a", "b");
    FutureStream<Tuple2<Integer, String>> seq = of(1, 2).actOnFutures().zip(stream);
    // .map(tuple -> Tuple.tuple(tuple.v1.join(),tuple.v2)).collect(CyclopsCollectors.toList());
    List<Tuple2<Integer, String>> result = seq.block();
    assertThat(result.size(), is(asList(tuple(1, "a"), tuple(2, "b")).size()));
}
Also used : Tuple2(cyclops.data.tuple.Tuple2) FutureStream(cyclops.futurestream.FutureStream) BaseSeqTest(cyclops.futurestream.react.base.BaseSeqTest) Test(org.junit.Test)

Example 7 with Tuple2

use of cyclops.data.tuple.Tuple2 in project cyclops by aol.

the class SimpleReactStream method duplicate.

/**
 * Duplicate a Stream into two equivalent LazyFutureStreams, underlying
 * Stream of Futures is duplicated
 * <pre>
 * {@code
 * EagerFutureStream.of(1, 2, 3).duplicate()
 *
 * results in
 *
 * tuple((1,2,3),(1,2,3))
 * }</pre>
 * Care should be taken not to use this method with infinite streams!
 *
 * @return Two equivalent Streams
 *
 * @see #duplicate()
 */
default Tuple2<SimpleReactStream<U>, SimpleReactStream<U>> duplicate() {
    // unblocking impl
    final Stream stream = getLastActive().stream();
    final Tuple2<ReactiveSeq<CompletableFuture<U>>, ReactiveSeq<CompletableFuture<U>>> duplicated = ReactiveSeq.fromStream((Stream<CompletableFuture<U>>) stream).duplicate();
    final Tuple2 dup = Tuple.tuple(fromStreamOfFutures(duplicated._1()), fromStreamOfFutures(duplicated._2()));
    return dup;
}
Also used : Tuple2(cyclops.data.tuple.Tuple2) FutureStream(cyclops.futurestream.FutureStream) Stream(java.util.stream.Stream) ReactiveSeq(cyclops.reactive.ReactiveSeq)

Example 8 with Tuple2

use of cyclops.data.tuple.Tuple2 in project cyclops by aol.

the class AsyncZippingTest method testUnzip.

@Test
public void testUnzip() {
    Supplier<ReactiveSeq<Tuple2<Integer, String>>> s = () -> of(new Tuple2(1, "a"), new Tuple2(2, "b"), new Tuple2(3, "c"));
    Tuple2<ReactiveSeq<Integer>, ReactiveSeq<String>> u1 = ReactiveSeq.unzip(s.get());
    assertTrue(u1._1().toList().containsAll(Arrays.asList(1, 2, 3)));
    assertTrue(u1._2().toList().containsAll(asList("a", "b", "c")));
}
Also used : Tuple2(cyclops.data.tuple.Tuple2) ReactiveSeq(cyclops.reactive.ReactiveSeq) ObservableReactiveSeq(cyclops.reactive.ObservableReactiveSeq) Test(org.junit.Test)

Example 9 with Tuple2

use of cyclops.data.tuple.Tuple2 in project cyclops by aol.

the class AbstractIterableXTest method pairZipWise.

@Test
public void pairZipWise() {
    AtomicBoolean data = new AtomicBoolean(false);
    AtomicReference<Vector<Tuple2<Integer, String>>> values = new AtomicReference<>(Vector.empty());
    AtomicBoolean complete = new AtomicBoolean(false);
    AtomicReference<Throwable> error = new AtomicReference<Throwable>(null);
    of(1).zip(of("test")).zip(of("test2")).map(t -> Tuple.tuple(t._1()._1(), t._1()._2() + t._2())).forEach(n -> {
        data.set(true);
        values.updateAndGet(v -> v.plus(n));
    }, e -> {
        error.set(e);
    }, () -> {
        complete.set(true);
    });
    assertTrue(data.get());
    assertTrue(complete.get());
    assertNull(error.get());
    assertThat(values.get(), Matchers.equalTo(Vector.of(Tuple.tuple(1, "testtest2"))));
}
Also used : StepVerifier(reactor.test.StepVerifier) HashMap(cyclops.data.HashMap) Trampoline(cyclops.control.Trampoline) Monoids(cyclops.companion.Monoids) UnaryOperator(java.util.function.UnaryOperator) MockitoAnnotations(org.mockito.MockitoAnnotations) Arrays.asList(java.util.Arrays.asList) Semigroups(cyclops.companion.Semigroups) cyclops.data(cyclops.data) ReactiveSeq.fromIntStream(cyclops.reactive.ReactiveSeq.fromIntStream) Monoid(cyclops.function.Monoid) SimpleTimer(com.oath.cyclops.util.SimpleTimer) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) Serializable(java.io.Serializable) ReactiveSeq(cyclops.reactive.ReactiveSeq) Stream(java.util.stream.Stream) IterableX(com.oath.cyclops.types.traversable.IterableX) ExceptionSoftener(com.oath.cyclops.util.ExceptionSoftener) Try(cyclops.control.Try) TreeSet(cyclops.data.TreeSet) Tuple4(cyclops.data.tuple.Tuple4) IntStream(java.util.stream.IntStream) Tuple3(cyclops.data.tuple.Tuple3) Tuple2(cyclops.data.tuple.Tuple2) java.util(java.util) CoreMatchers.equalTo(org.hamcrest.CoreMatchers.equalTo) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Vector(cyclops.data.Vector) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) Supplier(java.util.function.Supplier) Tuple(cyclops.data.tuple.Tuple) Tuple.tuple(cyclops.data.tuple.Tuple.tuple) IsEqual(org.hamcrest.core.IsEqual) Option(cyclops.control.Option) Comparator.comparing(java.util.Comparator.comparing) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) Before(org.junit.Before) Maybe(cyclops.control.Maybe) LongStream(java.util.stream.LongStream) Spouts(cyclops.reactive.Spouts) Streams(cyclops.companion.Streams) Executor(java.util.concurrent.Executor) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) IOException(java.io.IOException) TimeUnit(java.util.concurrent.TimeUnit) Ignore(org.junit.Ignore) Subscription(org.reactivestreams.Subscription) Assert(org.junit.Assert) Reducers(cyclops.companion.Reducers) Streamable(cyclops.companion.Streamable) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) AtomicReference(java.util.concurrent.atomic.AtomicReference) Vector(cyclops.data.Vector) Test(org.junit.Test)

Example 10 with Tuple2

use of cyclops.data.tuple.Tuple2 in project cyclops by aol.

the class EagerFutureStreamFunctions method firstOf.

/**
 * Return first Stream out of provided Streams that starts emitted results
 *
 * @param futureStreams Streams to race
 * @return First Stream to skip emitting values
 */
@SafeVarargs
public static <U> SimpleReactStream<U> firstOf(final SimpleReactStream<U>... futureStreams) {
    final List<Tuple2<SimpleReactStream<U>, QueueReader>> racers = Stream.of(futureStreams).map(s -> Tuple.tuple(s, new Queue.QueueReader(s.toQueue(), null))).collect(Collectors.toList());
    while (true) {
        for (final Tuple2<SimpleReactStream<U>, Queue.QueueReader> q : racers) {
            if (q._2().notEmpty()) {
                EagerFutureStreamFunctions.closeOthers(q._2().getQueue(), racers.stream().map(t -> t._2().getQueue()).collect(Collectors.toList()));
                closeOthers(q._1(), racers.stream().map(t -> t._1()).collect(Collectors.toList()));
                return q._1().fromStream(q._2().getQueue().stream(q._1().getSubscription()));
            }
        }
        LockSupport.parkNanos(1l);
    }
}
Also used : LockSupport(java.util.concurrent.locks.LockSupport) ReactiveSeq(cyclops.reactive.ReactiveSeq) QueueReader(com.oath.cyclops.async.adapters.Queue.QueueReader) Tuple2(cyclops.data.tuple.Tuple2) List(java.util.List) Queue(com.oath.cyclops.async.adapters.Queue) Tuple(cyclops.data.tuple.Tuple) Stream(java.util.stream.Stream) Iterator(java.util.Iterator) BiFunction(java.util.function.BiFunction) Optional(java.util.Optional) Collectors(java.util.stream.Collectors) QueueReader(com.oath.cyclops.async.adapters.Queue.QueueReader) Tuple2(cyclops.data.tuple.Tuple2) QueueReader(com.oath.cyclops.async.adapters.Queue.QueueReader) Queue(com.oath.cyclops.async.adapters.Queue)

Aggregations

Tuple2 (cyclops.data.tuple.Tuple2)43 Test (org.junit.Test)35 ReactiveSeq (cyclops.reactive.ReactiveSeq)23 Stream (java.util.stream.Stream)17 FutureStream (cyclops.futurestream.FutureStream)16 Tuple (cyclops.data.tuple.Tuple)10 BaseSeqTest (cyclops.futurestream.react.base.BaseSeqTest)9 Collectors (java.util.stream.Collectors)7 FlowableReactiveSeq (cyclops.reactive.FlowableReactiveSeq)6 FluxReactiveSeq (cyclops.reactive.FluxReactiveSeq)6 java.util (java.util)6 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)6 AtomicReference (java.util.concurrent.atomic.AtomicReference)6 Queue (com.oath.cyclops.async.adapters.Queue)5 Vector (cyclops.data.Vector)5 Tuple3 (cyclops.data.tuple.Tuple3)5 LazyReact (cyclops.futurestream.LazyReact)5 Streams (cyclops.companion.Streams)4 Executor (java.util.concurrent.Executor)4 Function (java.util.function.Function)4