public static void Main(string[] args) { //Create string Array. //Read in input array. Console.WriteLine( "Please insert your package dependancy array make sure all entered \ndata looks like is Package: Dependancy. Package: is valid input as well.\n"); var userInput = Console.ReadLine(); var parseUserInput = userInput.Split(','); //Validate the string Array. if (PackageDependencyParser.ValidateStringArray(parseUserInput)) { //Create package install order. string output = PackageDependencyParser.PackageOrder(parseUserInput); Console.WriteLine(string.IsNullOrEmpty(output) ? "There is no valid package dependancy path.\n" : output); Console.ReadLine(); } else { Console.WriteLine("The input information was invalid. Please restart program to try again."); Console.ReadLine(); } }
public void PackageOrderTest() { var stringArray = new string[] { "KittenService: CamelChaser", "CamelChaser: " }; Assert.AreEqual(PackageDependencyParser.PackageOrder(stringArray), "CamelChaser, KittenService"); stringArray = new string[] { "KittenService: ", "Leetmeme: CyberPortal", "CyberPortal: Ice", "CamelChaser: KittenService", "Fraudstream: Leetmeme", "Ice: " }; Assert.AreEqual(PackageDependencyParser.PackageOrder(stringArray), "KittenService, Ice, CyberPortal, Leetmeme, CamelChaser, Fraudstream"); //Test Circular dependancy stringArray = new string[] { "KittenService: ", "Leetmeme: CyberPortal", "CyberPortal: Ice", "CamelChaser: KittenService", "Fraudstream: ", "Ice: Leetmeme" }; Assert.AreEqual(PackageDependencyParser.PackageOrder(stringArray), "We have found a Circular dependancy. Please correct the input a retry the function.\n"); stringArray = new string[] { "KittenService: ", "Leetmeme: CyberPortal", "CyberPortal: Ice", "CamelChaser: KittenService", "Fraudstream: ", "Ice: NewString" }; Assert.AreEqual(PackageDependencyParser.PackageOrder(stringArray), "This dependancy is not found amoungst the packages and cannot be\n installed. Please correct the input and retry the function.\n"); //Test for packages that only have dependancies stringArray = new string[] { "1: 2", "2: 3", "3: 4", "4: 5", "5: 6", "6: 7", "7: 8", "8: 9", "9: 10", "10: 11", }; Assert.AreEqual(PackageDependencyParser.PackageOrder(stringArray), "All our packages have dependancies and that means we cannot create an\n install order and possibly have a circular dependancy.\n Please correct and retry.\n"); //Create large package dependacy array to see how well my code handles large arrays. int maxSize = 1000; stringArray = new string[maxSize]; Stack outputStack = new Stack(); for (int count = 0; count < maxSize; count++) { var largerNumber = count + 1; stringArray[count] = string.Format("{0}: {1}", count, largerNumber); outputStack.Push(count); } stringArray[maxSize - 1] = string.Format("{0}: ", maxSize - 1); var outputString = string.Empty; foreach (var item in outputStack) { outputString += string.Format("{0}, ", item); } outputString = outputString.TrimEnd(", ".ToCharArray()); Assert.AreEqual(PackageDependencyParser.PackageOrder(stringArray), outputString); }