示例#1
0
        protected override OperationResult Handle(AddCoinCommand command)
        {
            var result = new OperationResult();

            try
            {
                ICoinFactory coinFactory = CoinFactoryProducer.GetFactory(command.Currency);

                ICoin coin = coinFactory.GetCoin(command.Amount);

                OperationResult jarValidatorResult = _coinJarValidatorRulesEngine.Validate(coin);

                if (jarValidatorResult.HasErrors)
                {
                    result.AddErrorMessages(jarValidatorResult.GetErrorMessages());
                    return(result);
                }

                _db.AddCoin(coin);
                return(result);
            }
            catch (ApplicationException e)
            {
                result.AddErrorMessage(e.Key, e.Message);
            }

            return(result);
        }
 public VendingMachine(ICoinSlot coinSlot, ICoinReturn coinReturn, ICoinFactory coinFactory, IVendingMachineDisplay vendingMachineDisplay)
 {
     _coinSlot              = coinSlot;
     _coinReturn            = coinReturn;
     _coinFactory           = coinFactory;
     _vendingMachineDisplay = vendingMachineDisplay;
 }
        public void TestCorrectlyBuildsCoinFactory()
        {
            MainFormController mainFormController = new MainFormController(new Form());

            ICoinFactory coinFactory = mainFormController.CoinFactory;

            Assert.IsInstanceOf(typeof(ICoinFactory), coinFactory);
        }
 public CoinAccepter(ICoinFactory coinFactory, ICoinPurse coinPurse, ICoinReturn coinReturn)
 {
     CoinFactory = coinFactory;
     CoinPurse = coinPurse;
     CoinReturn = coinReturn;
 }
示例#5
0
        static void Main(string[] args)
        {
            ICoinFactory factory  = null;
            CoinJar      coinJar  = new CoinJar();
            string       coinType = string.Empty;

            do
            {
                Console.WriteLine("Valid Coin Types: [cent/penny, nickel, dime, quarter, halfdollar, dollar]");
                Console.WriteLine("Enter Coin Type (q to quit):");
                coinType = Console.ReadLine();
                Console.Clear();
                switch (coinType.ToLower())
                {
                case "cent":
                case "penny":
                    factory = new PennyFactory();
                    break;

                case "nickel":
                    factory = new NickelFactory();
                    break;

                case "dime":
                    factory = new DimeFactory();
                    break;

                case "quarter":
                    factory = new QuarterFactory();
                    break;

                case "halfdollar":
                    factory = new HalfDollarFactory();
                    break;

                case "dollar":
                    factory = new DollarFactory();
                    break;

                default:
                    Console.WriteLine("Invalid Coin Type");
                    factory = null;
                    break;
                }

                if (factory != null)
                {
                    try
                    {
                        coinJar.AddCoin(factory.GetCoin());
                        Console.WriteLine("Coin added!");
                    }
                    catch (JarFullException ex)
                    {
                        Console.WriteLine($"** {ex.Message} **");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"ERROR: {ex.Message}");
                    }
                }
                Console.WriteLine($"Total Amount: {coinJar.TotalAmount}");
            } while (coinType.ToLower() != "q");
        }
 public CoinAccepter(ICoinFactory coinFactory, ICoinPurse coinPurse, ICoinReturn coinReturn)
 {
     CoinFactory = coinFactory;
     CoinPurse   = coinPurse;
     CoinReturn  = coinReturn;
 }
示例#7
0
 public ConsoleLoop(IParseConsoleInput parseConsoleInput, ICoinFactory coinFactory, IVendingMachine vendingMachine)
 {
     _parseConsoleInput = parseConsoleInput;
     _coinFactory       = coinFactory;
     _vendingMachine    = vendingMachine;
 }