public IEnumerable <GuestItineraryPoint> ShowSummary(GuestItineraryPoint startPoint, GuestItineraryPoint endPoint) { if (startPoint == null) { throw new ArgumentNullException(nameof(startPoint)); } if (endPoint == null) { throw new ArgumentNullException(nameof(endPoint)); } IEnumerable <GuestItineraryPoint> points = repository .Query(includeProperties: nameof(GuestItineraryPoint.Guests)) .OrderBy(x => x.Id) .ToList(); Graph <GuestItineraryPoint> graph = GraphFactory.CreateGraph(points); Node <GuestItineraryPoint> startNode = graph.Nodes?.SingleOrDefault(node => node?.Value?.Id == startPoint.Id); Node <GuestItineraryPoint> endNode = graph.Nodes?.SingleOrDefault(node => node?.Value?.Id == endPoint.Id); IEnumerable <Node <GuestItineraryPoint> > path = graph?.FindShortestPath(startNode, endNode); var result = path?.Select(item => { item.Value.Distance = item.TentativeDistance; return(item.Value); }); return(result); }
public void EmptyGraph() { //bogus Graph g = GraphFactory.CreateGraph(); Assert.AreEqual(g.NumVertices, 0); }
public ConcreteMap(TileType tileType, int width, int height, IPassability passability) { Passability = passability; TileType = tileType; MaxEdges = Helpers.GetMaxEdges(tileType); Height = height; Width = width; Graph = GraphFactory.CreateGraph(width, height, Passability); }
public void CreateGraphTest() { var passability = new Mock <IPassability>(); var movementCost = Constants.COST_ONE; passability.Setup(x => x.CanEnter(It.IsAny <Position>(), out movementCost)).Returns(true); var graph = GraphFactory.CreateGraph(8, 6, passability.Object); Assert.AreEqual(8 * 6, graph.Nodes.Count); Assert.IsTrue(graph.Nodes.TrueForAll(n => !n.Info.IsObstacle)); }
public void AddNodeToGraphTest() { var passability = new Mock <IPassability>(); int movementCost; passability.Setup(x => x.CanEnter(It.IsAny <Position>(), out movementCost)).Returns(true); // Set an arbitrary position as impassable, this should be reflected in the resulting graph passability.Setup(x => x.CanEnter(new Position(9, 8), out movementCost)).Returns(false); var graph = GraphFactory.CreateGraph(10, 10, passability.Object); Assert.IsTrue(graph.Nodes.Find(n => n.Info.IsObstacle).Info.Position.X == new Position(9, 8).X); }
public void RenderGraph_givenFillColor_generatesImage() { var colors = new List <Color> { Color.Blue, Color.Red, Color.Green, Color.White, Color.Black, Color.Aqua, Color.Yellow, Color.Magenta, Color.LightYellow, Color.SkyBlue, Color.OldLace, Color.SteelBlue, Color.DeepSkyBlue, Color.Gray, Color.Cornsilk }; var nodes = new List <Node>(); var edges = new List <Edge>(); foreach (var fill in colors) { Node prior = null; foreach (var font in colors) { Node n = CreateNode(fill, font); nodes.Add(n); if (prior != null) { Edge e = new Edge(prior, n); edges.Add(e); } prior = n; } } var graphFactory = new GraphFactory(); var graph = graphFactory.CreateGraph(nodes, edges); var renderer = new DotRenderer(graph); var image = renderer.RenderImage(); image.Save("NodeFillColor.png"); }
public void RenderGraph_givenFillColor_generatesImage() { var colors = new List<Color> { Color.Blue, Color.Red, Color.Green, Color.White, Color.Black, Color.Aqua, Color.Yellow, Color.Magenta, Color.LightYellow, Color.SkyBlue, Color.OldLace, Color.SteelBlue, Color.DeepSkyBlue, Color.Gray, Color.Cornsilk }; var nodes = new List<Node>(); var edges = new List<Edge>(); foreach (var fill in colors) { Node prior = null; foreach (var font in colors) { Node n = CreateNode(fill, font); nodes.Add(n); if (prior != null) { Edge e = new Edge(prior, n); edges.Add(e); } prior = n; } } var graphFactory = new GraphFactory(); var graph = graphFactory.CreateGraph(nodes, edges); var renderer = new DotRenderer(graph); var image = renderer.RenderImage(); image.Save("NodeFillColor.png"); }
public void RenderGraph_givenArrowShape_generatesImage( [Values(ArrowShape.Box, ArrowShape.Crow, ArrowShape.Diamond, ArrowShape.Dot, ArrowShape.Inv, ArrowShape.None, ArrowShape.Normal, ArrowShape.Tee, ArrowShape.Vee)] ArrowShape arrowHead) { var edgeStyle = new EdgeStyle(); edgeStyle.ArrowHead = arrowHead; var startStyles = new List <ArrowShape> { ArrowShape.Box, ArrowShape.Crow, ArrowShape.Diamond, ArrowShape.Dot, ArrowShape.Inv, ArrowShape.None, ArrowShape.Normal, ArrowShape.Tee, ArrowShape.Vee }; var starts = new List <Node>(); var edges = new List <Edge>(); var finish = new Node("finish", "Finish"); foreach (var shape in startStyles) { var n = Enum.GetName(typeof(ArrowShape), shape); var s = new Node(n, n); edgeStyle.ArrowTail = shape; var e = new Edge(s, finish, edgeStyle); starts.Add(s); edges.Add(e); } var graphFactory = new GraphFactory(); var graph = graphFactory.CreateGraph(starts, finish, edges); var renderer = new DotRenderer(graph); var head = Enum.GetName(typeof(ArrowShape), arrowHead); var filename = head + ".png"; var image = renderer.RenderImage(); image.Save(filename); }
public void RenderGraph_givenNodeShape_generatesImage( [Values(NodeShape.None, NodeShape.Box, NodeShape.Circle, NodeShape.Diamond, NodeShape.DoubleCircle, NodeShape.DoubleOctagon, NodeShape.Egg, NodeShape.Ellipse, NodeShape.Hexagon, NodeShape.House, NodeShape.InvHouse, NodeShape.InvTrapezium, NodeShape.InvTriangle, NodeShape.MCircle, NodeShape.MDiamond, NodeShape.MSquare, NodeShape.Octagon, NodeShape.Parallelogram, NodeShape.Pentagon, NodeShape.Plaintext, NodeShape.Point, NodeShape.Polygon, NodeShape.Septagon, NodeShape.Trapezium, NodeShape.Triangle, NodeShape.TripleOctagon)] NodeShape shape) { var nodeStyle = new NodeStyle(); nodeStyle.Shape = shape; var n = Enum.GetName(typeof(NodeShape), shape); var node = nodeStyle.CreateNode(n, n); var graphFactory = new GraphFactory(); var graph = graphFactory.CreateGraph(node); var renderer = new DotRenderer(graph); var filename = n + ".png"; var image = renderer.RenderImage(); image.Save(filename); }
public void RenderGraph_givenArrowShape_generatesImage( [Values(ArrowShape.Box, ArrowShape.Crow, ArrowShape.Diamond, ArrowShape.Dot, ArrowShape.Inv, ArrowShape.None, ArrowShape.Normal, ArrowShape.Tee, ArrowShape.Vee)] ArrowShape arrowHead) { var edgeStyle = new EdgeStyle(); edgeStyle.ArrowHead = arrowHead; var startStyles = new List<ArrowShape> { ArrowShape.Box, ArrowShape.Crow, ArrowShape.Diamond, ArrowShape.Dot, ArrowShape.Inv, ArrowShape.None, ArrowShape.Normal, ArrowShape.Tee, ArrowShape.Vee }; var starts = new List<Node>(); var edges = new List<Edge>(); var finish = new Node("finish", "Finish"); foreach (var shape in startStyles) { var n = Enum.GetName(typeof(ArrowShape), shape); var s = new Node(n, n); edgeStyle.ArrowTail = shape; var e = new Edge(s, finish, edgeStyle); starts.Add(s); edges.Add(e); } var graphFactory = new GraphFactory(); var graph = graphFactory.CreateGraph(starts, finish, edges); var renderer = new DotRenderer(graph); var head = Enum.GetName(typeof(ArrowShape), arrowHead); var filename = head + ".png"; var image = renderer.RenderImage(); image.Save(filename); }
private Graph CreateGraph() { var factory = new GraphFactory(); return(factory.CreateGraph()); }
private void GetMetamodel(string contextDir, string metamodelDir, ref Graph metamodelGraph) { if (!Directory.Exists(contextDir)) { throw new DirectoryNotFoundException($"context directory doesn't exist: {metamodelDir}"); } if (!Directory.Exists(metamodelDir)) { throw new DirectoryNotFoundException($"metamodel directory doesn't exist: {metamodelDir}"); } // Load JSON-LD context objects JObject classContextJsonObject = LoadJsonObject(Path.Combine(contextDir, ClassJsonContextName)); JObject interfaceContextJsonObject = LoadJsonObject(Path.Combine(contextDir, InterfaceJsonContextName)); JObject templateContextJsonObject = LoadJsonObject(Path.Combine(contextDir, TemplateJsonContextName)); GraphFactoryOptions graphFactoryOptions = new GraphFactoryOptions(); graphFactoryOptions.SetDefaultContext(interfaceContextJsonObject); // Build metamodel graph List <string> fileNames = new List <string>(); fileNames.AddRange(Directory.GetFiles(metamodelDir, "*.json")); fileNames.AddRange(Directory.GetFiles(metamodelDir, "*.jsonld")); foreach (string fileName in fileNames) { Console.WriteLine("Parse JSON-LD file: {0}", fileName); string json = File.ReadAllText(fileName); JObject jsonObj = JObject.Parse(json); // Replace the context IRI with a local context object var contextObject = jsonObj["@context"]; int tokenCount = contextObject.Children().Count(); for (int i = 0; i < tokenCount; i++) { string context = contextObject[i].ToString(); // Replace context IRI http://azureiot.com/v0/contexts/Class.json with local context object if (context.EndsWith(ClassJsonContextName, StringComparison.OrdinalIgnoreCase)) { contextObject[i] = classContextJsonObject["@context"]; } // Replace context IRI http://azureiot.com/v0/contexts/Interface.json with local context object else if (context.EndsWith(InterfaceJsonContextName, StringComparison.OrdinalIgnoreCase)) { contextObject[i] = interfaceContextJsonObject["@context"]; } // Replace context IRI http://azureiot.com/v0/contexts/Template.json with local context object else if (context.EndsWith(TemplateJsonContextName, StringComparison.OrdinalIgnoreCase)) { contextObject[i] = templateContextJsonObject["@context"]; } } Graph loadedGraph = GraphFactory.CreateGraph(jsonObj, graphFactoryOptions); metamodelGraph.Merge(loadedGraph); } string[] subDirectories = Directory.GetDirectories(metamodelDir); foreach (string subDirectory in subDirectories) { GetMetamodel(contextDir, subDirectory, ref metamodelGraph); } }
/// <summary> /// Create a graph to test with /// </summary> /// <returns>New graph instance</returns> private Graph CreateGraph(params object[] content) { var factory = new GraphFactory(); return factory.CreateGraph(content); }
private Graph CreateGraph() { var factory = new GraphFactory(); return factory.CreateGraph(); }
/// <summary> /// Create a graph to test with /// </summary> /// <returns>New graph instance</returns> private Graph CreateGraph(params object[] content) { var factory = new GraphFactory(); return(factory.CreateGraph(content)); }