public void GroupBy_must_work_in_the_happy_case()
{
this.AssertAllStagesStopped(() =>
{
WithSubstreamsSupport(2, run: (masterSubscriber, masterSubscription, getSubFlow) =>
{
var s1 = new StreamPuppet(getSubFlow(1).RunWith(Sink.AsPublisher<int>(false), Materializer), this);
masterSubscriber.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
s1.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
s1.Request(1);
s1.ExpectNext(1);
s1.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
var s2 = new StreamPuppet(getSubFlow(0).RunWith(Sink.AsPublisher<int>(false), Materializer), this);
s2.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
s2.Request(2);
s2.ExpectNext(2);
// Important to request here on the OTHER stream because the buffer space is exactly one without the fanout box
s1.Request(1);
s2.ExpectNext(4);
s2.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
s1.ExpectNext(3);
s2.Request(1);
// Important to request here on the OTHER stream because the buffer space is exactly one without the fanout box
s1.Request(1);
s2.ExpectNext(6);
s2.ExpectComplete();
s1.ExpectNext(5);
s1.ExpectComplete();
masterSubscription.Request(1);
masterSubscriber.ExpectComplete();
});
}, Materializer);
}