public void CantCloneContents() { var deque1 = new Deque <NotCloneable>(); deque1.Add(new NotCloneable()); deque1.Add(new NotCloneable()); Deque <NotCloneable> deque2 = deque1.CloneContents(); }
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)); } }