public void GetEnumeratorFromEmptyEnumerator()
        {
            ArgumentEnumerator enumerator1 = ArgumentEnumerator.Empty;
            ArgumentEnumerator enumerator2 = enumerator1.GetEnumerator();
            ArgumentEnumerator enumerator3 = enumerator1.GetEnumerator();

            Assert.AreEqual(enumerator1, enumerator3);
            Assert.AreEqual(enumerator2, enumerator3);
        }
        public void GetEnumeratorFromUsedEnumerator()
        {
            string[]           arguments   = new string[] { "/first", "/second" };
            ArgumentEnumerator enumerator1 = new ArgumentEnumerator(arguments);
            ArgumentEnumerator enumerator2 = enumerator1.GetEnumerator();
            ArgumentEnumerator enumerator3 = enumerator1.GetEnumerator();

            Assert.AreNotEqual(enumerator1, enumerator3);
            Assert.AreNotEqual(enumerator2, enumerator3);
        }
        public void GetEnumeratorFromSecondThread()
        {
            string[]           arguments   = new string[] { "/first", "/second" };
            ArgumentEnumerator enumerator1 = new ArgumentEnumerator(arguments);
            ArgumentEnumerator enumerator2 = null;

            Thread thread = new Thread(() => enumerator2 = enumerator1.GetEnumerator());

            thread.Start();
            thread.Join();

            Assert.AreNotEqual(enumerator1, enumerator2);
        }