public void AddEdgeToGraph() { ///Test that edge can be successfully added Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); Node testV2 = new Node("Test2"); graph.AddNode(testV1); graph.AddNode(testV2); graph.AddEdge(testV1, testV2, 4); Edge testEdge = new Edge(testV1, testV2, 4); List <Node> expected = new List <Node>(); expected.Add(testEdge.V1); List <Edge> graphEdges = graph.GetNeighbors(testV2); List <Node> actual = new List <Node>(); foreach (Edge e in graphEdges) { actual.Add(e.V1); } Assert.Equal(expected, actual); }
public void RetreiveAllNodeNeighbors() { ///Test that all node neighbors can be retreived Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); Node testV2 = new Node("Test2"); Node testV3 = new Node("Test3"); graph.AddNode(testV1); graph.AddNode(testV2); graph.AddEdge(testV1, testV2, 4); graph.AddEdge(testV2, testV3, 8); Edge testEdge = new Edge(testV1, testV2, 4); Edge testEdge2 = new Edge(testV2, testV3, 8); List <Node> expected = new List <Node>(); expected.Add(testEdge.V1); expected.Add(testEdge2.V1); List <Edge> graphEdges = graph.GetNeighbors(testV2); List <Node> actual = new List <Node>(); foreach (Edge e in graphEdges) { actual.Add(e.V1); } Assert.Equal(expected, actual); }
private static void PerformGraphOps() { var graph = new Graphs(); graph.AddNode("a"); graph.AddNode("b"); graph.AddNode("c"); graph.AddEdge("a", "b"); graph.AddEdge("a", "c"); graph.Print(); var graph2 = new Graphs(); graph2.AddNode("a"); graph2.AddNode("b"); graph2.AddNode("c"); graph2.AddNode("d"); graph2.AddEdge("a", "b"); graph2.AddEdge("a", "c"); graph2.AddEdge("b", "d"); graph2.AddEdge("d", "c"); Console.WriteLine("Recursive Depth First Traversal"); graph2.RecursiveDepthFirstTraversal("a"); Console.WriteLine("Iterative Depth First Traversal"); graph2.IterativeDepthFirstTraversal("a"); Console.WriteLine("Breadth First Traversal"); graph2.BreadthFirstTraversal("a"); var graph3 = new Graphs(); graph3.AddNode("x"); graph3.AddNode("a"); graph3.AddNode("b"); graph3.AddNode("p"); graph3.AddEdge("x", "a"); graph3.AddEdge("x", "b"); graph3.AddEdge("a", "p"); graph3.AddEdge("b", "p"); Console.WriteLine("Topolocally Sorted List"); graph3.TopologicalSort().ForEach(x => { Console.WriteLine(x); }); var graph4 = new Graphs(); graph4.AddNode("a"); graph4.AddNode("b"); graph4.AddNode("c"); graph4.AddNode("d"); graph4.AddEdge("a", "b"); graph4.AddEdge("b", "c"); graph4.AddEdge("c", "a"); graph4.AddEdge("a", "d"); Console.WriteLine("Graph contains Cycle" + graph4.IsCyclePresent()); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); Node testV2 = new Node("Test2"); graph.AddNode(testV1); graph.AddNode(testV2); graph.AddEdge(testV1, testV2, 4); DepthFirst(graph); }
public void RetreiveVertices() { ///test that method will return all vertices/Vertex Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); Node testV2 = new Node("Test2"); graph.AddNode(testV1); graph.AddNode(testV2); graph.AddEdge(testV1, testV2, 4); List <Node> expected = new List <Node>(); expected.Add(testV1); expected.Add(testV2); Assert.Equal(expected, graph.GetNodes()); }
public void ReturnVisitedNodes() { ///test that method will return ordered list of visited nodes Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); Node testV2 = new Node("Test2"); graph.AddNode(testV1); graph.AddNode(testV2); graph.AddEdge(testV1, testV2, 4); List <Node> expected = new List <Node>(); expected.Add(testV1); expected.Add(testV2); Assert.Equal(expected, graph.BreadFirst(testV1)); }
public void RetreiveGraphSize() { ///Test graph size returns accordingly Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); Node testV2 = new Node("Test2"); Node testV3 = new Node("Test3"); graph.AddNode(testV1); graph.AddNode(testV2); graph.AddEdge(testV1, testV2, 4); graph.AddEdge(testV2, testV3, 8); int expected = 2; Assert.Equal(expected, graph.GetSize()); }
public void RetreiveWeightNeighbors() { ///Test that all weight can be retrieved from neighbors Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); Node testV2 = new Node("Test2"); graph.AddNode(testV1); graph.AddNode(testV2); graph.AddEdge(testV1, testV2, 4); Edge testEdge = new Edge(testV1, testV2, 4); List <Edge> graphEdges = graph.GetNeighbors(testV2); int weight = 0; foreach (Edge e in graphEdges) { weight = e.Weight; } Assert.Equal(testEdge.Weight, weight); }
public void ReturnSingleVisitedNode() { ///test that method will return a single visited node Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); graph.AddNode(testV1); List <Node> expected = new List <Node>(); expected.Add(testV1); Assert.Equal(expected, graph.BreadFirst(testV1)); }
public void AddNodeToGraph() { ///Test that vertex can be added to graph Graphs graph = new Graphs(); Node testVertex = new Node("Test"); graph.AddNode(testVertex); List <Node> expected = new List <Node>(); expected.Add(testVertex); Assert.Equal(expected, graph.GetNodes()); }
public static Graphs OpenGraph(string filename) { FileStream stream = new FileStream(filename, FileMode.Open); BinaryReader binaryReader = new BinaryReader(stream); Graphs graph = new Graphs(); int n = binaryReader.ReadInt32(); for (int i = 0; i < n; i++) { graph.AddNode(binaryReader.ReadInt32(), binaryReader.ReadInt32()); } n = binaryReader.ReadInt32(); for (int i = 0; i < n; i++) { graph.AddEdge(graph.Nodes[binaryReader.ReadInt32()], graph.Nodes[binaryReader.ReadInt32()]); } binaryReader.Close(); stream.Close(); return(graph); }
public void RetreiveSingleNodeandEdge() { ///Test that a single vertex and edge can be found Graphs graph = new Graphs(); Node testV1 = new Node("Test1"); graph.AddNode(testV1); graph.AddEdge(testV1, testV1, 4); Edge testEdge = new Edge(testV1, testV1, 4); List <Node> expected = new List <Node>(); expected.Add(testEdge.V1); List <Edge> graphEdges = graph.GetNeighbors(testV1); List <Node> actual = new List <Node>(); foreach (Edge e in graphEdges) { actual.Add(e.V1); } Assert.Equal(expected, actual); }