public void AcceptanceTest()
        {
            Dictionary <string, int> cartData = new Dictionary <string, int>();

            // If no values added
            PromoConfiguration promo = new PromoConfiguration(cartData);

            Assert.IsTrue(promo.CalculateTotal() == 0);

            // Case 1: A - 1, B - 1, C - 1. Expected result 100.
            cartData.Add("A", 1);
            cartData.Add("B", 1);
            cartData.Add("C", 1);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 100);

            // Case 1: A - 5, B - 5, C - 1. Expected result 370.
            cartData.Clear();
            cartData.Add("A", 5);
            cartData.Add("B", 5);
            cartData.Add("C", 1);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 370);

            // Case 1: A - 5, B - 5, C - 1. Expected result 280.
            cartData.Clear();
            cartData.Add("A", 3);
            cartData.Add("B", 5);
            cartData.Add("C", 1);
            cartData.Add("D", 1);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 280);
        }
        public void RejectionTest()
        {
            Dictionary <string, int> cartData = new Dictionary <string, int>();

            // Invalid SKU - 'F'. Expected result 0.
            cartData.Add("F", 1);
            PromoConfiguration promo = new PromoConfiguration(cartData);

            Assert.IsTrue(promo.CalculateTotal() == 0);

            // Invalid & Valid SKU's: F - 1, B - 2, C - 1. Expected result 75.
            cartData.Clear();
            cartData.Add("F", 1);
            cartData.Add("B", 2);
            cartData.Add("C", 1);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 65);

            // Applying max limit of Int32 in 'A'.
            cartData.Clear();
            cartData.Add("A", 2147483647);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 93057624710);

            // Applying max limit of Int32 in 'B'.
            cartData.Clear();
            cartData.Add("B", 2147483647);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 48318382065);

            // Applying max limit of Int32 in 'C' & 'D'.
            cartData.Clear();
            cartData.Add("C", 2147483647);
            cartData.Add("D", 2147483647);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 64424509410);

            // Applying max limit of Int32 in SKU.
            cartData.Clear();
            cartData.Add("A", 2147483647);
            cartData.Add("B", 2147483647);
            cartData.Add("C", 2147483647);
            cartData.Add("D", 2147483647);
            promo = new PromoConfiguration(cartData);
            Assert.IsTrue(promo.CalculateTotal() == 205800516185);
        }