예제 #1
0
        public void CompositeEnumerator_SourceChanged()
        {
            // Verify that InvalidOperationExceptions are thrown when the when
            // performing operations on the enumerator after the source has
            // signalled that it has been modified.

            List <int> source = new List <int>();
            CompositeEnumerator <int> enumerator;

            source.Add(0);
            source.Add(1);
            source.Add(2);

            enumerator = new CompositeEnumerator <int>(source.GetEnumerator());
            enumerator.OnSourceChanged();
            ExtendedAssert.Throws <InvalidOperationException>(() => enumerator.MoveNext());

            enumerator = new CompositeEnumerator <int>(source.GetEnumerator());
            enumerator.OnSourceChanged();
            ExtendedAssert.Throws <InvalidOperationException>(() => { int i = enumerator.Current; });

            enumerator = new CompositeEnumerator <int>(source.GetEnumerator());
            enumerator.OnSourceChanged();
            ExtendedAssert.Throws <InvalidOperationException>(() => { enumerator.Reset(); });
        }
예제 #2
0
        public void CompositeEnumerator_Reset()
        {
            List <int> source1 = new List <int>();
            List <int> source2 = new List <int>();
            List <int> source3 = new List <int>();
            List <int> output  = new List <int>();
            CompositeEnumerator <int> enumerator;

            source1.Add(0);
            source1.Add(1);
            source1.Add(2);

            source2.Add(3);
            source2.Add(4);
            source2.Add(5);

            source3.Add(6);
            source3.Add(7);
            source3.Add(8);

            enumerator = new CompositeEnumerator <int>(source1.GetEnumerator(), source2.GetEnumerator(), source3.GetEnumerator());

            while (enumerator.MoveNext())
            {
                output.Add(enumerator.Current);
            }

            Assert.AreEqual(9, output.Count);
            Assert.AreEqual(0, output[0]);
            Assert.AreEqual(1, output[1]);
            Assert.AreEqual(2, output[2]);
            Assert.AreEqual(3, output[3]);
            Assert.AreEqual(4, output[4]);
            Assert.AreEqual(5, output[5]);
            Assert.AreEqual(6, output[6]);
            Assert.AreEqual(7, output[7]);
            Assert.AreEqual(8, output[8]);

            // Verify that we can reset the enumerator and rewalk the collections.

            output.Clear();
            enumerator.Reset();

            while (enumerator.MoveNext())
            {
                output.Add(enumerator.Current);
            }

            Assert.AreEqual(9, output.Count);
            Assert.AreEqual(0, output[0]);
            Assert.AreEqual(1, output[1]);
            Assert.AreEqual(2, output[2]);
            Assert.AreEqual(3, output[3]);
            Assert.AreEqual(4, output[4]);
            Assert.AreEqual(5, output[5]);
            Assert.AreEqual(6, output[6]);
            Assert.AreEqual(7, output[7]);
            Assert.AreEqual(8, output[8]);
        }