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