Ejemplo n.º 1
0
        /// <summary>
        /// Run the tutorial.
        /// </summary>
        public void Run()
        {
            var Graph1 = GraphFactory.CreateGenericPropertyGraph(1);
            var Graph2 = GraphFactory.CreateGenericPropertyGraph(2);
            var Graph3 = GraphFactory.CreateGenericPropertyGraph(3);
            var Graph4 = GraphFactory.CreateGenericPropertyGraph(4);
            var Graph5 = GraphFactory.CreateGenericPropertyGraph(5);

            var PartitionGraph1 = GraphFactory.CreatePartitionGraph(23UL, "Stack of graphs 1-5", Graph1, Graph2, Graph3, Graph4, Graph5);
            var PartitionGraph2 = Graph1.CreatePartitionGraph(42UL, "Stack of graphs 1-3", Graph2, Graph3);

            Graph2.OnVertexAddition.OnNotification          += (graph, vertex) => Console.WriteLine("Vertex #" + vertex.Id + " had been added to graph #" + graph.Id);
            PartitionGraph1.OnVertexAddition.OnNotification += (graph, vertex) => Console.WriteLine("Vertex #" + vertex.Id + " had been added to the partition graph");
            PartitionGraph1.OnVertexAddition.OnVoting       += (graph, vertex, vote) => { if (vertex.Id == 7)
                                                                                          {
                                                                                              Console.WriteLine("The vertex id '7' is not allowed!"); vote.Deny();
                                                                                          }
            };

            Graph1.AddVertex(1, "vertex", v => v.SetProperty("GraphId", 1));
            Graph2.AddVertex(2, "vertex", v => v.SetProperty("GraphId", 2));
            Graph3.AddVertex(3, "vertex", v => v.SetProperty("GraphId", 3));
            Graph4.AddVertex(4, "vertex", v => v.SetProperty("GraphId", 4));
            Graph5.AddVertex(5, "vertex", v => v.SetProperty("GraphId", 5));

            PartitionGraph1.AddVertex(6, "vertex", v => v.SetProperty("GraphId", 6));
            PartitionGraph1.AddVertex(7, "vertex", v => v.SetProperty("GraphId", 7));

            Console.WriteLine(PartitionGraph1.NumberOfVertices());
            Console.WriteLine(PartitionGraph1.NumberOfVertices(v => v.Id != 3));

            var v1a = PartitionGraph1.VertexById(1);    // valid
            var v2a = PartitionGraph1.VertexById(2);    // valid
            var v3a = PartitionGraph1.VertexById(3);    // valid
            var v4a = PartitionGraph1.VertexById(4);    // valid
            var v5a = PartitionGraph1.VertexById(5);    // valid
            var v6a = PartitionGraph1.VertexById(6);    // valid
            var v7x = Graph1.VertexById(7);             // null
            var v7a = PartitionGraph1.VertexById(7);    // null

            var v1b = PartitionGraph2.VertexById(1);    // valid
            var v2b = PartitionGraph2.VertexById(2);    // valid
            var v3b = PartitionGraph2.VertexById(3);    // valid
            var v4b = PartitionGraph2.VertexById(4);    // null
            var v5b = PartitionGraph2.VertexById(5);    // null
            var v6b = PartitionGraph2.VertexById(6);    // valid
            var v7b = PartitionGraph2.VertexById(7);    // null
        }