예제 #1
0
        TestGraphContainsDuplicateEdges13()
        {
            // Undirected graph, many duplicates.

            m_oDuplicateEdgeDetector =
                new DuplicateEdgeDetector(m_oUndirectedGraph);

            IEdgeCollection oEdges = m_oUndirectedGraph.Edges;

            oEdges.Add(m_oUndirectedVertexB, m_oUndirectedVertexA, false);
            oEdges.Add(m_oUndirectedVertexC, m_oUndirectedVertexD, false);
            oEdges.Add(m_oUndirectedVertexA, m_oUndirectedVertexA, false);
            oEdges.Add(m_oUndirectedVertexB, m_oUndirectedVertexB, false);
            oEdges.Add(m_oUndirectedVertexC, m_oUndirectedVertexD, false);
            oEdges.Add(m_oUndirectedVertexA, m_oUndirectedVertexB, false);
            oEdges.Add(m_oUndirectedVertexA, m_oUndirectedVertexB, false);
            oEdges.Add(m_oUndirectedVertexB, m_oUndirectedVertexA, false);
            oEdges.Add(m_oUndirectedVertexC, m_oUndirectedVertexD, false);

            Assert.IsTrue(m_oDuplicateEdgeDetector.GraphContainsDuplicateEdges);
            Assert.AreEqual(2, m_oDuplicateEdgeDetector.UniqueEdges);
            Assert.AreEqual(7, m_oDuplicateEdgeDetector.EdgesWithDuplicates);

            Assert.AreEqual(2, m_oDuplicateEdgeDetector.
                            TotalEdgesAfterMergingDuplicatesNoSelfLoops);
        }
예제 #2
0
        TestGraphContainsDuplicateEdges12()
        {
            // Undirected graph, duplicate null name, C.

            m_oDuplicateEdgeDetector =
                new DuplicateEdgeDetector(m_oUndirectedGraph);

            IEdgeCollection oEdges = m_oUndirectedGraph.Edges;

            oEdges.Add(m_oUndirectedVertexA, m_oUndirectedVertexB, false);
            oEdges.Add(m_oUndirectedVertexA, m_oUndirectedVertexA, false);
            oEdges.Add(m_oUndirectedVertexB, m_oUndirectedVertexB, false);
            oEdges.Add(m_oUndirectedVertexC, m_oUndirectedVertexD, false);
            oEdges.Add(m_oUndirectedVertexC, m_oUndirectedVertexWithNullName,
                       false);

            oEdges.Add(m_oUndirectedVertexWithNullName, m_oUndirectedVertexC,
                       false);

            Assert.IsFalse(m_oDuplicateEdgeDetector.GraphContainsDuplicateEdges);
            Assert.AreEqual(4, m_oDuplicateEdgeDetector.UniqueEdges);
            Assert.AreEqual(0, m_oDuplicateEdgeDetector.EdgesWithDuplicates);

            Assert.AreEqual(2, m_oDuplicateEdgeDetector.
                            TotalEdgesAfterMergingDuplicatesNoSelfLoops);
        }
예제 #3
0
        TestGraphContainsDuplicateEdges()
        {
            // Directed graph, no duplicate edges.

            m_oDuplicateEdgeDetector = new DuplicateEdgeDetector(m_oDirectedGraph);

            IEdgeCollection oEdges = m_oDirectedGraph.Edges;

            oEdges.Add(m_oDirectedVertexA, m_oDirectedVertexB, true);
            oEdges.Add(m_oDirectedVertexB, m_oDirectedVertexA, true);
            oEdges.Add(m_oDirectedVertexA, m_oDirectedVertexA, true);
            oEdges.Add(m_oDirectedVertexB, m_oDirectedVertexB, true);
            oEdges.Add(m_oDirectedVertexC, m_oDirectedVertexD, true);
            oEdges.Add(m_oDirectedVertexC, m_oDirectedVertexWithNullName, true);

            Assert.IsFalse(m_oDuplicateEdgeDetector.GraphContainsDuplicateEdges);
            Assert.AreEqual(6, m_oDuplicateEdgeDetector.UniqueEdges);
            Assert.AreEqual(0, m_oDuplicateEdgeDetector.EdgesWithDuplicates);

            Assert.AreEqual(4, m_oDuplicateEdgeDetector.
                            TotalEdgesAfterMergingDuplicatesNoSelfLoops);
        }