public void ApplyDiscountTest2()
        {
            StockKeepingUnit temp = new StockKeepingUnit("Test1", 1.5);
            BuyItemsGetOneFreeDiscountUnit target = new BuyItemsGetOneFreeDiscountUnit("Test 1 discount", temp, 2); // TODO: Initialize to an appropriate value
            StockKeepingUnits items = new StockKeepingUnits(new StockKeepingUnit[] { temp, temp, temp });           // TODO: Initialize to an appropriate value

            double         expected = 1.5F;                                                                         // TODO: Initialize to an appropriate value
            DiscountResult actual   = target.ApplyDiscount(items);

            Assert.AreEqual <double>(expected, actual.Discount);
        }
        public void ApplyDiscountTest3()
        {
            StockKeepingUnit temp = new StockKeepingUnit("Test1", 1.5);
            BuyItemsGetOneFreeDiscountUnit target = new BuyItemsGetOneFreeDiscountUnit("Test 1 discount", temp, 2); // TODO: Initialize to an appropriate value

            //this should match 2 offers, should ignore the extra item
            StockKeepingUnits items = new StockKeepingUnits(new StockKeepingUnit[] { temp, temp, temp, temp, temp, temp, temp }); // TODO: Initialize to an appropriate value

            double         expected = 3.0F;                                                                                       // TODO: Initialize to an appropriate value
            DiscountResult actual   = target.ApplyDiscount(items);

            Assert.AreEqual <double>(expected, actual.Discount);
        }
        public void BuyItemsGetOneFreeDiscountUnitConstructorTest()
        {
            string           name    = "Test1";                             // TODO: Initialize to an appropriate value
            StockKeepingUnit target1 = new StockKeepingUnit("Test1", 1.5);; // TODO: Initialize to an appropriate value
            int targetCount          = 1;                                   // TODO: Initialize to an appropriate value
            BuyItemsGetOneFreeDiscountUnit target = new BuyItemsGetOneFreeDiscountUnit(name, target1, targetCount);

            Assert.IsNotNull(target, "Valid instance");

            double         expected = 1.5F; // TODO: Initialize to an appropriate value
            DiscountResult actual   = target.ApplyDiscount(new StockKeepingUnits()
            {
                target1, target1
            });

            Assert.AreEqual <double>(expected, actual.Discount);

            Assert.IsNotNull(target);
            Assert.AreEqual(name, target.Name);
            Assert.AreEqual(name, target.Name);
            Assert.AreEqual(targetCount, target.TargetLevel);
        }