public void Clone() { var dictionary = new VertexEdgeDictionary <int, EquatableEdge <int> >(); VertexEdgeDictionary <int, EquatableEdge <int> > clonedDictionary = dictionary.Clone(); CollectionAssert.IsEmpty(clonedDictionary); clonedDictionary = (VertexEdgeDictionary <int, EquatableEdge <int> >)((IVertexEdgeDictionary <int, EquatableEdge <int> >)dictionary).Clone(); CollectionAssert.IsEmpty(clonedDictionary); clonedDictionary = (VertexEdgeDictionary <int, EquatableEdge <int> >)((ICloneable)dictionary).Clone(); CollectionAssert.IsEmpty(clonedDictionary); dictionary.Add(1, new EdgeList <int, EquatableEdge <int> > { new EquatableEdge <int>(1, 2) }); dictionary.Add(2, new EdgeList <int, EquatableEdge <int> > { new EquatableEdge <int>(2, 3) }); dictionary.Add(3, new EdgeList <int, EquatableEdge <int> >()); clonedDictionary = dictionary.Clone(); CollectionAssert.AreEqual(dictionary, clonedDictionary); clonedDictionary = (VertexEdgeDictionary <int, EquatableEdge <int> >)((IVertexEdgeDictionary <int, EquatableEdge <int> >)dictionary).Clone(); CollectionAssert.AreEqual(dictionary, clonedDictionary); clonedDictionary = (VertexEdgeDictionary <int, EquatableEdge <int> >)((ICloneable)dictionary).Clone(); CollectionAssert.AreEqual(dictionary, clonedDictionary); }
public void Serialization() { var dictionary = new VertexEdgeDictionary <int, EquatableEdge <int> >(); VertexEdgeDictionary <int, EquatableEdge <int> > deserializedDictionary = SerializeAndDeserialize(dictionary); Assert.AreNotSame(dictionary, deserializedDictionary); CollectionAssert.IsEmpty(deserializedDictionary); dictionary.Add(1, new EdgeList <int, EquatableEdge <int> > { new EquatableEdge <int>(1, 2) }); dictionary.Add(2, new EdgeList <int, EquatableEdge <int> > { new EquatableEdge <int>(2, 3) }); deserializedDictionary = SerializeAndDeserialize(dictionary); Assert.AreNotSame(dictionary, deserializedDictionary); CollectionAssert.AreEqual(dictionary, deserializedDictionary); }
public VertexEdgeDictionary Clone() { VertexEdgeDictionary clone = new VertexEdgeDictionary(this.Count); foreach (KeyValuePair <TVertex, EdgeList> kv in this) { clone.Add(kv.Key, kv.Value.Clone()); } return(clone); }
public bool AddVertex(TVertex v) { if (ContainsVertex(v)) { return(false); } var edges = this.EdgeCapacity < 0 ? new EdgeList <TVertex, TEdge>() : new EdgeList <TVertex, TEdge>(this.EdgeCapacity); _adjacentEdges.Add(v, edges); OnVertexAdded(v); return(true); }