public void TestConditialDiscount_MinUnitsOfProductX()
        {
            cart.AddProduct(store, 1, 6, false);
            cart.AddProduct(store, 2, 2, false);
            PurchaseBasket basket      = cart.GetBasket(store);
            DiscountPolicy discountplc = new ConditionalProductDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NumUnitsOfProductAboveEqX], discount: 10, minUnits: 5, productId: 1);
            double         discount    = discountplc.CalcDiscount(basket);
            double         expected    = 6000;

            Assert.AreEqual(expected, discount);
        }
        public void TestCompundDiscountPolicy_XOR()
        {
            cart.AddProduct(store, 1, 1, false);
            cart.AddProduct(store, 2, 7, false);
            PurchaseBasket basket = cart.GetBasket(store);

            DiscountPolicy minItemsBasketPolicy  = new ConditionalBasketDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NumUnitsInBasketAboveEqX], discount: 20, minUnitsAtBasket: 7);
            DiscountPolicy MinUnitsProductPolicy = new ConditionalProductDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NumUnitsOfProductAboveEqX], discount: 30, minUnits: 1, productId: 1);

            List <DiscountPolicy> policies_lst = new List <DiscountPolicy>();

            policies_lst.Add(minItemsBasketPolicy);
            policies_lst.Add(MinUnitsProductPolicy);
            DiscountPolicy compundDiscount = new CompundDiscount(CommonStr.DiscountMergeTypes.XOR, policies_lst);
            double         discount        = compundDiscount.CalcDiscount(basket);
            double         expected        = 3000;

            Assert.AreEqual(expected, discount);
        }