public void Test_InsertExactColaCoin_OutOfStock() { //Arrange VendingMachine vmInstance = new VendingMachine(); vmInstance.setColaStock(0); IVendingMachine vm = vmInstance; //Act ICoin c = new Coin(5.670m); string msg = vm.InsertCoin(c); Assert.AreEqual("0.25", msg); msg = vm.InsertCoin(c); Assert.AreEqual("0.50", msg); msg = vm.InsertCoin(c); Assert.AreEqual("0.75", msg); msg = vm.InsertCoin(c); Assert.AreEqual("1.00", msg); msg = vm.Dispense(CommonUtility.productType.Cola); //Assert Assert.AreEqual("SOLD OUT", msg); }
public void Test_InsertCoins_ReturnAllChange() { //Arrange VendingMachine vmInstance = new VendingMachine(); IVendingMachine vm = vmInstance; //Act ICoin c = new Coin(5.670m); string msg = vm.InsertCoin(c); Assert.AreEqual("0.25", msg); msg = vm.InsertCoin(c); Assert.AreEqual("0.50", msg); msg = vm.InsertCoin(c); Assert.AreEqual("0.75", msg); msg = vm.InsertCoin(c); Assert.AreEqual("1.00", msg); msg = vm.ReturnCoins(); //Assert Assert.AreEqual("Quarter Change: 4\r\nDime Change: 0\r\nNickel Change: 0\r\nCurrent Amount: 0.00\r\nINSERT COINS", msg); }
public void Test_Buy1Candy_ExpectedChange15Pence() { //Arrange VendingMachine vmInstance = new VendingMachine(); IVendingMachine vm = vmInstance; //Act ICoin c = new Coin(5.670m); string msg = vm.InsertCoin(c); Assert.AreEqual("0.25", msg); msg = vm.InsertCoin(c); Assert.AreEqual("0.50", msg); msg = vm.InsertCoin(c); Assert.AreEqual("0.75", msg); msg = vm.Dispense(CommonUtility.productType.Candy); //Assert Assert.AreEqual("THANK YOU", msg); msg = vm.ReturnCoins(); //Assert Assert.AreEqual("Quarter Change: 0\r\nDime Change: 1\r\nNickel Change: 0\r\nCurrent Amount: 0.00\r\nINSERT COINS", msg); }
public void Messages_ThankYouAfterPurchase() { IVendingMachine machine = GetVendingMachineInstance(); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); machine.Messages.Clear(); machine.SelectProduct(Constants.CHIPS); Assert.AreEqual("THANK YOU", machine.Messages.Dequeue()); Assert.AreEqual("EXACT CHANGE ONLY", machine.Messages.Dequeue()); }
public void GetChips_ExactChange() { IVendingMachine machine = GetVendingMachineInstance(); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); string productName = Constants.CHIPS; IProduct product = machine.SelectProduct(productName); Assert.AreEqual(productName, product?.Name); Assert.AreEqual(0, machine.CoinReturn.Count); }
public void MakeChange() { IVendingMachine machine = GetVendingMachineInstance(); CreateAvailableChange(machine); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); machine.SelectProduct(Constants.CANDY); Assert.AreEqual(10, machine.CoinReturn.Sum(coin => coin.CentValue)); }
private void BuyChips(IVendingMachine machine, int quantity, bool discardMessages = true) { for (int i = 0; i < quantity; i++) { machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); machine.SelectProduct(Constants.CHIPS); } if (discardMessages) { machine.Messages.Clear(); } }
public void Messages_SoldOut() { IVendingMachine machine = GetVendingMachineInstance(); BuyChips(machine, 10); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); machine.Messages.Clear(); machine.SelectProduct(Constants.CHIPS); Assert.AreEqual("SOLD OUT", machine.Messages.Dequeue()); Assert.AreEqual("$0.50", machine.Messages.Dequeue()); }
public void GetChips_InexactChange_SuperfluousCoin() { IVendingMachine machine = GetVendingMachineInstance(); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Nickel()); string productName = Constants.CHIPS; IProduct product = machine.SelectProduct(productName); Assert.AreEqual(productName, product?.Name); Assert.AreEqual(1, machine.CoinReturn.Count); Assert.AreEqual(5, machine.CoinReturn[0].CentValue); }
public void Messages_RequireExactChange_AfterPurchase() { IVendingMachine machine = GetVendingMachineInstance(); machine.InsertCoin(new Quarter()); machine.InsertCoin(new Quarter()); string productName = Constants.CHIPS; machine.Messages.Clear(); machine.SelectProduct(productName); // Clear the thank you message machine.Messages.Dequeue(); Assert.AreEqual("EXACT CHANGE ONLY", machine.Messages.Dequeue()); }
public IEnumerable <Coin> AddCoins([FromBody] int coinValue) { var coin = new Coin(coinValue); var coins = _vendingMachine.InsertCoin(coin); return(coins); }
private void DisplayCoinMenu() { Console.Clear(); Console.WriteLine(); Console.WriteLine("Coins Denomination Supported."); foreach (var coin in _CoinMenu) { Console.WriteLine($"{coin.Key} - {coin.Value}"); } Console.WriteLine(); OutputCurrentAmount(); Console.WriteLine("Select a denomination to insert:"); var input = Console.ReadLine(); if (int.TryParse(input, out var denomination)) { if (_CoinMenu.ContainsKey(denomination)) { _vendingMachine.InsertCoin(denomination); DisplayCoinMenu(); return; } else { Console.WriteLine("Invalid denomination"); } } }
public void WhenInsertCoin_WithAnyCoin_ICoinFactoryCreateShouldBeInvoked(CoinEnum coin) { IVendingMachine vendingMachine = Mocker.CreateInstance <VendingMachine>(); vendingMachine.InsertCoin(coin); Mocker.Verify <ICoinFactory>(c => c.Create(coin), Times.Once); }
public void ImperfectNickelDiameterAndWeightRecognized() { IVendingMachine machine = GetVendingMachineInstance(); ICoin coin = new InputCoin(21.25f, 5.05f); machine.Messages.Dequeue(); machine.InsertCoin(coin); Assert.AreEqual("$0.05", machine.Messages.Dequeue()); }
public void WhenInsertCoin_WithAnInvalidCoin_ICoinCollectionAddCoinShouldBeInvoked(CoinEnum coinEnum, Type coinType) { IVendingMachine vendingMachine = Mocker.CreateInstance <VendingMachine>(); ICoin coin = (ICoin)Activator.CreateInstance(coinType); Mocker.GetMock <ICoinFactory>().Setup(c => c.Create(coinEnum)).Returns(coin); vendingMachine.InsertCoin(coinEnum); Mocker.Verify <ICoinReturn>(c => c.AddCoin(coin), Times.Once); }
public void InsufficientFunds() { IVendingMachine machine = GetVendingMachineInstance(); machine.InsertCoin(new Quarter()); machine.Messages.Clear(); machine.SelectProduct(Constants.CHIPS); Assert.AreEqual("PRICE $0.50", machine.Messages.Dequeue()); Assert.AreEqual("$0.25", machine.Messages.Dequeue()); }
private void InsertCoin() { WriteLine(); WriteLine("Insert a coin - nickel, dime or quarter or try your luck"); WriteLine(); var coin = ReadLine(); _vendingMachine.InsertCoin(coin ?? string.Empty); CheckDisplay(); }
private void CreateAvailableChange(IVendingMachine machine) { machine.InsertCoin(new Dime()); machine.InsertCoin(new Dime()); machine.InsertCoin(new Nickel()); machine.InsertCoin(new Nickel()); machine.InsertCoin(new Nickel()); machine.InsertCoin(new Nickel()); machine.InsertCoin(new Nickel()); machine.InsertCoin(new Nickel()); string productName = Constants.CHIPS; IProduct product = machine.SelectProduct(productName); }
public void InvalidCoin() { IVendingMachine machine = GetVendingMachineInstance(); ICoin coin = new InputCoin(42.42f, 0.42f); machine.Messages.Dequeue(); machine.InsertCoin(coin); Assert.AreEqual("EXACT CHANGE ONLY", machine.Messages.Dequeue()); Assert.AreEqual(1, machine.CoinReturn.Count); Assert.AreEqual(coin, machine.CoinReturn[0]); }
private static void ProcessInsertCommand(string lowerCaseInput) { var insertCommandData = lowerCaseInput.Split(' '); decimal value; if (insertCommandData.Length != 2 || !decimal.TryParse(insertCommandData[1], out value)) { Console.WriteLine($"Parameter '{insertCommandData.Last()}' is not correct, type 'help' to see valid examples." + Environment.NewLine); return; } vendingMachine.InsertCoin(value); Console.WriteLine(); }
public void Test_NoCoinsNoChange_InsertMessage() { //Arrange VendingMachine vmInstance = new VendingMachine(); vmInstance.replenishQuarter(0, true); vmInstance.replenishDime(0, true); vmInstance.replenishNickel(0, true); IVendingMachine vm = vmInstance; //Act string msg = vm.InsertCoin(new Coin(0)); //Assert Assert.AreEqual("EXACT CHANGE ONLY", msg); }
public void Messages_InsertCoin_AfterPurchase() { IVendingMachine machine = GetVendingMachineInstance(); machine.InsertCoin(new Dime()); machine.InsertCoin(new Dime()); machine.InsertCoin(new Dime()); machine.InsertCoin(new Dime()); machine.InsertCoin(new Nickel()); machine.InsertCoin(new Nickel()); machine.Messages.Clear(); machine.SelectProduct(Constants.CHIPS); Assert.AreEqual("THANK YOU", machine.Messages.Dequeue()); Assert.AreEqual("INSERT COIN", machine.Messages.Dequeue()); }
public void Iterate(string input) { var coin = _parseConsoleInput.Parse(input); _vendingMachine.InsertCoin(coin); }
public ActionResult InsertCoin() { vendingMachine.InsertCoin(); return(RedirectToAction("Index")); }
public void GivenIHaveInsertedAQuarter() { vendingMachine.InsertCoin(); }
/// <summary> /// <inheritdoc/> /// </summary> /// <param name="coinValue">Value of the coin inserted by the user</param> public void InsertCoin(int coinValue) { _vendingMachine.InsertCoin(coinValue); }