public void TwoAppleTvNoDiscountTest()
        {
            var co = new Checkout(_pricingRules);

            co.Scan(new atv());
            co.Scan(new atv());

            Assert.AreEqual(2 * (new atv()).GetPrice(), co.Total());
        }
        public void ExampleScenarios3Test()
        {
            var co = new Checkout(_pricingRules);

            co.Scan("mbp");
            co.Scan("hdm");
            co.Scan("nx9");

            Assert.AreEqual(1949.98M, co.Total());
        }
        public void ExampleScenarios1Test()
        {
            var co = new Checkout(_pricingRules);

            co.Scan("atv");
            co.Scan("atv");
            co.Scan("atv");
            co.Scan("hdm");
            Assert.AreEqual(249M, co.Total());
        }
        public void WhenItemsAreScannedTheTotalShouldBeTheCombinedCostOfTheItems()
        {
            var checkout = new Checkout(new Prices(new Dictionary <string, int>
            {
                { "A", 45 },
                { "B", 30 }
            }));

            checkout.Scan("A");
            checkout.Scan("B");

            var total = checkout.GetTotalPrice();

            Assert.Equal(75, total);
        }
        public void ExampleScenarios2Test()
        {
            var co = new Checkout(_pricingRules);

            co.Scan(new atv());
            co.Scan(new nx9());
            co.Scan(new nx9());
            co.Scan(new atv());
            co.Scan(new nx9());
            co.Scan(new nx9());
            co.Scan(new nx9());
            Assert.AreEqual(2718.95M, co.Total());
        }
Example #6
0
        static void Main(string[] args)
        {
            var checkout = new Checkout();
            var run      = true;

            Console.WriteLine("SKU  Price  Offer");
            Console.WriteLine(" A      50  3 for 130");
            Console.WriteLine(" B      30  2 for 45");
            Console.WriteLine(" C      20");
            Console.WriteLine(" D      15");
            Console.WriteLine();
            Console.WriteLine("Press T for total.");

            do
            {
                Console.WriteLine();

                var action      = Console.ReadLine();
                var actionUpper = action?.ToUpper();

                switch (actionUpper)
                {
                case "A":
                case "B":
                case "C":
                case "D":
                    checkout.Scan(actionUpper);
                    break;

                case "T":
                    Console.WriteLine($"Your total is: £{checkout.GetTotalPrice()}");
                    break;

                case "X":
                    run = false;
                    break;
                }
            } while (run);
        }
Example #7
0
        public void Test(string items, double expectedPrice)
        {
            // Arrange
            var checkout = new Checkout(new List <IPriceDeltaRule>
            {
                new PriceDeltaRule('A', 50),
                new PriceDeltaRule('B', 30),
                new PriceDeltaRule('C', 20),
                new PriceDeltaRule('D', 15),
                new MultiPriceDeltaRule('A', 3, -20),
                new MultiPriceDeltaRule('B', 2, -15)
            });

            foreach (var item in items)
            {
                checkout.Scan(item);
            }

            // Act
            var totalPrice = checkout.CalculateTotalPrice();

            // Assert
            Assert.That(totalPrice, Is.EqualTo(expectedPrice));
        }
Example #8
0
 public void When_Scanning_1_A_Sku_Then_Total_Is_50()
 {
     _checkout.Scan(new Product('A'));
     Assert.AreEqual(new Money(50), _checkout.GetTotal());
 }
        public void InvalidSKUTest()
        {
            var co = new Checkout(_pricingRules);

            Assert.Throws <Exception>(() => co.Scan("Invalid_SKU"));
        }