public void EdgeCondensationSomeVertices() { var edge12 = new Edge <int>(1, 2); var edge13 = new Edge <int>(1, 3); var edge23 = new Edge <int>(2, 3); var edge38 = new Edge <int>(3, 8); var edge42 = new Edge <int>(4, 2); var edge43 = new Edge <int>(4, 3); var edge44 = new Edge <int>(4, 4); var edge45 = new Edge <int>(4, 5); var edge56 = new Edge <int>(5, 6); var edge57 = new Edge <int>(5, 7); var edge76 = new Edge <int>(7, 6); var edge71 = new Edge <int>(7, 1); var edge89 = new Edge <int>(8, 9); var edge82 = new Edge <int>(8, 2); var graph = new BidirectionalGraph <int, Edge <int> >(); graph.AddVerticesAndEdgeRange(new[] { edge12, edge13, edge23, edge38, edge42, edge43, edge44, edge45, edge56, edge57, edge76, edge71, edge89, edge82 }); IMutableBidirectionalGraph <int, MergedEdge <int, Edge <int> > > condensedGraph = graph.CondensateEdges(v => v == 4 || v == 8); Assert.IsNotNull(condensedGraph); Assert.AreEqual(2, condensedGraph.VertexCount); Assert.AreEqual(6, condensedGraph.EdgeCount); CollectionAssert.AreEquivalent(new[] { 4, 8 }, condensedGraph.Vertices); CollectionAssert.AreEquivalent(new[] { edge82, edge23, edge38 }, condensedGraph.Edges.ElementAt(0).Edges); CollectionAssert.AreEquivalent(new[] { edge44 }, condensedGraph.Edges.ElementAt(1).Edges); CollectionAssert.AreEquivalent(new[] { edge43, edge38 }, condensedGraph.Edges.ElementAt(2).Edges); CollectionAssert.AreEquivalent(new[] { edge42, edge23, edge38 }, condensedGraph.Edges.ElementAt(3).Edges); CollectionAssert.AreEquivalent(new[] { edge45, edge57, edge71, edge13, edge38 }, condensedGraph.Edges.ElementAt(4).Edges); CollectionAssert.AreEquivalent(new[] { edge45, edge57, edge71, edge12, edge23, edge38 }, condensedGraph.Edges.ElementAt(5).Edges); }