protected static void AddEdgeRange_Clusters_Test( ClusteredAdjacencyGraph <int, Edge <int> > graph1, ClusteredAdjacencyGraph <int, Edge <int> > parent2, ClusteredAdjacencyGraph <int, Edge <int> > graph2) { // Graph without parent graph1.AddVertex(1); graph1.AddVertex(2); graph1.AddVertex(3); AssertNoEdge(graph1); // Edge 1, 2, 3 var edge1 = new Edge <int>(1, 2); var edge2 = new Edge <int>(1, 3); var edge3 = new Edge <int>(2, 3); Assert.AreEqual(3, graph1.AddEdgeRange(new[] { edge1, edge2, edge3 })); AssertHasEdges(graph1, new[] { edge1, edge2, edge3 }); // Edge 1, 4 var edge4 = new Edge <int>(2, 2); Assert.AreEqual(1, graph1.AddEdgeRange(new[] { edge1, edge4 })); // Showcase the add of only one edge AssertHasEdges(graph1, new[] { edge1, edge2, edge3, edge4 }); // Graph with parent graph2.AddVertex(1); graph2.AddVertex(2); graph2.AddVertex(3); AssertNoEdge(parent2); AssertNoEdge(graph2); // Edge 1, 2, 3 Assert.AreEqual(3, graph2.AddEdgeRange(new[] { edge1, edge2, edge3 })); AssertHasEdges(parent2, new[] { edge1, edge2, edge3 }); AssertHasEdges(graph2, new[] { edge1, edge2, edge3 }); // Edge 1, 4 Assert.AreEqual(1, parent2.AddEdgeRange(new[] { edge1, edge4 })); // Showcase the add of only one edge AssertHasEdges(parent2, new[] { edge1, edge2, edge3, edge4 }); AssertHasEdges(graph2, new[] { edge1, edge2, edge3 }); Assert.AreEqual(1, graph2.AddEdgeRange(new[] { edge1, edge4 })); // Showcase the add of only one edge AssertHasEdges(parent2, new[] { edge1, edge2, edge3, edge4 }); AssertHasEdges(graph2, new[] { edge1, edge2, edge3, edge4 }); }
protected static void AddEdgeRange_Throws_Clusters_Test( ClusteredAdjacencyGraph <int, Edge <int> > graph) { graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); AssertNoEdge(graph); // ReSharper disable once AssignNullToNotNullAttribute Assert.Throws <ArgumentNullException>(() => graph.AddEdgeRange(null)); AssertNoEdge(graph); // Edge 1, 2, 3 var edge1 = new Edge <int>(1, 2); var edge3 = new Edge <int>(2, 3); Assert.Throws <ArgumentNullException>(() => graph.AddEdgeRange(new[] { edge1, null, edge3 })); AssertNoEdge(graph); }
protected static void RemoveEdgeIf_Clusters_Test( [NotNull] ClusteredAdjacencyGraph <int, Edge <int> > graph) { var edge12 = new Edge <int>(1, 2); var edge13 = new Edge <int>(1, 3); var edge13Bis = new Edge <int>(1, 3); var edge14 = new Edge <int>(1, 4); var edge24 = new Edge <int>(2, 4); var edge31 = new Edge <int>(3, 1); var edge33 = new Edge <int>(3, 3); graph.AddVertexRange(new[] { 1, 2, 3, 4 }); graph.AddEdgeRange(new[] { edge12, edge13, edge13Bis, edge14, edge24, edge31, edge33 }); Assert.AreEqual(0, graph.RemoveEdgeIf(edge => edge.Target == 5)); Assert.AreEqual(2, graph.RemoveEdgeIf(edge => edge.Source == 3)); AssertHasVertices(graph, new[] { 1, 2, 3, 4 }); AssertHasEdges(graph, new[] { edge12, edge13, edge13Bis, edge14, edge24 }); Assert.AreEqual(5, graph.RemoveEdgeIf(edge => true)); AssertHasVertices(graph, new[] { 1, 2, 3, 4 }); AssertNoEdge(graph); }