Ejemplo n.º 1
0
        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);
        }