示例#1
0
        public void CountBagsTest2()
        {
            // Arrange
            var rules = new[]
            {
                "shiny gold bags contain 2 dark red bags.",
                "dark red bags contain 2 dark orange bags.",
                "dark orange bags contain 2 dark yellow bags.",
                "dark yellow bags contain 2 dark green bags.",
                "dark green bags contain 2 dark blue bags.",
                "dark blue bags contain 2 dark violet bags.",
                "dark violet bags contain no other bags."
            };

            var parser      = new BagRuleParser();
            var parsedRules = parser.Parse(rules);

            var calculator = new BagCalculator(parsedRules);

            // Act
            var bags = calculator.CountBags("shiny gold");

            // Assert
            Assert.That(bags, Is.EqualTo(126));
        }
        public void CountBagsWithAtLeastOneTest()
        {
            // Arrange
            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 parser      = new BagRuleParser();
            var parsedRules = parser.Parse(rules);

            var evaluator = new BagRuleEvaluator(parsedRules);

            // Act
            var bags = evaluator.CountBagsWithAtLeastOne("shiny gold");

            // Assert
            Assert.That(bags, Is.EqualTo(4));
        }
示例#3
0
        public void TestParser()
        {
            var input = "light red bags contain 1 bright white bag, 2 muted yellow bags.";

            var parsed = BagRuleParser.Parse(input);

            Assert.Equal("light red", parsed.Attributes);
            var expectedContents = new Dictionary <string, int>
            {
                ["bright white"] = 1,
                ["muted yellow"] = 2
            };

            Assert.Equal(expectedContents, parsed.Contents);
        }