private void Check(IEnumerable<Tuple<int, int, int>> gen)
{
gen.ForEach(t =>
{
var len = t.Item1;
var win = t.Item2;
var step = t.Item3;
var af = Source.FromEnumerator(() => Enumerable.Range(0, int.MaxValue).Take(len).GetEnumerator())
.Sliding(win, step)
.RunAggregate(new List<IEnumerable<int>>(), (ints, e) =>
{
ints.Add(e);
return ints;
}, Materializer);
var input = Enumerable.Range(0, int.MaxValue).Take(len).ToList();
var cf = Source.FromEnumerator(() => Sliding(input, win, step).GetEnumerator())
.RunAggregate(new List<IEnumerable<int>>(), (ints, e) =>
{
ints.Add(e);
return ints;
}, Materializer);
af.Wait(TimeSpan.FromSeconds(30)).Should().BeTrue();
cf.Wait(TimeSpan.FromSeconds(30)).Should().BeTrue();
af.Result.ShouldAllBeEquivalentTo(cf.Result);
});
}