AnalyzerUnitTest.ConnectedComponentCalculatorTest.TestCalculateStronglyConnectedComponents3 C# (CSharp) Method

TestCalculateStronglyConnectedComponents3() private method

private TestCalculateStronglyConnectedComponents3 ( ) : void
return void
        TestCalculateStronglyConnectedComponents3()
        {
            // N components with one vertex each.

            const Int32 Vertices = 100;
            Int32[] aiVertexIDs = new Int32[Vertices];

            for (Int32 i = 0; i < Vertices; i++)
            {
                aiVertexIDs[i] = m_oVertices.Add().ID;
            }

            IList<LinkedList<IVertex>> oStronglyConnectedComponents =
                m_oConnectedComponentCalculator.
                CalculateStronglyConnectedComponents(m_oGraph, true);

            Assert.AreEqual(Vertices, oStronglyConnectedComponents.Count);

            HashSet<Int32> oFoundVertexIDs = new HashSet<Int32>();

            foreach (LinkedList<IVertex> oStronglyConnectedComponent in
                oStronglyConnectedComponents)
            {
                Assert.AreEqual(1, oStronglyConnectedComponent.Count);
                Int32 iFoundVertexID = oStronglyConnectedComponent.First.Value.ID;

                if (oFoundVertexIDs.Contains(iFoundVertexID))
                {
                    Assert.Fail("Two components contain the same vertex.");
                }

                oFoundVertexIDs.Add(iFoundVertexID);
            }

            foreach (Int32 iVertexID in aiVertexIDs)
            {
                if (!oFoundVertexIDs.Contains(iVertexID))
                {
                    Assert.Fail("A vertex is not contained in a component.");
                }
            }
        }