public void Parse_bag_content_rule_hold_four_bag_types(
            string bagContentsRuleDescription,
            string expectedBagColor,
            int firstExpectedHoldBagNumber,
            string firstExpectedHoldBagColor,
            int secondExpectedHoldBagNumber,
            string secondExpectedHoldBagColor,
            int thirdExpectedHoldBagNumber,
            string thirdExpectedHoldBagColor,
            int fourthExpectedHoldBagNumber,
            string fourthExpectedHoldBagColor)
        {
            // When
            var(bag, holdBagCounts) = BagContentsRuleParser
                                      .Parse(bagContentsRuleDescription);

            //Then
            Assert.Equal(bag.Color, expectedBagColor);
            Assert.Collection(holdBagCounts,
                              holdBagCount => Assert.Equal(
                                  new BagCount(firstExpectedHoldBagNumber, new Bag(firstExpectedHoldBagColor)),
                                  holdBagCount),
                              holdBagCount => Assert.Equal(
                                  new BagCount(secondExpectedHoldBagNumber, new Bag(secondExpectedHoldBagColor)),
                                  holdBagCount),
                              holdBagCount => Assert.Equal(
                                  new BagCount(thirdExpectedHoldBagNumber, new Bag(thirdExpectedHoldBagColor)),
                                  holdBagCount),
                              holdBagCount => Assert.Equal(
                                  new BagCount(fourthExpectedHoldBagNumber, new Bag(fourthExpectedHoldBagColor)),
                                  holdBagCount));
        }
        public void Parse_bag_content_rule_hold_zero_bag_type(
            string bagContentsRuleDescription,
            string expectedBagColor)
        {
            // When
            var(bag, holdBagCounts) = BagContentsRuleParser
                                      .Parse(bagContentsRuleDescription);

            //Then
            Assert.Equal(expectedBagColor, bag.Color);
            Assert.Empty(holdBagCounts);
        }
        public void Parse_bag_content_rule_hold_one_bag_type(
            string bagContentsRuleDescription,
            string expectedBagColor,
            int expectedHoldBagNumber,
            string expectedHoldBagColor)
        {
            // When
            var(bag, holdBagCounts) = BagContentsRuleParser
                                      .Parse(bagContentsRuleDescription);

            //Then
            Assert.Equal(expectedBagColor, bag.Color);
            Assert.Collection(holdBagCounts,
                              holdBagCount => Assert.Equal(
                                  new BagCount(expectedHoldBagNumber, new Bag(expectedHoldBagColor)),
                                  holdBagCount));
        }