示例#1
0
        public static void Prepend1()
        {
            IEnumerable <int> source = new ThrowingEnumerable <int>();

            var q = Assert.DoesNotThrow(() => source.Prepend(1));

            // We bypass the first iteration (we just prepended 1 to the sequence,
            // iterating won't throw immediately).
            Assert.ThrowsAfter(q, 1);
        }
示例#2
0
        public static void Generate01()
        {
            Func <int, int>  generator = _ => throw new InvalidOperationException();
            Func <int, bool> predicate = _ => throw new InvalidOperationException();

            var q1 = Assert.DoesNotThrow(() => Sequence.Generate(0, generator));

            Assert.ThrowsAfter(q1, 1);

            var q2 = Assert.DoesNotThrow(() => Sequence.Generate(0, generator, _ => true));

            Assert.ThrowsAfter(q2, 1);
            var q3 = Assert.DoesNotThrow(() => Sequence.Generate(0, i => i + 1, predicate));

            Assert.ThrowsOnNext(q3);
        }
示例#3
0
        public static void Unfold1b()
        {
            Func <int, int>  generator      = _ => throw new InvalidOperationException();
            Func <int, int>  resultSelector = _ => throw new InvalidOperationException();
            Func <int, bool> predicate      = _ => throw new InvalidOperationException();

            var q1 = Assert.DoesNotThrow(() => Sequence.Unfold(0, generator, i => i + 1));

            Assert.ThrowsAfter(q1, 1);
            var q2 = Assert.DoesNotThrow(() => Sequence.Unfold(0, i => i + 1, resultSelector));

            Assert.ThrowsOnNext(q2);

            var q3 = Assert.DoesNotThrow(() => Sequence.Unfold(0, generator, i => i + 1, _ => true));

            Assert.ThrowsAfter(q3, 1);
            var q4 = Assert.DoesNotThrow(() => Sequence.Unfold(0, i => i + 1, resultSelector, _ => true));

            Assert.ThrowsOnNext(q4);
            var q5 = Assert.DoesNotThrow(() => Sequence.Unfold(0, i => i + 1, i => i + 1, predicate));

            Assert.ThrowsOnNext(q5);
        }