Ejemplo n.º 1
0
        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);
        }