public void GroupProgressiveByIsDeferred() { var src = new IterateAndCount(10); var a = src.GroupProgressiveBy(i => i > 5, null); var b = src.GroupProgressiveBy(i => i > 5, j => "str: " + j.ToString(CultureInfo.InvariantCulture), null); var c = src.GroupProgressiveBy(i => i > 5, (key, group) => StringHelper.Concat(group.ToArray()), null); var d = src.GroupProgressiveBy(i => i > 5, j => j + 1, (key, group) => StringHelper.Concat(group.ToArray()), null); Assert.AreEqual(src.Total, 0); a.Consume(); b.Consume(); c.Consume(); d.Consume(); Assert.AreEqual(src.Total, 40); }
public void GroupProgressiveByIsDeferredToGetEnumerator() { var src = new IterateAndCount(10); var a = src.GroupProgressiveBy(i => i > 5, null); Assert.AreEqual(src.Total, 0); using (var enumerator = a.GetEnumerator()) { // GroupProgressiveBy is truly deferred GC.KeepAlive(enumerator); Assert.AreEqual(src.Total, 0); } Assert.AreEqual(src.Total, 0); using (var enumerator = a.GetEnumerator()) { // GroupProgressiveBy is truly deferred GC.KeepAlive(enumerator); Assert.AreEqual(src.Total, 0); } Assert.AreEqual(src.Total, 0); }