public void A_Scan_must_Scan()
{
Func<int[], int[]> scan = source =>
{
var result = new int[source.Length+1];
result[0] = 0;
for (var i = 1; i <= source.Length; i++)
result[i] = result[i - 1] + source[i - 1];
return result;
};
this.AssertAllStagesStopped(() =>
{
var random = new Random();
var v = Enumerable.Range(1, random.Next(100, 1000)).Select(_ => random.Next()).ToArray();
Scan(Source.From(v)).ShouldAllBeEquivalentTo(scan(v));
}, Materializer);
}