示例#1
0
        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 });
        }
示例#2
0
        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);
        }