public void CalculateLayout_ReportsAllProgress() { GeometryGraph treeGraph = GraphGenerator.GenerateTree(20); var settings = new FastIncrementalLayoutSettings(); InitialLayout layout = new InitialLayout(treeGraph, settings); double progress = 0.0; EventHandler<ProgressChangedEventArgs> handler = (s, e) => progress = e.RatioComplete; try { layout.ProgressChanged += handler; layout.Run(); } finally { layout.ProgressChanged -= handler; } Assert.AreEqual(0, treeGraph.BoundingBox.Bottom); Assert.AreEqual(0, treeGraph.BoundingBox.Left); foreach (var v in treeGraph.Nodes) { Assert.IsTrue(treeGraph.BoundingBox.Contains(v.BoundingBox)); } Assert.AreEqual(1.0, progress, "Progress was never reported as 100%. Last update was at " + progress + "%"); }
public void TreeGraphMdsLayout() { GeometryGraph treeGraph = GraphGenerator.GenerateTree(20); treeGraph.RootCluster = new Cluster(treeGraph.Nodes); var settings = new MdsLayoutSettings { ScaleX = 1, ScaleY = 1, RemoveOverlaps = true, PackingAspectRatio = 1.4 }; settings.EdgeRoutingSettings = new EdgeRoutingSettings { EdgeRoutingMode = EdgeRoutingMode.Spline, ConeAngle = Math.PI / 6, Padding = settings.NodeSeparation / 2.1 }; foreach (var v in treeGraph.Nodes) { v.BoundingBox = new Rectangle(0, 0, new Point(30, 30)); } var layout = new InitialLayoutByCluster(treeGraph, settings); double progress = 0.0; EventHandler <ProgressChangedEventArgs> handler = (s, e) => progress = e.RatioComplete; try { layout.ProgressChanged += handler; layout.Run(); } finally { layout.ProgressChanged -= handler; } EnableDebugViewer(); ShowGraphInDebugViewer(treeGraph); const double EdgeLengthDelta = 0.5; foreach (var e in treeGraph.Edges) { Assert.IsNotNull(e.Curve, "Edge curves not populated"); if (e.Source != e.Target) { double actualLength = (e.Source.Center - e.Target.Center).Length; double actualDesiredRatio = e.Length / actualLength; Assert.AreEqual(1, actualDesiredRatio, EdgeLengthDelta, "Edge length is not correct"); } } double aspectRatio = treeGraph.BoundingBox.Width / treeGraph.BoundingBox.Height; Assert.AreEqual(settings.PackingAspectRatio, aspectRatio, 1.4, "Aspect ratio too far from desired"); Assert.AreEqual(1.0, progress, "Progress was never reported as 100%. Last update was at " + progress + "%"); }
public void RouteEdges_LargeTree() { //DisplayGeometryGraph.SetShowFunctions(); Random random = new Random(1); int ntest = 10; for (int i = 0; i < ntest; i++) { GeometryGraph graph = GraphGenerator.GenerateTree(50 + random.Next(100)); AddRootCluster(graph); SetRandomNodeShapes(graph, random); Layout(graph, random); //DisplayGeometryGraph.ShowGraph(graph); RouteEdges(graph, 5 * random.NextDouble()); //DisplayGeometryGraph.ShowGraph(graph); } }
public void RouteEdges_CallsProgress() { //DisplayGeometryGraph.SetShowFunctions(); GeometryGraph graph = GraphGenerator.GenerateTree(10); double ratioComplete = 0; EventHandler <ProgressChangedEventArgs> handler = (s, e) => ratioComplete = e.RatioComplete; SplineRouter splineRouter = null; try { splineRouter = new SplineRouter(graph, 10, 1, Math.PI / 6, null); splineRouter.ProgressChanged += handler; splineRouter.Run(); // DisplayGeometryGraph.ShowGraph(graph); } finally { splineRouter.ProgressChanged -= handler; } Assert.AreEqual(1, ratioComplete, "RouteEdges did not complete"); }