/// <summary>
        ///
        /// </summary>
        public Receipt CalculateReceipt(string[] items)
        {
            Receipt result = new Receipt(); //zero the result

            StockKeepingUnits itemSKUs = new StockKeepingUnits();

            foreach (var s in items)
            {
                StockKeepingUnit tempRef = fSKUs.FindSingletonSKU(s);
                if (tempRef != null)
                {
                    itemSKUs.Add(new StockKeepingUnit(tempRef));
                }
                else
                {
                    result.AddRemark(String.Format("\"{0}\" was not recognised and skipped", s));
                }
            }

            result.AddRemark(itemSKUs.ToString());

            //now that we know what we are buting, we should apply the discounts
            result.Subtotal = itemSKUs.Price();

            DiscountResults discountResults = fDiscounts.ApplyDiscounts(itemSKUs);

            result.Total = result.Subtotal - discountResults.Sum();
            result.AddDiscount(discountResults.ToString());

            return(result);
        }
        public void DiscountResultsConstructorTest()
        {
            IEnumerable <DiscountResult> collection = new DiscountResult[] {
                new DiscountResult("test1", 50.0, true),
                new DiscountResult("test2", 50.0, false), //this one should be ignored
                new DiscountResult("test3", 100.0, true),
                new DiscountResult("test4", 25.0, true),
                new DiscountResult("test5", 75.0, true)
            }; // TODO: Initialize to an appropriate value

            DiscountResults target = new DiscountResults(collection);

            Assert.IsNotNull(target);
            Assert.AreEqual(target.Count, 5);
        }
        public void SumTest()
        {
            DiscountResults target = new DiscountResults(); // TODO: Initialize to an appropriate value

            target.AddRange(new DiscountResult[] {
                new DiscountResult("test1", 50.0, true),
                new DiscountResult("test2", 50.0, false), //this one should be ignored
                new DiscountResult("test3", 100.0, true),
                new DiscountResult("test4", 25.0, true),
                new DiscountResult("test5", 75.0, true)
            });

            double expected = 250.00F; // TODO: Initialize to an appropriate value
            double actual;

            actual = target.Sum();
            Assert.AreEqual <double>(expected, actual);
        }
        public void DiscountResultsConstructorTest1()
        {
            DiscountResults target = new DiscountResults();

            Assert.IsNotNull(target);
        }