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"); }); }