public void MakeChange() { Coin quarter = new Coin("quarter"); Coin dime = new Coin("dime"); Coin nickel = new Coin("nickel"); decimal quarterValue = 0.25m; decimal dimeValue = 0.10m; decimal nickelValue = 0.05m; while (ValueInMachine > 0.0m) { if (ValueInMachine >= quarterValue) { CoinReturn.Add(quarter); ValueInMachine -= quarterValue; } else if (ValueInMachine >= dimeValue) { CoinReturn.Add(dime); ValueInMachine -= dimeValue; } else if (ValueInMachine >= nickelValue) { CoinReturn.Add(nickel); ValueInMachine -= nickelValue; } } }
public void TestAmoutAvaibleReturnsValueOfAllCoinsInTheReturnMulitpleCoins() { CoinReturn coinReturn = new CoinReturn(); MockCoin mockCoinOne = new MockCoin() { ValueToReturn = 1.00m }; MockCoin mockCoinTwo = new MockCoin() { ValueToReturn = 99.28m }; MockCoin mockCoinThree = new MockCoin() { ValueToReturn = 123.123m }; decimal expectedValue = mockCoinOne.ValueToReturn + mockCoinTwo.ValueToReturn + mockCoinThree.ValueToReturn; coinReturn.AddCoin(mockCoinOne); coinReturn.AddCoin(mockCoinTwo); coinReturn.AddCoin(mockCoinThree); Assert.AreEqual(expectedValue, coinReturn.AmountAvailable); }
private void ButtonEventListener(object sender, EventArgs eventArgs) { decimal amountReturnedFromClear = CoinReturn.Clear(); if (amountReturnedFromClear > 0) { DialogService.ShowMessage("You receive: " + $"{amountReturnedFromClear:C}"); } }
public void TestRegisterAddsObserverToObserverList() { CoinReturn coinReturn = new CoinReturn(); MockCoinReturnObserver mockCoinReturnObserver = new MockCoinReturnObserver(); coinReturn.RegisterObserver(mockCoinReturnObserver); Assert.AreEqual(1, coinReturn.Observers.Count); Assert.AreEqual(mockCoinReturnObserver, coinReturn.Observers[0]); }
public void TestAddPutsCoinIntoCoinList() { CoinReturn coinReturn = new CoinReturn(); MockCoin coinAdded = new MockCoin(); coinReturn.AddCoin(coinAdded); Assert.AreEqual(new List <ICoin>() { coinAdded }, coinReturn.Coins); }
public void MakeChange(decimal productCost) { var coins = new List <ICoin>(); var cost = productCost; var deposited = DepositedCoins.TotalValue(); var amountOwedToCustomer = deposited - cost; var refundRemaining = amountOwedToCustomer; if ((amountOwedToCustomer % new decimal(0.25)) < amountOwedToCustomer) { var numOfCoins = (int)(amountOwedToCustomer / new decimal(0.25)); for (var i = 0; i < numOfCoins; i++) { coins.Add(Coin.Quarter); } refundRemaining = refundRemaining % new decimal(0.25); amountOwedToCustomer = refundRemaining; } if ((amountOwedToCustomer % new decimal(0.10)) < amountOwedToCustomer) { var numOfCoins = (int)(amountOwedToCustomer / new decimal(0.10)); for (var i = 0; i <= numOfCoins; i++) { coins.Add(Coin.Dime); } refundRemaining = refundRemaining % new decimal(0.10); amountOwedToCustomer = refundRemaining; } if ((amountOwedToCustomer % new decimal(0.05)) < amountOwedToCustomer) { var numOfCoins = (int)(amountOwedToCustomer / new decimal(0.05)); for (var i = 0; i <= numOfCoins; i++) { coins.Add(Coin.Nickel); } refundRemaining = refundRemaining % new decimal(0.05); amountOwedToCustomer = refundRemaining; } foreach (var coin in coins) { CoinInventory.Remove(coin); CoinReturn.Deposit(coin.ToMetal()); } }
public void TestAmoutAvaibleReturnsValueOfAllCoinsInTheReturn() { CoinReturn coinReturn = new CoinReturn(); decimal expectedValue = 4.00m; MockCoin mockCoinOne = new MockCoin() { ValueToReturn = expectedValue }; coinReturn.AddCoin(mockCoinOne); Assert.AreEqual(expectedValue, coinReturn.AmountAvailable); }
public void TestClearCallsCoinReturnUpdatedOnObservers() { CoinReturn coinReturn = new CoinReturn(); MockCoinReturnObserver mockCoinReturnObserverOne = new MockCoinReturnObserver(); MockCoinReturnObserver mockCoinReturnObserverTwo = new MockCoinReturnObserver(); coinReturn.RegisterObserver(mockCoinReturnObserverOne); coinReturn.RegisterObserver(mockCoinReturnObserverTwo); coinReturn.Clear(); Assert.AreEqual(1, mockCoinReturnObserverOne.NumberOfTimesCoinPurseUpdatedCalled); Assert.AreEqual(1, mockCoinReturnObserverTwo.NumberOfTimesCoinPurseUpdatedCalled); }
public void TestClearReturnsValueOfAllCoins(decimal coinOneValue, decimal coinTwoValue, decimal expectedTotalValue) { CoinReturn coinReturn = new CoinReturn(); coinReturn.AddCoin(new MockCoin() { ValueToReturn = coinOneValue }); coinReturn.AddCoin(new MockCoin() { ValueToReturn = coinTwoValue }); Assert.AreEqual(expectedTotalValue, coinReturn.Clear()); }
public void TestClearEmptiesCoinList() { CoinReturn coinReturn = new CoinReturn(); MockCoin firstCoinAdded = new MockCoin(); MockCoin secondCoinAdded = new MockCoin(); MockCoin thirdCoinAdded = new MockCoin(); coinReturn.AddCoin(firstCoinAdded); coinReturn.AddCoin(secondCoinAdded); coinReturn.AddCoin(thirdCoinAdded); coinReturn.Clear(); Assert.AreEqual(new List <ICoin>(), coinReturn.Coins); }
// Other methods public void TakeCoin(Coin insertedCoin) { if (insertedCoin.CoinType == "quarter") { ValueInMachine += 0.25m; } else if (insertedCoin.CoinType == "dime") { ValueInMachine += 0.10m; } else if (insertedCoin.CoinType == "nickel") { ValueInMachine += 0.05m; } else { CoinReturn.Add(insertedCoin); } }
public void TestAddPutsCoinIntoCoinListMultipleCoins() { CoinReturn coinReturn = new CoinReturn(); MockCoin firstCoinAdded = new MockCoin(); MockCoin secondCoinAdded = new MockCoin(); MockCoin thirdCoinAdded = new MockCoin(); List <ICoin> expectedCoins = new List <ICoin>() { firstCoinAdded, secondCoinAdded, thirdCoinAdded }; coinReturn.AddCoin(firstCoinAdded); coinReturn.AddCoin(secondCoinAdded); coinReturn.AddCoin(thirdCoinAdded); Assert.AreEqual(expectedCoins, coinReturn.Coins); }
/// <summary> /// Issues change when a customer has entered more coins than are required /// </summary> /// <param name="amountToReturn">The amount to be returned</param> private void IssueChange(decimal amountToReturn) { if (CoinReturn == null) { CoinReturn = new List <Coin>(); } var valCounter = 0m; foreach (var coin in CurrentTransaction) { valCounter += coin.Value; CoinReturn.Add(coin); if (amountToReturn == valCounter) { return; } } }
public void InvalidCoin(IMetal metal) { CoinReturn.Deposit(metal); StartState(); }
public void TestCoinReturnStartsWithEmptyCoinList() { CoinReturn coinReturn = new CoinReturn(); Assert.AreEqual(new List <ICoin>(), coinReturn.Coins); }
// simulate the return of a coin public void ReturnCoin(string coin) { CoinReturn.Add(coin); }