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)); }
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); }