Akka.Streams.Tests.Dsl.FlowBufferSpec.Buffer_must_fail_upstream_if_buffer_is_full_and_configured_so C# (CSharp) Method

Buffer_must_fail_upstream_if_buffer_is_full_and_configured_so() private method

        public void Buffer_must_fail_upstream_if_buffer_is_full_and_configured_so()
        {
            this.AssertAllStagesStopped(() =>
            {
                var publisher = TestPublisher.CreateProbe<int>(this);
                var subscriber = TestSubscriber.CreateManualProbe<int>(this);

                Source.FromPublisher(publisher)
                    .Buffer(100, OverflowStrategy.Fail)
                    .To(Sink.FromSubscriber(subscriber))
                    .Run(Materializer);

                var sub = subscriber.ExpectSubscription();

                // Fill up buffer
                Enumerable.Range(1, 100).ForEach(i => publisher.SendNext(i));

                // drain
                for (var i = 1; i <= 10; i++)
                {
                    sub.Request(1);
                    subscriber.ExpectNext(i);
                }

                // overflow the buffer
                for (var i = 101; i <= 111; i++)
                    publisher.SendNext(i);

                publisher.ExpectCancellation();

                var actualError = subscriber.ExpectError();
                actualError.Should().BeOfType<BufferOverflowException>();
                actualError.Message.Should().Be("Buffer overflow (max capacity was 100)");
            }, Materializer);
        }