private void WithSubstreamsSupport(int splitAfter = 3, int elementCount = 6,
SubstreamCancelStrategy substreamCancelStrategy = SubstreamCancelStrategy.Drain,
Action<TestSubscriber.ManualProbe<Source<int, NotUsed>>, ISubscription, Func<Source<int, NotUsed>>> run = null)
{
var source = Source.From(Enumerable.Range(1, elementCount));
var groupStream =
source.SplitAfter(substreamCancelStrategy, i => i == splitAfter)
.Lift()
.RunWith(Sink.AsPublisher<Source<int, NotUsed>>(false), Materializer);
var masterSubscriber = TestSubscriber.CreateManualProbe<Source<int, NotUsed>>(this);
groupStream.Subscribe(masterSubscriber);
var masterSubscription = masterSubscriber.ExpectSubscription();
run?.Invoke(masterSubscriber, masterSubscription, () =>
{
masterSubscription.Request(1);
return masterSubscriber.ExpectNext();
});
}