public void TestQuantityCombinationNoDiscount()
        {
            // test
            var discountProducts = new List <IProduct>();
            var km       = new KortingsManager();
            var barcodes = new List <string>();

            barcodes.Add("02");
            barcodes.Add("03");

            km.CombinationDiscount(barcodes, 4, 0.2m);

            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 100m));
            var product2 = new BarcodeEventArgs(new Product("02", "Test product 02!", 1.4m));
            var product3 = new BarcodeEventArgs(new Product("03", "Test product 03!", 11m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product3);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product3);
            km.RaiseBarcodeScaned(null, product2);

            // validate
            Assert.IsEmpty(discountProducts);
        }
        public void TestQuantityCombinationDiscountSingleProduct()
        {
            // test
            var discountProducts = new List <IProduct>();
            var km       = new KortingsManager();
            var barcodes = new List <string>();

            barcodes.Add("02");
            barcodes.Add("01");
            km.CombinationDiscount(barcodes, 5, 0.10m);
            var product1 = new BarcodeEventArgs(new Product("02", "Test product 02!", 1m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);

            // validate
            Assert.IsNotEmpty(discountProducts);
            Assert.AreEqual(1, discountProducts.Count);
            Assert.AreEqual("D-", discountProducts[0].Barcode);
            Assert.AreEqual(-0.50m, discountProducts[0].Amount);
        }