예제 #1
0
        public void FirstSequenceIsntAccessedBeforeFirstUse()
        {
            var first = new ThrowingEnumerable();

            int[] second = { 5 };
            // No exception yet...
            var query = new ConcatEnumerable <ThrowingEnumerable, ThrowingEnumerable.Enumerator, ArrayEnumerable <int>, ArrayEnumerable <int> .Enumerator, int>(first, second.AsRefEnumerable());

            // Still no exception...
            using (var iterator = query.GetEnumerator())
            {
                // Now it will go bang
                Assert.Throws <InvalidOperationException>(() => iterator.MoveNext());
            }
        }
예제 #2
0
        public void SecondSequenceIsntAccessedBeforeFirstUse()
        {
            int[] first  = { 5 };
            var   second = new ThrowingEnumerable();
            // No exception yet...
            var query = new ConcatEnumerable <ArrayEnumerable <int>, ArrayEnumerable <int> .Enumerator, ThrowingEnumerable, ThrowingEnumerable.Enumerator, int>(first.AsRefEnumerable(), second);

            // Still no exception...
            using (var iterator = query.GetEnumerator())
            {
                // First element is fine...
                Assert.IsTrue(iterator.MoveNext());
                Assert.AreEqual(5, iterator.Current);
                // Now it will go bang, as we move into the second sequence
                Assert.Throws <InvalidOperationException>(() => iterator.MoveNext());
            }
        }