public void Should_skip_already_counted_targets()
            {
                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 light red bags.",
                    "vibrant olive bags contain 3 faded blue bags, 4 light red 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 target = "shiny gold";

                var calc = new LuggageWrapperCalculator
                {
                    Rules = rules
                };

                AssertAsync.CompletesIn(3, () =>
                {
                    var variations = calc.FindWrapperVariationsFor(target);

                    Assert.Equal(5, variations);
                });
            }
            public void Puzzle_7B()
            {
                var target = "shiny gold";

                var calc = new LuggageWrapperCalculator
                {
                    Rules = PuzzleInputs.Puzzle7
                };

                AssertAsync.CompletesIn(10, () =>
                {
                    var count = calc.CountBagTotal(target) - 1;
                    Assert.True(5636 > count, "Should be less than 5636");
                    Assert.Equal(5635, count);
                });
            }
            public void Puzzle_7A()
            {
                var target = "shiny gold";

                var calc = new LuggageWrapperCalculator
                {
                    Rules = PuzzleInputs.Puzzle7
                };

                AssertAsync.CompletesIn(10, () =>
                {
                    var variations = calc.FindWrapperVariationsFor(target);

                    Assert.True(450 > variations, "Should be less than 450");
                    Assert.True(373 > variations, "Should be less than 373");
                    Assert.True(327 > variations, "Should be less than 327");
                    Assert.Equal(326, variations);
                });
            }