Ejemplo n.º 1
0
        public void CantCloneContents()
        {
            var deque1 = new Deque <NotCloneable>();

            deque1.Add(new NotCloneable());
            deque1.Add(new NotCloneable());

            Deque <NotCloneable> deque2 = deque1.CloneContents();
        }
Ejemplo n.º 2
0
        public void CloneContents()
        {
            var deque1 = new Deque <MyInt>();

            deque1.Add(new MyInt(143));
            deque1.Add(new MyInt(2));
            deque1.AddToFront(new MyInt(9));
            deque1.Add(null);
            deque1.AddToFront(new MyInt(2));
            deque1.Add(new MyInt(111));

            var deque2 = deque1.CloneContents();

            CompareClones(deque1, deque2);

            var deque3 = new Deque <int>(new int[] { 144, 5, 23 });

            deque3.InsertRange(1, new int[] { 7, 5, 11, 109 });

            var deque4 = deque3.CloneContents();

            CompareClones(deque3, deque4);

            var deque5 = new Deque <UtilFixture.CloneableStruct>();

            deque5.Add(new UtilFixture.CloneableStruct(143));
            deque5.AddToFront(new UtilFixture.CloneableStruct(5));
            deque5.Add(new UtilFixture.CloneableStruct(23));
            deque5.AddToFront(new UtilFixture.CloneableStruct(1));
            deque5.AddToFront(new UtilFixture.CloneableStruct(8));

            var deque6 = deque5.CloneContents();

            Assert.AreEqual(deque5.Count, deque6.Count);

            // Check that the deques are equal, but not identical (e.g., have been cloned via ICloneable).
            IEnumerator <UtilFixture.CloneableStruct> e1 = deque5.GetEnumerator();
            IEnumerator <UtilFixture.CloneableStruct> e2 = deque6.GetEnumerator();

            // Check that the deques are equal, but not reference equals (e.g., have been cloned).
            while (e1.MoveNext())
            {
                e2.MoveNext();
                Assert.IsTrue(e1.Current.Equals(e2.Current));
                Assert.IsFalse(e1.Current.Identical(e2.Current));
            }
        }