public void UnzipWith_must_work_in_the_happy_case()
{
this.AssertAllStagesStopped(() =>
{
var leftProbe = TestSubscriber.CreateManualProbe<int>(this);
var rightProbe = TestSubscriber.CreateManualProbe<string>(this);
RunnableGraph.FromGraph(GraphDsl.Create(b =>
{
var unzip = b.Add(new UnzipWith<int, int, string>(Zipper));
var source = Source.From(Enumerable.Range(1, 4));
b.From(source).To(unzip.In);
b.From(unzip.Out0)
.Via(Flow.Create<int>().Buffer(4, OverflowStrategy.Backpressure))
.To(Sink.FromSubscriber(leftProbe));
b.From(unzip.Out1)
.Via(Flow.Create<string>().Buffer(4, OverflowStrategy.Backpressure))
.To(Sink.FromSubscriber(rightProbe));
return ClosedShape.Instance;
})).Run(Materializer);
var leftSubscription = leftProbe.ExpectSubscription();
var rightSubscription = rightProbe.ExpectSubscription();
leftSubscription.Request(2);
rightSubscription.Request(1);
leftProbe.ExpectNext(2, 4);
leftProbe.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
rightProbe.ExpectNext("1+1");
rightProbe.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
leftSubscription.Request(1);
rightSubscription.Request(2);
leftProbe.ExpectNext(6);
leftProbe.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
rightProbe.ExpectNext("2+2", "3+3");
rightProbe.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
leftSubscription.Request(1);
rightSubscription.Request(1);
leftProbe.ExpectNext(8);
rightProbe.ExpectNext("4+4");
leftProbe.ExpectComplete();
rightProbe.ExpectComplete();
}, Materializer);
}