Akka.Streams.Tests.Dsl.FlowRecoverWithSpec.A_RecoverWith_must_switch_the_second_time_if_alternative_source_throws_exception C# (CSharp) Метод

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

        public void A_RecoverWith_must_switch_the_second_time_if_alternative_source_throws_exception()
        {
            this.AssertAllStagesStopped(() =>
            {
                var probe = Source.From(Enumerable.Range(1, 3)).Select(x =>
                {
                    if (x == 3)
                        throw new IndexOutOfRangeException();
                    return x;
                }).RecoverWith(ex =>
                {
                    if (ex is IndexOutOfRangeException)
                        return Source.From(new [] {11,22}).Select(x =>
                        {
                            if (x == 22)
                                throw new ArgumentException();
                            return x;
                        });
                    if (ex is ArgumentException)
                        return Source.From(new[] { 33, 44 });
                    return null;
                }).RunWith(this.SinkProbe<int>(), Materializer);

                probe
                    .Request(2)
                    .ExpectNext(1, 2);

                probe
                    .Request(2)
                    .ExpectNext(11, 33);

                probe
                    .Request(1)
                    .ExpectNext(44)
                    .ExpectComplete();
            }, Materializer);
        }