예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
            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);
            }
예제 #4
0
        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);
        }