TestCalculateGraphMetrics5()
{
// More complicated example, including isolate.
Boolean bIsDirected = true;
CreateGraph(bIsDirected);
IVertex oVertexA = m_oVertices.Add();
IVertex oVertexB = m_oVertices.Add();
IVertex oVertexC = m_oVertices.Add();
IVertex oVertexD = m_oVertices.Add();
IVertex oVertexE = m_oVertices.Add();
IVertex oVertexF = m_oVertices.Add();
m_oEdges.Add(oVertexA, oVertexB, bIsDirected);
m_oEdges.Add(oVertexB, oVertexC, bIsDirected);
m_oEdges.Add(oVertexA, oVertexC, bIsDirected);
m_oEdges.Add(oVertexC, oVertexA, bIsDirected);
m_oEdges.Add(oVertexA, oVertexD, bIsDirected);
m_oEdges.Add(oVertexD, oVertexA, bIsDirected);
m_oEdges.Add(oVertexD, oVertexE, bIsDirected);
m_oEdges.Add(oVertexE, oVertexD, bIsDirected);
MetricDouble oMetricDouble;
bool rv = m_oReciprocatedVertexPairRatioCalculator.TryCalculateGraphMetrics(m_oGraph, null, out oMetricDouble);
Assert.AreEqual(6, oMetricDouble.Count);
Assert.AreEqual(2.0 / 3.0, oMetricDouble[oVertexA.ID]);
Assert.AreEqual(0.0 / 2.0, oMetricDouble[oVertexB.ID]);
Assert.AreEqual(1.0 / 2.0, oMetricDouble[oVertexC.ID]);
Assert.AreEqual(2.0 / 2.0, oMetricDouble[oVertexD.ID]);
Assert.AreEqual(1.0 / 1.0, oMetricDouble[oVertexE.ID]);
Assert.AreEqual(0, oMetricDouble[oVertexF.ID]);
}