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."); } } }
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); } }
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); }