public void BundleFactory_Tests(char product, uint quantity, double finalPrice)
        {
            var productARules = new List<IProductRule>();
            var productABasicRule = new ProductRule();
            productABasicRule.Set(product, quantity, finalPrice);
            productARules.Add(productABasicRule);

            var bundleFactory = new BundleFactory();
            var bundles = bundleFactory.MakeBundles(product, quantity, productARules);

            Assert.IsNotNull(bundles);
            Assert.AreEqual(1, bundles.Count());
            Assert.AreEqual(50, bundles.FirstOrDefault().FinalPrice);
        }
        public void BundleFactory_ProductA_1_50_GetFinalPrice_Returns_50()
        {
            var productARules = new List<IProductRule>();
            var productABasicRule = new ProductRule();
            productABasicRule.Set('A', 1, 50);
            productARules.Add(productABasicRule);

            var bundleFactory = new BundleFactory();
            var bundles = bundleFactory.MakeBundles('A', 1, productARules);

            Assert.IsNotNull(bundles);
            Assert.AreEqual(1, bundles.Count());
            Assert.AreEqual(50, bundles.FirstOrDefault().FinalPrice);
        }
        public void BundleFactory_Tests(char product, string productRulesCsv, uint quantity, double finalPrice)
        {
            var productRules = new List<IProductRule>();
            var stringRules = productRulesCsv.Split(new []{';'}, StringSplitOptions.RemoveEmptyEntries);
            foreach (var stringRule in stringRules)
            {
                var stringRuleElemnts = stringRule.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);

                uint bundleQuantity = 0;
                double bundleFinalPrice = 0;
                uint.TryParse(stringRuleElemnts[0], out bundleQuantity);
                double.TryParse(stringRuleElemnts[1], out bundleFinalPrice);

                var rule = new ProductRule();
                rule.Set(product, bundleQuantity, bundleFinalPrice);

                productRules.Add(rule);
            }

            var bundleFactory = new BundleFactory();
            var bundles = bundleFactory.MakeBundles(product, quantity, productRules);

            Assert.AreEqual(finalPrice, bundles.Sum(b => b.FinalPrice));
        }