private static void CalculateLeastWeigtPath(List<string> lines) { string[] nodes = lines[0].Split(' '); List<Link> nodesLinks = new List<Link>(); if (lines.Count < 3) { Console.WriteLine("Invalid links"); return; } for (int i = 2; i <= lines.Count - 1; i++) { if (lines[i].Trim() == "") { break; } var linkValues = lines[i].Split(' '); if (linkValues.Length != 3) { Console.WriteLine("Invalid links"); return; } Link newLink = new Link(linkValues[0], linkValues[1], int.Parse(linkValues[2])); nodesLinks.Add(newLink); } string[] targetPath = lines[1].Split(' '); if (targetPath.Length != 2) { Console.WriteLine("Invalid target Path"); return; } PathsManager manager = new PathsManager(nodes, nodesLinks); PathResult result = manager.GetLeastWeightedPath(targetPath[0], targetPath[1]); if (result.Message != "") { Console.WriteLine(result.Message); } else { Console.WriteLine(string.Join(" ", result.Path)); } Console.WriteLine(result.TotalWeights); }
public void NotSolucionTest() { string[] node = "A B C D E F G H".Split(' '); var links = new List<Link>() { new Link("A", "B", 10), new Link("A", "C", 15), new Link("C", "H", 20), new Link("B", "H", 15) }; PathsManager manager = new PathsManager(node, links); var result = manager.GetLeastWeightedPath("A", "D"); Assert.AreEqual("There is no solution for specifieds nodes!", result.Message); }
public void InvalidTargetPathTest() { string[] node = "A B C D E F G H".Split(' '); var links = new List<Link>() { new Link("A", "B", 10), new Link("A", "C", 15), new Link("C", "H", 20), new Link("B", "H", 15) }; PathsManager manager = new PathsManager(node, links); var result = manager.GetLeastWeightedPath("A", "K"); Assert.AreEqual("The specified target path is not valid!", result.Message); }
public void TestB() { string[] node = "A B C D E F G H".Split(' '); var links = new List<Link>() { new Link("A", "B", 10), new Link("A", "C", 15), new Link("C", "H", 20), new Link("B", "H", 15), new Link("C", "D", 5), new Link("D", "G", 25), }; PathsManager manager = new PathsManager(node, links); var expectedResut = new PathResult(new List<string> { "A", "C", "D"}, 20); var result = manager.GetLeastWeightedPath("A", "D"); Assert.AreEqual(true, expectedResut.Equals(result)); }