Exemplo n.º 1
0
        public void ThenFadedBlueParentsReturnsDarkOlive()
        {
            // var colours = new []{}
            var rules = new[]
            {
// "light red bags contain 1 bright white bag, 2 muted yellow bags.",
// "dark orange bags contain 3 bright white bags, 4 muted yellow bags.",
// "bright white bags contain 1 shiny gold bag.",
// "muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.",
// "shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.",
                "dark olive bags contain 3 faded blue bags, 4 dotted black bags.",
// "vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.",
                "faded blue bags contain no other bags.",
// "dotted black bags contain no other bags."
            };

            var ruleSet = new RuleParser();

            foreach (var rule in rules)
            {
                ruleSet.AddBagToSet(rule);
            }

            ruleSet
            .GetParents(new Bag("faded", "blue"))
            .Should()
            .ContainSingle(b => b.Id == "dark_olive");
        }
Exemplo n.º 2
0
        public void ThenFadedBlueParentsReturnsFourParents()
        {
            // var colours = new []{}
            var rules = new[]
            {
                "light red bags contain 1 bright white bag, 2 muted yellow bags.",
                "dark orange bags contain 3 bright white bags, 4 muted yellow bags.",
                "bright white bags contain 1 shiny gold bag.",
                "muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.",
                "shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.",
                "dark olive bags contain 3 faded blue bags, 4 dotted black bags.",
                "vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.",
                "faded blue bags contain no other bags.",
                "dotted black bags contain no other bags."
            };

            var ruleSet = new RuleParser();

            foreach (var rule in rules)
            {
                ruleSet.AddBagToSet(rule);
            }

            ruleSet
            .GetParents(new Bag("shiny", "gold"))
            .Should()
            .HaveCount(4);
        }
Exemplo n.º 3
0
        public void AndFadedBlueContainsNoBagsThenContainsIsEmpty()
        {
            var rule = "faded blue bags contain no other bags.";

            var ruleParser = new RuleParser();

            Bag blueBag = ruleParser.AddBagToSet(rule);

            blueBag.Id.Should().Be("faded_blue");
            // blueBag.Children.Should().BeEmpty();
        }
Exemplo n.º 4
0
        public void AndRedBagContainsWhiteThenCorrectRelationshpiIsFormed()
        {
            var rule = "light red bags contain 1 bright white bag, 2 muted yellow bags.";

            var ruleParser = new RuleParser();

            Bag redBag = ruleParser.AddBagToSet(rule);

            redBag.Id.Should().Be("light_red");

            // redBag.Children.Should().NotBeEmpty()
            //                 .And.HaveCount(2)
            // .And.Contain(c => c.Id == "bright_white" || c.Id == "muted_yellow");
        }
Exemplo n.º 5
0
        public void AndWhiteBagContainsGoldOnlyThenCorrectRelationshpiIsFormed()
        {
            var rule = "bright white bags contain 1 shiny gold bag.";

            var ruleParser = new RuleParser();

            Bag whiteBag = ruleParser.AddBagToSet(rule);

            whiteBag.Id.Should().Be("bright_white");
            // whiteBag.Children.Should().NotBeEmpty()
            //                 .And.HaveCount(1)
            //                 .And.OnlyContain(b => b.Id == "shiny_gold");

            // whiteBag.Children.Single().Parents.Single().Should().Be(whiteBag);
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            Console.WriteLine("Start the count");

            foreach (var file in new DirectoryInfo("BagHandling.Harness/bin/Debug/net5.0/Rules").GetFiles())
            {
                var rules = File.ReadAllLines(Path.Combine(file.DirectoryName, file.FullName));

                var ruleSet = new RuleParser();

                foreach (var rule in rules)
                {
                    ruleSet.AddBagToSet(rule);
                }

                var outermostBags = ruleSet.GetParents(new Bag("shiny", "gold")).ToList();

                Console.WriteLine($"{file.Name}: {outermostBags.Count}");
            }
        }