public void GraphCanBeGeneratedFromCubeSurfaces() { using (Solid testcube = UnfoldTestUtils.SetupCube()) { var faces = testcube.Faces; var surfaces = faces.Select(x => x.SurfaceGeometry()).ToList(); Assert.AreEqual(surfaces.Count, 6); var graph = ModelTopology.GenerateTopologyFromSurfaces(surfaces); List <Object> face_objs = surfaces.Select(x => x as Object).ToList(); UnfoldTestUtils.GraphHasVertForEachFace(graph, face_objs); UnfoldTestUtils.GraphHasCorrectNumberOfEdges(24, graph); var sccs = GraphUtilities.TarjansAlgo <EdgeLikeEntity, FaceLikeEntity> .CycleDetect(graph, GraphUtilities.EdgeType.Graph); UnfoldTestUtils.IsOneStronglyConnectedGraph(sccs); foreach (IDisposable item in graph) { Console.WriteLine("disposing a graphnode"); item.Dispose(); } foreach (IDisposable item in faces) { Console.WriteLine("disposing a face"); item.Dispose(); } } }
public void GraphCanBeGeneratedFromCubeFaces() { using (Solid testcube = UnfoldTestUtils.SetupCube()) { var faces = testcube.Faces.ToList(); Assert.AreEqual(faces.Count, 6); List <GraphVertex <EdgeLikeEntity, FaceLikeEntity> > graph; graph = ModelTopology.GenerateTopologyFromFaces(faces); List <Object> face_objs = faces.Select(x => x as Object).ToList(); UnfoldTestUtils.GraphHasVertForEachFace(graph, face_objs); UnfoldTestUtils.GraphHasCorrectNumberOfEdges(24, graph); var sccs = GraphUtilities.TarjansAlgo <EdgeLikeEntity, FaceLikeEntity> .CycleDetect(graph, GraphUtilities.EdgeType.Graph); UnfoldTestUtils.IsOneStronglyConnectedGraph(sccs); //manual dispose of lists of Idisposeable, should implement graph type foreach (IDisposable item in graph) { Console.WriteLine("disposing a graphnode"); item.Dispose(); } } }