public void TransitiveReduction_ValueType() { // Test 1 var edge12 = new SEdge <int>(1, 2); var edge13 = new SEdge <int>(1, 3); var edge14 = new SEdge <int>(1, 4); var edge15 = new SEdge <int>(1, 5); var edge24 = new SEdge <int>(2, 4); var edge34 = new SEdge <int>(3, 4); var edge35 = new SEdge <int>(3, 5); var edge45 = new SEdge <int>(4, 5); var graph = new BidirectionalGraph <int, SEdge <int> >(); graph.AddVerticesAndEdgeRange(new[] { edge12, edge13, edge14, edge15, edge24, edge34, edge35, edge45 }); BidirectionalGraph <int, SEdge <int> > result = graph.ComputeTransitiveReduction(); AssertHasVertices(result, new[] { 1, 2, 3, 4, 5 }); AssertHasEdges( result, new[] { edge12, edge13, edge24, edge34, edge45 }); Assert.AreEqual(5, result.EdgeCount); // Test 2 var edge01 = new SEdge <int>(0, 1); var edge02 = new SEdge <int>(0, 2); var edge03 = new SEdge <int>(0, 3); var edge23 = new SEdge <int>(2, 3); var edge25 = new SEdge <int>(2, 5); var edge65 = new SEdge <int>(6, 5); var edge67 = new SEdge <int>(6, 7); var edge74 = new SEdge <int>(7, 4); graph = new BidirectionalGraph <int, SEdge <int> >(); graph.AddVerticesAndEdgeRange(new[] { edge01, edge02, edge03, edge23, edge24, edge25, edge35, edge45, edge65, edge67, edge74 }); result = graph.ComputeTransitiveReduction(); AssertHasVertices(result, new[] { 0, 1, 2, 3, 4, 5, 6, 7 }); AssertHasEdges( result, new[] { edge01, edge02, edge23, edge24, edge35, edge45, edge67, edge74 }); }
public void SmallTest() { var graph = new BidirectionalGraph<int, Edge<int>>(); graph.AddVerticesAndEdgeRange(new[] { new Edge<int>(1, 2), new Edge<int>(1, 3), new Edge<int>(1, 4), new Edge<int>(1, 5), new Edge<int>(2, 4), new Edge<int>(3, 4), new Edge<int>(3, 5), new Edge<int>(4, 5) }); var result = graph.ComputeTransitiveReduction(); Assert.AreEqual(5, result.EdgeCount); }
public void SmallTest() { var graph = new BidirectionalGraph <int, Edge <int> >(); graph.AddVerticesAndEdgeRange(new[] { new Edge <int>(1, 2), new Edge <int>(1, 3), new Edge <int>(1, 4), new Edge <int>(1, 5), new Edge <int>(2, 4), new Edge <int>(3, 4), new Edge <int>(3, 5), new Edge <int>(4, 5) }); var result = graph.ComputeTransitiveReduction(); Assert.AreEqual(5, result.EdgeCount); }
public void TransitiveReduction_IsolatedVertices() { const string vertex1 = "/test"; const string vertex2 = "/test/123"; const string vertex3 = "/test/notlinked"; var edge12 = new Edge <string>(vertex1, vertex2); var graph = new BidirectionalGraph <string, Edge <string> >(); graph.AddVertexRange(new[] { vertex1, vertex2, vertex3 }); graph.AddEdge(edge12); BidirectionalGraph <string, Edge <string> > result = graph.ComputeTransitiveReduction(); AssertHasVertices(result, new[] { vertex1, vertex2, vertex3 }); AssertHasEdges(result, new[] { edge12 }); }
public void TransitiveReduction2() { var graph = new BidirectionalGraph <int, Edge <int> >(); graph.AddVerticesAndEdgeRange(new[] { new Edge <int>(0, 1), new Edge <int>(0, 2), new Edge <int>(0, 3), new Edge <int>(2, 3), new Edge <int>(2, 4), new Edge <int>(2, 5), new Edge <int>(3, 5), new Edge <int>(4, 5), new Edge <int>(6, 5), new Edge <int>(6, 7), new Edge <int>(7, 4) }); BidirectionalGraph <int, Edge <int> > result = graph.ComputeTransitiveReduction(); Assert.AreEqual(8, result.EdgeCount); }