public void TestLiveEdgeDynamicGraphAddRemove1() { uint tagsId = 10; var graph = new MemoryDynamicGraph <LiveEdge>(); var vertex1 = graph.AddVertex(51, 1); var vertex2 = graph.AddVertex(51, 2); graph.AddEdge(vertex1, vertex2, new LiveEdge() { Forward = true, Tags = tagsId }, null); // test forward edge. var arcs = graph.GetEdges(vertex1); Assert.AreEqual(1, arcs.Length); Assert.AreEqual(tagsId, arcs[0].Value.Tags); Assert.AreEqual(vertex2, arcs[0].Key); Assert.AreEqual(true, arcs[0].Value.Forward); // remove edge again. graph.RemoveEdge(vertex1, vertex2); // check if the edge is gone. arcs = graph.GetEdges(vertex1); Assert.AreEqual(0, arcs.Length); }
public void TestLiveEdgeDynamicGraphRemoveAll() { var graph = new MemoryDynamicGraph <LiveEdge>(); var vertex1 = graph.AddVertex(51, 1); var vertex2 = graph.AddVertex(51, 2); var vertex3 = graph.AddVertex(51, 3); var vertex4 = graph.AddVertex(51, 3); graph.AddEdge(vertex1, vertex2, new LiveEdge() { Forward = true, Tags = 1 }, null); graph.AddEdge(vertex2, vertex3, new LiveEdge() { Forward = true, Tags = 2 }, null); graph.AddEdge(vertex3, vertex4, new LiveEdge() { Forward = true, Tags = 3 }, null); graph.AddEdge(vertex4, vertex2, new LiveEdge() { Forward = true, Tags = 4 }, null); graph.RemoveEdge(vertex2, vertex1); graph.RemoveEdge(vertex2, vertex3); graph.RemoveEdge(vertex4, vertex3); graph.RemoveEdge(vertex4, vertex2); Assert.IsFalse(graph.ContainsEdge(vertex2, vertex1)); Assert.IsFalse(graph.ContainsEdge(vertex2, vertex3)); Assert.IsFalse(graph.ContainsEdge(vertex4, vertex3)); Assert.IsFalse(graph.ContainsEdge(vertex4, vertex2)); }
public void TestLiveEdgeDynamicGraphAddRemove2() { uint tagsId = 10; var graph = new MemoryDynamicGraph <LiveEdge>(); var vertex1 = graph.AddVertex(51, 1); var vertex2 = graph.AddVertex(51, 2); var vertex3 = graph.AddVertex(51, 3); graph.AddEdge(vertex1, vertex2, new LiveEdge() { Forward = true, Tags = tagsId }, null); graph.AddEdge(vertex2, vertex3, new LiveEdge() { Forward = true, Tags = tagsId }, null); // test edges. var edges = graph.GetEdges(vertex1); Assert.AreEqual(1, edges.Length); Assert.AreEqual(tagsId, edges[0].Value.Tags); Assert.AreEqual(vertex2, edges[0].Key); Assert.AreEqual(true, edges[0].Value.Forward); edges = graph.GetEdges(vertex2); Assert.AreEqual(2, edges.Length); edges = graph.GetEdges(vertex3); Assert.AreEqual(1, edges.Length); Assert.AreEqual(tagsId, edges[0].Value.Tags); Assert.AreEqual(vertex2, edges[0].Key); Assert.AreEqual(false, edges[0].Value.Forward); // remove edge again. graph.RemoveEdge(vertex1, vertex2); // test edges. edges = graph.GetEdges(vertex1); Assert.AreEqual(0, edges.Length); edges = graph.GetEdges(vertex2); Assert.AreEqual(1, edges.Length); Assert.AreEqual(tagsId, edges[0].Value.Tags); Assert.AreEqual(vertex3, edges[0].Key); Assert.AreEqual(true, edges[0].Value.Forward); edges = graph.GetEdges(vertex3); Assert.AreEqual(1, edges.Length); Assert.AreEqual(tagsId, edges[0].Value.Tags); Assert.AreEqual(vertex2, edges[0].Key); Assert.AreEqual(false, edges[0].Value.Forward); }
public void TestLiveEdgeDynamicGraphCompressEdges() { var graph = new MemoryDynamicGraph <LiveEdge>(); var vertex1 = graph.AddVertex(51, 1); var vertex2 = graph.AddVertex(51, 2); var vertex3 = graph.AddVertex(51, 3); var vertex4 = graph.AddVertex(51, 3); graph.AddEdge(vertex1, vertex2, new LiveEdge() { Forward = true, Tags = 1 }, null); graph.AddEdge(vertex2, vertex3, new LiveEdge() { Forward = true, Tags = 2 }, null); graph.AddEdge(vertex3, vertex4, new LiveEdge() { Forward = true, Tags = 3 }, null); graph.AddEdge(vertex4, vertex2, new LiveEdge() { Forward = true, Tags = 4 }, null); graph.RemoveEdge(vertex2, vertex3); graph.Compress(); Assert.IsFalse(graph.ContainsEdge(vertex2, vertex3)); Assert.IsFalse(graph.ContainsEdge(vertex3, vertex2)); Assert.AreEqual(graph.GetEdges(vertex1).Length, 1); Assert.AreEqual(graph.GetEdges(vertex2).Length, 2); Assert.AreEqual(graph.GetEdges(vertex3).Length, 1); Assert.AreEqual(graph.GetEdges(vertex4).Length, 2); graph = new MemoryDynamicGraph <LiveEdge>(); vertex1 = graph.AddVertex(51, 1); vertex2 = graph.AddVertex(51, 2); vertex3 = graph.AddVertex(51, 3); vertex4 = graph.AddVertex(51, 3); graph.AddEdge(vertex1, vertex2, new LiveEdge() { Forward = true, Tags = 1 }, null); graph.AddEdge(vertex2, vertex3, new LiveEdge() { Forward = true, Tags = 2 }, null); graph.AddEdge(vertex3, vertex4, new LiveEdge() { Forward = true, Tags = 3 }, null); graph.AddEdge(vertex4, vertex2, new LiveEdge() { Forward = true, Tags = 4 }, null); graph.RemoveEdge(vertex3, vertex4); graph.Compress(); Assert.IsFalse(graph.ContainsEdge(vertex3, vertex4)); Assert.IsFalse(graph.ContainsEdge(vertex4, vertex3)); Assert.AreEqual(graph.GetEdges(vertex1).Length, 1); Assert.AreEqual(graph.GetEdges(vertex2).Length, 3); Assert.AreEqual(graph.GetEdges(vertex3).Length, 1); Assert.AreEqual(graph.GetEdges(vertex4).Length, 1); LiveEdge edge; Assert.IsTrue(graph.GetEdge(vertex1, vertex2, out edge)); Assert.AreEqual(1, edge.Tags); Assert.IsTrue(graph.GetEdge(vertex2, vertex3, out edge)); Assert.AreEqual(2, edge.Tags); Assert.IsTrue(graph.GetEdge(vertex4, vertex2, out edge)); Assert.AreEqual(4, edge.Tags); }