Ejemplo n.º 1
0
        public void Verify_MixedPricingRules_Deal_and_Discount()
        {
            var adFactory = new AdFactory();

            var pricingRule1 = new DiscountPricingRule(typeof(StandoutAd), 22.99m);
            var pricingRule2 = new GetXForYPricingRule(3, 2, typeof(ClassicAd));

            var pricingRules = new List <IPricingRule>();

            pricingRules.Add(pricingRule1);
            pricingRules.Add(pricingRule2);

            var checkout = new Domain.Checkout(pricingRules);

            var item1 = adFactory.CreateAd(typeof(StandoutAd));

            var item2 = adFactory.CreateAd(typeof(ClassicAd));

            var item3 = adFactory.CreateAd(typeof(ClassicAd));

            var item4 = adFactory.CreateAd(typeof(ClassicAd));

            checkout.Add(item1);
            checkout.Add(item2);
            checkout.Add(item3);
            checkout.Add(item4);

            var total = checkout.Total();

            Assert.Equal(839.98m, total);
        }
Ejemplo n.º 2
0
        public void Verify_SinglePricingRule_DealPricing_DoubleDeals(int getAmount, int forAmount, Type adType, decimal expected)
        {
            var pricingRule = new GetXForYPricingRule(getAmount, forAmount, adType);

            var adFactory = new AdFactory();

            var checkout = new Domain.Checkout(new List <IPricingRule> {
                pricingRule
            });

            var item1 = adFactory.CreateAd(adType);

            var item2 = adFactory.CreateAd(adType);

            var item3 = adFactory.CreateAd(adType);

            var item4 = adFactory.CreateAd(adType);

            var item5 = adFactory.CreateAd(adType);

            var item6 = adFactory.CreateAd(adType);

            checkout.Add(item1);
            checkout.Add(item2);
            checkout.Add(item3);
            checkout.Add(item4);
            checkout.Add(item5);
            checkout.Add(item6);

            var total = checkout.Total();

            Assert.Equal(expected, total);
        }