public void FillDictionaryTest() { var stringArray = new string[] { "KittenService: CamelChaser", "CamelChaser: " }; var testDictionary = PackageDependencyParser.FillDictionary(stringArray); Assert.AreEqual(testDictionary["KittenService"], "CamelChaser"); Assert.AreEqual(testDictionary["CamelChaser"], string.Empty); //Test case where we have leading spaces from user input Package: , Package: directory stringArray = new string[] { "package: ", " package1: package" }; testDictionary = PackageDependencyParser.FillDictionary(stringArray); Assert.AreEqual(testDictionary["package"], string.Empty); Assert.AreEqual(testDictionary["package1"], "package"); //Test the case that the user includes other characters which are valid "Package: ", "Package1: Package" stringArray = new string[] { "\"package: \"", "\"package1: package\"" }; testDictionary = PackageDependencyParser.FillDictionary(stringArray); Assert.AreEqual(testDictionary["package"], string.Empty); Assert.AreEqual(testDictionary["package1"], "package"); stringArray = new string[] { "[\"package: \"", "\"package1: package\"]" }; testDictionary = PackageDependencyParser.FillDictionary(stringArray); Assert.AreEqual(testDictionary["package"], string.Empty); Assert.AreEqual(testDictionary["package1"], "package"); }
public void ValidateStringArrayTest() { Assert.IsFalse(PackageDependencyParser.ValidateStringArray(null)); //Creating a test string array. This should not be a valid array. var testStringArray = new string[] { "This", "is", "only", "a", "test" }; Assert.IsFalse(PackageDependencyParser.ValidateStringArray(testStringArray)); //Test what happens if I am missing a ": " testStringArray = new string[] { "This: ", "is: only", "a", "test: " }; Assert.IsFalse(PackageDependencyParser.ValidateStringArray(testStringArray)); //Validate each entry in the array to make sure that it follows the correct format. testStringArray = new[] { "Package: Dependancy", "Package2: ", "1: 2" }; Assert.IsTrue(PackageDependencyParser.ValidateStringArray(testStringArray)); //Validation should not pass if there is a duplicate package. testStringArray = new string[] { "Package: Dependancy", "Package: " }; Assert.IsFalse(PackageDependencyParser.ValidateStringArray(testStringArray)); //Validation what if you have empty package name and dependacy. testStringArray = new string[] { ": dependacy" }; Assert.IsFalse(PackageDependencyParser.ValidateStringArray(testStringArray)); }
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); }