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()); }
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)); }
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 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()); }
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(); } }
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 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 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()); }
private void SelectProduct() { WriteLine(); WriteLine("(a) Cola, $1.00"); WriteLine("(b) Chips, $0.50"); WriteLine("(c) Candy, $0.65"); WriteLine("(x) Go Back"); WriteLine(); var selection = ReadLine(); if (selection?.ToLowerInvariant() == "x") { return; } _vendingMachine.SelectProduct(selection ?? string.Empty); CheckDisplay(); }
/// <summary> /// <inheritdoc/> /// </summary> /// <param name="itemName">Name of the product selected by the user</param> public void SelectProduct(string itemName) { _vendingMachine.SelectProduct(itemName); }