Ejemplo n.º 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(); });
        }
Ejemplo n.º 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]);
        }
Ejemplo n.º 3
0
    public static void Main()
    {
        CompositeEnumerator e = (CompositeEnumerator)ShellProcess.Make().GetEnumerator();

        while (e.MoveNext())
        {
            for (int i = 0; i < e.Depth(); i++)
            {
                Console.Write("    ");
            }
            Console.WriteLine(e.Current);
        }
    }
        public void TestArrays()
        {
            int[] a0 = { 0 };
            int[] a1 = { 1, 2, 3 };
            int[] a2 = { 4, 5, 6 };

            CompositeEnumerator e = new CompositeEnumerator(a0, a1, a2);

            for (int i = 0; i < 7; ++i)
            {
                Assert(e.MoveNext());
                AssertEquals(i, e.Current);
            }
            Assert(!e.MoveNext());
        }
Ejemplo n.º 5
0
        public void CompositeEnumerator_SingleEnumerator()
        {
            List <int> source = new List <int>();
            List <int> output = new List <int>();
            CompositeEnumerator <int> enumerator;

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

            enumerator = new CompositeEnumerator <int>(source.GetEnumerator());

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

            Assert.AreEqual(3, output.Count);
            Assert.AreEqual(0, output[0]);
            Assert.AreEqual(1, output[1]);
            Assert.AreEqual(2, output[2]);
        }
Ejemplo n.º 6
0
        public void CompositeEnumerator_MultipleEnumerators()
        {
            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]);
        }
Ejemplo n.º 7
0
        public void CompositeEnumerator_EmptyEnumerators()
        {
            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;

            // Empty enumerator at beginning

            source1.Clear();
            source2.Clear();
            source3.Clear();
            output.Clear();

            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(6, output.Count);
            Assert.AreEqual(3, output[0]);
            Assert.AreEqual(4, output[1]);
            Assert.AreEqual(5, output[2]);
            Assert.AreEqual(6, output[3]);
            Assert.AreEqual(7, output[4]);
            Assert.AreEqual(8, output[5]);

            // Empty enumerator in middle

            source1.Clear();
            source2.Clear();
            source3.Clear();
            output.Clear();

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

            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(6, output.Count);
            Assert.AreEqual(0, output[0]);
            Assert.AreEqual(1, output[1]);
            Assert.AreEqual(2, output[2]);
            Assert.AreEqual(6, output[3]);
            Assert.AreEqual(7, output[4]);
            Assert.AreEqual(8, output[5]);

            // Empty enumerator at end

            source1.Clear();
            source2.Clear();
            source3.Clear();
            output.Clear();

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

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

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

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

            Assert.AreEqual(6, 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]);
        }