Akka.Streams.Tests.Dsl.BidiFlowSpec.A_BidiFlow_must_combine_materialization_values C# (CSharp) Метод

A_BidiFlow_must_combine_materialization_values() приватный Метод

private A_BidiFlow_must_combine_materialization_values ( ) : void
Результат void
        public void A_BidiFlow_must_combine_materialization_values()
        {
            this.AssertAllStagesStopped(() =>
            {
                var left = Flow.FromGraph(GraphDsl.Create(Sink.First<int>(), (b, sink) =>
                {
                    var broadcast = b.Add(new Broadcast<int>(2));
                    var merge = b.Add(new Merge<int>(2));
                    var flow = b.Add(Flow.Create<string>().Select(int.Parse));
                    b.From(broadcast).To(sink);
                    b.From(Source.Single(1).MapMaterializedValue(_ => Task.FromResult(0))).Via(broadcast).To(merge);
                    b.From(flow).To(merge);
                    return new FlowShape<string, int>(flow.Inlet, merge.Out);
                }));

                var right = Flow.FromGraph(GraphDsl.Create(Sink.First<List<long>>(), (b, sink) =>
                {
                    var flow = b.Add(Flow.Create<long>().Grouped(10));
                    var source = b.Add(Source.Single(ByteString.FromString("10")));
                    b.From(flow).To(sink);

                    return new FlowShape<long, ByteString>(flow.Inlet, source.Outlet);
                }));

                var tt = left.JoinMaterialized(BidiMaterialized(), Keep.Both)
                    .JoinMaterialized(right, Keep.Both)
                    .Run(Materializer);
                var t = tt.Item1;
                var l = t.Item1;
                var m = t.Item2;
                var r = tt.Item2;

                Task.WhenAll(l, m, r).Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
                l.Result.Should().Be(1);
                m.Result.Should().Be(42);
                r.Result.ShouldAllBeEquivalentTo(new [] {3L, 12L});
            }, Materializer);
        }