Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public void EmptyGraph()
        {
            //bogus
            Graph g = GraphFactory.CreateGraph();

            Assert.AreEqual(g.NumVertices, 0);
        }
Ejemplo n.º 3
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);
 }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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");
        }
Ejemplo n.º 7
0
        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");
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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());
        }
Ejemplo n.º 12
0
        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);
            }
        }
Ejemplo n.º 13
0
 /// <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);
 }
Ejemplo n.º 14
0
 private Graph CreateGraph()
 {
     var factory = new GraphFactory();
     return factory.CreateGraph();
 }
Ejemplo n.º 15
0
        /// <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));
        }