Ejemplo n.º 1
0
 public Logic(PushFinishStage <T> stage) : base(stage.Shape)
 {
     _stage = stage;
     SetHandler(stage.Outlet, onPull: () => Pull(stage.Inlet));
     SetHandler(stage.Inlet, onPush: () =>
     {
         Push(stage.Outlet, Grab(stage.Inlet));
         CompleteStage();
     }, onUpstreamFinish: () => FailStage(new TestException("Cannot happen")));
 }
        public void Interpreter_must_call_PostStop_when_PushAndFinish_called_if_upstream_completes_with_PushAndFinish()
        {
            var op = new PushFinishStage <string>(() => TestActor.Tell("stop"));

            WithOneBoundedSetup(op, (lastEvents, upstream, downstream) =>
            {
                lastEvents().Should().BeEmpty();

                downstream.RequestOne();
                lastEvents().Should().Equal(new RequestOne());

                upstream.OnNextAndComplete("foo");
                lastEvents().Should().Equal(new OnNext("foo"), new OnComplete());
                ExpectMsg("stop");
            });
        }