예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome To Point Of Sale Terminal Service!");
            var terminal = new PointOfSaleTerminalService();

            terminal.SetPricing('A', 1.25, 3, 3.0);
            terminal.SetPricing('B', 4.25);
            terminal.SetPricing('C', 1.00, 6, 5.0);
            terminal.SetPricing('D', 0.75);

            Console.WriteLine("Please enter a product from following list: (A, B, C, D).");
            Console.WriteLine("Enter ! to finish");
            var availableProducts = new List <char>()
            {
                'A', 'B', 'C', 'D'
            };

            while (true)
            {
                char item = (char)Console.ReadKey().KeyChar;
                Console.WriteLine();
                if (item == '!')
                {
                    break;
                }
                if (availableProducts.Contains(item))
                {
                    terminal.ScanProduct(item);
                }
                else
                {
                    Console.WriteLine("You entered wrong product.");
                    Console.WriteLine("Enter ! to finish");
                    continue;
                }
            }

            double result = (double)terminal.CalculateTotal();

            Console.WriteLine("Total price of items scanned is: {0:C2}", result);
        }
        public void Test_ScanProduct_Scans_Products()
        {
            _posTermService.SetPricing('A', 1.25, 3, 3.0);
            _posTermService.SetPricing('B', 4.25);
            _posTermService.SetPricing('C', 1.00, 6, 5.0);
            _posTermService.SetPricing('D', 0.75);

            _posTermService.ScanProduct('A');
            _posTermService.ScanProduct('B');
            _posTermService.ScanProduct('C');
            _posTermService.ScanProduct('D');
            _posTermService.ScanProduct('A');
            _posTermService.ScanProduct('B');
            _posTermService.ScanProduct('A');
            Hashtable basket = _posTermService.GetProductBasket();
            int       countA = (int)basket['A'];
            int       countB = (int)basket['B'];
            int       countC = (int)basket['C'];
            int       countD = (int)basket['D'];

            Assert.IsTrue(
                countA == 3 &&
                countB == 2 &&
                countC == 1 &&
                countD == 1
                );
        }
        public void GivenProductsScanned_WhenProductsareABCDABA_Priceis1325()
        {
            _primeService.ClearBasket();

            _primeService.ScanProduct("A");
            _primeService.ScanProduct("B");
            _primeService.ScanProduct("C");
            _primeService.ScanProduct("D");
            _primeService.ScanProduct("A");
            _primeService.ScanProduct("B");
            var finalPrice = _primeService.ScanProduct("A");

            Assert.AreEqual(13.25m, finalPrice);
        }