public void A_Flow_with_SelectAsyncUnordered_must_resume_after_multiple_failures()
{
this.AssertAllStagesStopped(() =>
{
var futures = new[]
{
Task.Run(() => { throw new TestException("failure1"); return "";}),
Task.Run(() => { throw new TestException("failure2"); return "";}),
Task.Run(() => { throw new TestException("failure3"); return "";}),
Task.Run(() => { throw new TestException("failure4"); return "";}),
Task.Run(() => { throw new TestException("failure5"); return "";}),
Task.FromResult("happy")
};
var t = Source.From(futures)
.SelectAsyncUnordered(2, x => x)
.WithAttributes(ActorAttributes.CreateSupervisionStrategy(Deciders.ResumingDecider))
.RunWith(Sink.First<string>(), Materializer);
t.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
t.Result.Should().Be("happy");
}, Materializer);
}