Exemplo n.º 1
0
        public void GraphInterpreter_should_implement_buffer()
        {
            WithTestSetup((setup, builder, lastEvents) =>
            {
                var source = setup.NewUpstreamProbe <string>("source");
                var sink   = setup.NewDownstreamProbe <string>("sink");
                var buffer =
                    new PushPullGraphStage <string, string>(
                        a => new Buffer <string>(2, OverflowStrategy.Backpressure), Attributes.None);

                builder(buffer)
                .Connect(source, buffer.Shape.Inlet)
                .Connect(buffer.Shape.Outlet, sink)
                .Init();

                setup.StepAll();
                lastEvents().Should().BeEquivalentTo(new RequestOne(source));

                sink.RequestOne();
                lastEvents().Should().BeEmpty();

                source.OnNext("A");
                lastEvents().Should().BeEquivalentTo(new OnNext(sink, "A"), new RequestOne(source));

                source.OnNext("B");
                lastEvents().Should().BeEquivalentTo(new RequestOne(source));

                source.OnNext("C", eventLimit: 0);
                sink.RequestOne();
                lastEvents().Should().BeEquivalentTo(new OnNext(sink, "B"), new RequestOne(source));

                sink.RequestOne(eventLimit: 0);
                source.OnComplete(eventLimit: 3);
                lastEvents().Should().BeEquivalentTo(new OnNext(sink, "C"));

                sink.RequestOne();
                lastEvents().Should().BeEquivalentTo(new OnComplete(sink));
            });
        }
Exemplo n.º 2
0
        public void GraphInterpreter_should_implement_buffer()
        {
            WithTestSetup((setup, builder, lastEvents) =>
            {
                var source = setup.NewUpstreamProbe<string>("source");
                var sink = setup.NewDownstreamProbe<string>("sink");
                var buffer =
                    new PushPullGraphStage<string, string>(
                        a => new Buffer<string>(2, OverflowStrategy.Backpressure), Attributes.None);

                builder(buffer)
                    .Connect(source, buffer.Shape.Inlet)
                    .Connect(buffer.Shape.Outlet, sink)
                    .Init();

                setup.StepAll();
                lastEvents().Should().BeEquivalentTo(new RequestOne(source));

                sink.RequestOne();
                lastEvents().Should().BeEmpty();

                source.OnNext("A");
                lastEvents().Should().BeEquivalentTo(new OnNext(sink, "A"), new RequestOne(source));

                source.OnNext("B");
                lastEvents().Should().BeEquivalentTo(new RequestOne(source));

                source.OnNext("C", eventLimit: 0);
                sink.RequestOne();
                lastEvents().Should().BeEquivalentTo(new OnNext(sink, "B"), new RequestOne(source));

                sink.RequestOne(eventLimit: 0);
                source.OnComplete(eventLimit: 3);
                lastEvents().Should().BeEquivalentTo(new OnNext(sink, "C"));

                sink.RequestOne();
                lastEvents().Should().BeEquivalentTo(new OnComplete(sink));
            });
        }