public void Enumerator_State_Start()
        {
            int[] source         = { 1, 3, 2, 4 };
            Permutations <int> p = new Permutations <int>(source);

            IEnumerator <List <int> > e = p.GetEnumerator();

            // move next has not been called yet
            List <int> current = e.Current;
        }
        public void Enumerator_State_End()
        {
            int[] source         = { 1, 3, 2, 4 };
            Permutations <int> p = new Permutations <int>(source);

            IEnumerator <List <int> > e = p.GetEnumerator();

            while (e.MoveNext())
            {
                ;
            }

            // end of the enumeration has been reached
            List <int> current = e.Current;
        }
        public void Enumerated_Reset()
        {
            int[] source         = { 1, 3, 2, 4 };
            Permutations <int> p = new Permutations <int>(source);

            IEnumerator <List <int> > e = p.GetEnumerator();

            e.MoveNext();
            List <int> c1 = e.Current;

            e.MoveNext();

            e.Reset();
            e.MoveNext();

            Assert.IsTrue(Utils.IsEqual(c1, e.Current));
        }