Esempio n. 1
0
        public void CombiningSinksWithSimplifiedApi()
        {
            var actor = CreateTestProbe();

            var sendRemotely    = Sink.ActorRef <int>(actor.Ref, "Done");
            var localProcessing = Sink.Aggregate <int, int>(0, (acc, i) => acc + i)
                                  .MapMaterializedValue(_ => NotUsed.Instance);

            var sink = Sink.Combine(i => new Broadcast <int>(i), sendRemotely, localProcessing);

            WithMaterializer(m =>
            {
                Source.From(new[] { 0, 1, 2 }).RunWith(sink, m);
                var received = actor.ReceiveN(3);
                Assert.That(received, Is.EquivalentTo(new[] { 0, 1, 2 }));
            });
        }
Esempio n. 2
0
        public void A_Sink_must_combine_to_two_sinks_with_simplified_API()
        {
            var probes = CreateProbes().Take(2).ToArray();
            var sink   = Sink.Combine(i => new Broadcast <int>(i), Sink.FromSubscriber(probes[0]),
                                      Sink.FromSubscriber(probes[1]));

            Source.From(new[] { 0, 1, 2 }).RunWith(sink, Materializer);

            var subscriptions = probes.Select(p => p.ExpectSubscription()).ToList();

            subscriptions.ForEach(s => s.Request(1));
            probes.ForEach(p => p.ExpectNext(0));
            subscriptions.ForEach(s => s.Request(2));
            probes.ForEach(p =>
            {
                p.ExpectNext(1, 2);
                p.ExpectComplete();
            });
        }