Ejemplo n.º 1
0
        public void Run()
        {
            Console.WriteLine("Choose file:");   // Prompt
            Console.WriteLine("1 - routes.txt"); // Prompt
            Console.WriteLine("2 - movies.txt"); // Prompt
            //Console.WriteLine("3 - largeG.zip"); // Prompt
            Console.WriteLine("or quit");        // Prompt

            var           fileNumber = Console.ReadLine();
            string        fileName;
            char          delimiter;
            string        source;
            List <string> names;

            switch (fileNumber)
            {
            case "1":
                fileName  = "routes.txt";
                delimiter = '\u0020';
                source    = "JFK";
                names     = new List <string> {
                    "LAS", "DFW", "EWR"
                };
                break;

            case "2":
                fileName  = "movies.txt";
                delimiter = '/';
                source    = "Bacon, Kevin";
                names     = new List <string> {
                    "Kidman, Nicole", "Grant, Cary"
                };
                break;

            //case "3":
            //    fieName = "largeG.zip";
            //    break;
            case "quit":
                return;

            default:
                return;
            }


            var @in   = new In($"Files\\Graphs\\{fileName}");
            var lines = !fileName.EndsWith("zip") ? @in.ReadAllLines() : @in.ReadAllLinesFromZip();

            var degreesOfSeparation = new DegreesOfSeparation(lines, delimiter, source);

            Console.WriteLine($"{source}");
            foreach (var name in names)
            {
                Console.WriteLine($"{name}");
                degreesOfSeparation.Find(name);
            }
            Console.ReadLine();
        }
Ejemplo n.º 2
0
        public void Should_calculate_degrees_of_separation_between_developer_and_itself_is_0()
        {
            var programmer1 = new Programmer("Programemr1", new string[] {}, null);

            var degreesOfSeparation = new DegreesOfSeparation(new[] { programmer1 });

            var degrees = degreesOfSeparation.Between(programmer1, programmer1);

            Assert.That(degrees, Is.EqualTo(0));
        }
Ejemplo n.º 3
0
        public void Should_build_network_using_programmers_recommended_bys()
        {
            var programmer1 = BuildProgrammer("Programmer1");
            var programmer2 = BuildProgrammer("Programmer2");

            programmer1.Recommends(programmer2);

            var degreesOfSeparation = new DegreesOfSeparation(new[] { programmer1, programmer2 });

            var between = degreesOfSeparation.Between(programmer1, programmer2);

            Assert.That(between, Is.EqualTo(1));
        }
Ejemplo n.º 4
0
        public void Should_calculate_degrees_of_separation_between_developer_and_direct_relation_is_1()
        {
            var programmer1 = new Programmer("Programemr1", new string[] {}, null);
            var programmer2 = new Programmer("Programmer2", new string[] {}, null);

            programmer1.Recommends(programmer2);

            var degreesOfSeparation = new DegreesOfSeparation(new[] { programmer1, programmer2 });

            var degrees = degreesOfSeparation.Between(programmer1, programmer2);

            Assert.That(degrees, Is.EqualTo(1));
        }
Ejemplo n.º 5
0
        public void Should_build_network_with_two_degrees_of_separation()
        {
            var programmer1 = BuildProgrammer("Programmer1");
            var programmer2 = BuildProgrammer("Programmer2");
            var programmer3 = BuildProgrammer("Programmer3");

            programmer1.Recommends(programmer2);
            programmer2.Recommends(programmer3);

            var degreesOfSeparation = new DegreesOfSeparation(new[] { programmer1, programmer2, programmer3 });

            var between = degreesOfSeparation.Between(programmer1, programmer3);

            Assert.That(between, Is.EqualTo(2));
        }
Ejemplo n.º 6
0
        public void Should_only_add_each_programmer_to_the_queue_once()
        {
            var programmer1 = BuildProgrammer("Programmer1");
            var programmer2 = BuildProgrammer("Programmer2");
            var programmer3 = BuildProgrammer("Programmer3");

            programmer1.Recommends(programmer2);
            programmer1.Recommends(programmer3);
            programmer3.Recommends(programmer2);

            var degreesOfSeparation = new DegreesOfSeparation(new[] { programmer1, programmer2, programmer3 });

            var between = degreesOfSeparation.Between(programmer1, programmer3);

            Assert.That(between, Is.EqualTo(1));
        }
Ejemplo n.º 7
0
        public void Should_build_network_with_three_degrees_of_separation_and_recommended_by_connections()
        {
            var jill = BuildProgrammer("Jill");
            var bill = BuildProgrammer("Bill");
            var ed   = BuildProgrammer("Ed");
            var rick = BuildProgrammer("Rick");

            bill.Recommends(jill);
            ed.Recommends(bill);
            ed.Recommends(rick);
            rick.Recommends(ed);

            var degreesOfSeparation = new DegreesOfSeparation(new[] { jill, bill, ed, rick });

            var between = degreesOfSeparation.Between(jill, rick);

            Assert.That(between, Is.EqualTo(3));
        }
Ejemplo n.º 8
0
        public void Should_build_network_provided_in_pronet_xml()
        {
            var jill  = BuildProgrammer("Jill");
            var bill  = BuildProgrammer("Bill");
            var ed    = BuildProgrammer("Ed");
            var rick  = BuildProgrammer("Rick");
            var nick  = BuildProgrammer("Nick");
            var dave  = BuildProgrammer("Dave");
            var stu   = BuildProgrammer("Stu");
            var frank = BuildProgrammer("Frank");
            var liz   = BuildProgrammer("Liz");
            var jason = BuildProgrammer("Jason");

            bill.Recommends(jason);
            bill.Recommends(jill);
            bill.Recommends(nick);
            bill.Recommends(stu);
            dave.Recommends(jill);
            ed.Recommends(liz);
            ed.Recommends(rick);
            ed.Recommends(bill);
            frank.Recommends(nick);
            jason.Recommends(dave);
            jason.Recommends(liz);
            jill.Recommends(nick);
            liz.Recommends(bill);
            nick.Recommends(stu);
            rick.Recommends(ed);
            stu.Recommends(frank);

            var degreesOfSeparation = new DegreesOfSeparation(new[] { jill, bill, ed, rick, nick, dave, stu, frank, liz, jason });

            var between = degreesOfSeparation.Between(jill, rick);

            Assert.That(between, Is.EqualTo(3));
        }