public void Clone() { var list = new EdgeList <int, EquatableEdge <int> >(); EdgeList <int, EquatableEdge <int> > clonedList = list.Clone(); CollectionAssert.IsEmpty(clonedList); clonedList = (EdgeList <int, EquatableEdge <int> >)((IEdgeList <int, EquatableEdge <int> >)list).Clone(); CollectionAssert.IsEmpty(clonedList); clonedList = (EdgeList <int, EquatableEdge <int> >)((ICloneable)list).Clone(); CollectionAssert.IsEmpty(clonedList); list.AddRange(new[] { new EquatableEdge <int>(1, 2), new EquatableEdge <int>(2, 3) }); clonedList = list.Clone(); CollectionAssert.AreEqual(list, clonedList); clonedList = (EdgeList <int, EquatableEdge <int> >)((IEdgeList <int, EquatableEdge <int> >)list).Clone(); CollectionAssert.AreEqual(list, clonedList); clonedList = (EdgeList <int, EquatableEdge <int> >)((ICloneable)list).Clone(); CollectionAssert.AreEqual(list, clonedList); }