Esempio n. 1
0
        public void TestVisa()
        {
            string expected, actual;

            _card = new VisaCreditCard("4111111111111111", _validator);

            _validator.IsValid(Arg.Any <string>()).Returns(true);
            expected = "VISA: 4111111111111111       (valid)";
            actual   = _card.ToString();
            Assert.AreEqual(expected, actual);

            _validator.IsValid(Arg.Any <string>()).Returns(false);
            expected = "VISA: 4111111111111111       (invalid)";
            actual   = _card.ToString();
            Assert.AreEqual(expected, actual);
        }
Esempio n. 2
0
        public void Accept()
        {
            var product = _dbContext.Products.FirstOrDefault();

            if (product == null || product.Quantity == 0)
            {
                _messageWriter.WriteLine(" No product in inventory ");
                return;
            }

            _messageWriter.WriteLine("Name : ");
            var name = _inputReader.ReadLine();

            _messageWriter.WriteLine("Quantity : ");
            var validQuantity = int.TryParse(_inputReader.ReadLine(), out var intQuantity);

            if (!validQuantity)
            {
                _messageWriter.WriteLine("Invalid quantity, please try again");
                return;
            }


            if (product.Quantity < intQuantity)
            {
                _messageWriter.WriteLine("Please try again with less quantity ");
                return;
            }


            _messageWriter.WriteLine("Credit Card Number : ");
            var ccNumber = _inputReader.ReadLine();

            if (!_creditCardValidator.IsValid(ccNumber))
            {
                _messageWriter.WriteLine("Invalid Credit Card number, Please try again ");
                return;
            }

            if (!_paymentProcessor.ChargePayment(ccNumber, intQuantity * product.Price))
            {
                _messageWriter.WriteLine("Could not charge your card, please try again ");
                return;
            }

            _dbContext.Orders.Add(new Order()
            {
                Name = name, Quantity = intQuantity, CCNumber = ccNumber
            });
            product.Quantity -= intQuantity;
            _dbContext.Products.Update(product);

            _dbContext.SaveChanges();

            _emailSender.Send("*****@*****.**",
                              $"An order has been placed for {product.Name} for {intQuantity}. Please ship that to {name} ");

            _messageWriter.WriteLine(
                $" Thanks you {name}, Your order of {product.Name}, quantity {intQuantity} is submitted successfully ");
        }
        static void Main(string[] args)
        {
            string creditCardNumber        = "4539 0685 4366 1747";
            ICreditCardValidator validator = CreditCardValidationFactory.Validator(CreditCardIssuerEnum.Nccc);
            string validationResult        = validator.IsValid(creditCardNumber) ? "有效" : "無效";

            Console.WriteLine($"信用卡卡號[{creditCardNumber}] 是{validationResult}的");
            Console.ReadKey();
        }
        protected string ToString(string cardType)
        {
            StringBuilder result = new StringBuilder();

            result.Append(cardType);
            result.Append(": ");
            result.Append(_cardNumber);

            int paddingLength = 28 - result.ToString().Length;

            if (paddingLength > 0)
            {
                result.Append(new String(' ', paddingLength));
            }

            result.Append(_validator.IsValid(_cardNumber) ? " (valid)" : " (invalid)");
            return(result.ToString());
        }
        public void TestIsValidReturnsTrue()
        {
            bool result;

            result = validator.IsValid("4408041234567893");
            Assert.IsTrue(result);

            result = validator.IsValid("4111111111111111");
            Assert.IsTrue(result);

            result = validator.IsValid("4012888888881881");
            Assert.IsTrue(result);

            result = validator.IsValid("378282246310005");
            Assert.IsTrue(result);

            result = validator.IsValid("6011111111111117");
            Assert.IsTrue(result);

            result = validator.IsValid("5105105105105100");
            Assert.IsTrue(result);

            result = validator.IsValid("5105 1051 0510 5100");
            Assert.IsTrue(result);
        }