Ejemplo n.º 1
0
        public void TestDirectedGraphSwitchThreeVerticesTwoEdges()
        {
            float latitude, longitude;
            var graph = new DirectedGraph<Edge>();
            var vertex1 = graph.AddVertex(1, 1);
            var vertex2 = graph.AddVertex(2, 2);
            var vertex3 = graph.AddVertex(3, 3);
            graph.AddEdge(1, 2, new Edge()
            {
                Tags = 1,
                Forward = true
            });
            graph.AddEdge(1, 3, new Edge()
            {
                Tags = 2,
                Forward = true
            });
            var reverse = new Dictionary<uint, List<uint>>();
            reverse.Add(2, new List<uint>(new uint[] { 1 }));
            reverse.Add(3, new List<uint>(new uint[] { 1 }));

            graph.Switch(vertex1, vertex2, reverse);

            graph.GetVertex(1, out latitude, out longitude);
            Assert.AreEqual(2, latitude);
            Assert.AreEqual(2, longitude);
            graph.GetVertex(2, out latitude, out longitude);
            Assert.AreEqual(1, latitude);
            Assert.AreEqual(1, longitude);
            var edges = graph.GetEdges(1);
            Assert.AreEqual(0, edges.Count);
            edges = graph.GetEdges(2);
            Assert.AreEqual(2, edges.Count);
            foreach (var edge in edges)
            {
                if (edge.Neighbour == 1)
                {
                    Assert.AreEqual(1, edge.EdgeData.Tags);
                    Assert.IsTrue(edge.EdgeData.Forward);
                }
                else if (edge.Neighbour == 3)
                {
                    Assert.AreEqual(2, edge.EdgeData.Tags);
                    Assert.IsTrue(edge.EdgeData.Forward);
                }
                else
                {
                    Assert.Fail("The only edge should be an edge with neighbour equal to 2.");
                }
            }
        }
Ejemplo n.º 2
0
        public void TestDirectedGraphSwitchTwiceThreeVerticesTwoEdges()
        {
            float latitude, longitude;
            var graph = new DirectedGraph<Edge>();
            var vertex1 = graph.AddVertex(1, 1);
            var vertex2 = graph.AddVertex(2, 2);
            var vertex3 = graph.AddVertex(3, 3);
            graph.AddEdge(1, 2, new Edge()
            {
                Tags = 1,
                Forward = true
            });
            graph.AddEdge(3, 1, new Edge()
            {
                Tags = 2,
                Forward = true
            });
            var reverse = new Dictionary<uint, List<uint>>();
            reverse.Add(2, new List<uint>(new uint[] { 1 }));
            reverse.Add(1, new List<uint>(new uint[] { 3 }));

            graph.Switch(vertex1, vertex2, reverse);
            graph.Switch(vertex2, vertex3, reverse);

            graph.GetVertex(1, out latitude, out longitude);
            Assert.AreEqual(2, latitude);
            Assert.AreEqual(2, longitude);
            graph.GetVertex(2, out latitude, out longitude);
            Assert.AreEqual(3, latitude);
            Assert.AreEqual(3, longitude);
            graph.GetVertex(3, out latitude, out longitude);
            Assert.AreEqual(1, latitude);
            Assert.AreEqual(1, longitude);
            var edges = graph.GetEdges(1);
            Assert.AreEqual(0, edges.Count);
            edges = graph.GetEdges(2);
            Assert.AreEqual(1, edges.Count);
            foreach (var edge in edges)
            {
                Assert.AreEqual(3, edge.Neighbour);
                Assert.AreEqual(2, edge.EdgeData.Tags);
                Assert.IsTrue(edge.EdgeData.Forward);
            }
            edges = graph.GetEdges(3);
            Assert.AreEqual(1, edges.Count);
            foreach (var edge in edges)
            {
                Assert.AreEqual(1, edge.Neighbour);
                Assert.AreEqual(1, edge.EdgeData.Tags);
                Assert.IsTrue(edge.EdgeData.Forward);
            }
        }
Ejemplo n.º 3
0
        public void TestDirectedGraphSwitchTwoVertices()
        {
            // two vertices 
            var graph = new DirectedGraph<Edge>();
            var vertex1 = graph.AddVertex(1, 1);
            var vertex2 = graph.AddVertex(2, 2);
            var reverse = new Dictionary<uint, List<uint>>();

            graph.Switch(vertex1, vertex2, reverse);

            float latitude, longitude;
            graph.GetVertex(1, out latitude, out longitude);
            Assert.AreEqual(2, latitude);
            Assert.AreEqual(2, longitude);
            graph.GetVertex(2, out latitude, out longitude);
            Assert.AreEqual(1, latitude);
            Assert.AreEqual(1, longitude);
        }