Akka.Streams.Tests.Dsl.GraphBalanceSpec.A_Balance_must_balance_between_all_three_outputs C# (CSharp) Метод

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

private A_Balance_must_balance_between_all_three_outputs ( ) : void
Результат void
        public void A_Balance_must_balance_between_all_three_outputs()
        {
            this.AssertAllStagesStopped(() =>
            {
                const int numElementsForSink = 10000;
                var outputs = Sink.Aggregate<int, int>(0, (sum, i) => sum + i);
                var t = RunnableGraph.FromGraph(GraphDsl.Create(outputs, outputs, outputs, Tuple.Create,
                    (b, o1, o2, o3) =>
                    {
                        var balance = b.Add(new Balance<int>(3, true));
                        var source =
                            Source.Repeat(1)
                                .Take(numElementsForSink*3)
                                .MapMaterializedValue<Tuple<Task<int>, Task<int>, Task<int>>>(_ => null);
                        b.From(source).To(balance.In);
                        b.From(balance.Out(0)).To(o1);
                        b.From(balance.Out(1)).To(o2);
                        b.From(balance.Out(2)).To(o3);
                        return ClosedShape.Instance;
                    })).Run(Materializer);

                var task = Task.WhenAll(t.Item1, t.Item2, t.Item3);
                task.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
                task.Result.Should().NotContain(0);
                task.Result.Sum().Should().Be(numElementsForSink*3);
            }, Materializer);
        }