コード例 #1
0
ファイル: ChainTests.cs プロジェクト: Richiban/Richiban.Func
        public void ChainDoesNotEnumerateSourceFurtherThanItNeedsTo()
        {
            var yieldCount = 0;

            var sequence = new ObservableSequence(onYield: _ => { yieldCount++; }, count: 10);
            var chain    = new Chain <int>(sequence);

            foreach (var _ in chain.Take(5))
            {
            }

            Assert.That(yieldCount, Is.EqualTo(5));
        }
コード例 #2
0
ファイル: ChainTests.cs プロジェクト: Richiban/Richiban.Func
        public void CallCountIsRecordedWhenEnumeratingObservableSequenceMultipleTimes()
        {
            var callCount = 0;

            var sequence = new ObservableSequence(onGetEnumerator: () => { callCount++; });

            foreach (var item in sequence)
            {
            }
            foreach (var item in sequence)
            {
            }

            Assert.That(callCount, Is.EqualTo(2));
        }
コード例 #3
0
ファイル: ChainTests.cs プロジェクト: Richiban/Richiban.Func
        public void EnumeratingChainMultipleTimesEnumeratesSourceOnlyOnce()
        {
            var callCount = 0;

            var sequence = new ObservableSequence(onGetEnumerator: () => { callCount++; });
            var chain    = new Chain <int>(sequence);

            foreach (var item in chain)
            {
            }
            foreach (var item in chain)
            {
            }

            Assert.That(callCount, Is.EqualTo(1));
        }
コード例 #4
0
ファイル: ChainTests.cs プロジェクト: Richiban/Richiban.Func
        public void EnumeratingChainMultipleTimesYieldsEachItemOnlyOnce()
        {
            var yieldedItems = new List <int>();

            var sequence = new ObservableSequence(onYield: i => yieldedItems.Add(i));
            var chain    = new Chain <int>(sequence);

            foreach (var _ in chain)
            {
            }

            var yieldedItemsCopy = yieldedItems.ToList();

            foreach (var _ in chain)
            {
            }

            Assert.That(yieldedItemsCopy, Is.EquivalentTo(yieldedItems));
        }