public void WhenAmountIsWithDrawnThenCashmachineShouldReturnCorrectNotesAndCoinsPairs() { INoteSelector noteSelector = new NoteSelectorAlogrithm1(); ICoinSelecotr coinSelector = new CoinSelector(); var availableNotes = new Dictionary <int, int> { { 50, 2 }, { 20, 2 }, { 10, 0 }, { 5, 0 }, { 2, 0 }, { 1, 0 } }; var availableCoins = new Dictionary <int, int> { { 50, 10 }, { 20, 10 }, { 10, 0 }, { 5, 5 }, { 2, 5 }, { 1, 5 } }; var cashMachine = new Cashmachine(noteSelector, coinSelector, availableNotes, availableCoins); var result = cashMachine.WithdrawCash(120.28m); Assert.AreEqual(result.Notes[50], 2); Assert.AreEqual(result.Notes[20], 1); Assert.AreEqual(result.Coins[20], 1); Assert.AreEqual(result.Coins[5], 1); Assert.AreEqual(result.Coins[2], 1); Assert.AreEqual(result.Coins[1], 1); }
public void WhenAlgo1IsUseThenCashmachineShouldUse50NotesIfAvailable() { INoteSelector noteSelector = new NoteSelectorAlogrithm1(); ICoinSelecotr coinSelector = new CoinSelector(); var availableNotes = new Dictionary <int, int> { { 50, 2 }, { 20, 2 }, { 10, 0 }, { 5, 0 }, { 2, 0 }, { 1, 0 } }; var availableCoins = new Dictionary <int, int> { { 50, 10 }, { 20, 10 }, { 10, 0 }, { 5, 5 }, { 2, 5 }, { 1, 5 } }; var cashMachine = new Cashmachine(noteSelector, coinSelector, availableNotes, availableCoins); var result = cashMachine.WithdrawCash(120.28m); Assert.AreEqual(result.Notes[50], 2); Assert.AreEqual(result.Notes[20], 1); Assert.AreEqual(result.Coins[20], 1); Assert.AreEqual(result.Coins[5], 1); Assert.AreEqual(result.Coins[2], 1); Assert.AreEqual(result.Coins[1], 1); }
public void WhenWithdrawCashThenAvailableBalanceMustBeUpdated() { INoteSelector noteSelector = new NoteSelectorAlogrithm1(); ICoinSelecotr coinSelector = new CoinSelector(); var availableNotes = new Dictionary <int, int> { { 50, 2 }, { 20, 5 }, { 10, 1 }, { 5, 1 }, { 2, 1 }, { 1, 1 } }; var availableCoins = new Dictionary <int, int> { { 50, 1 }, { 20, 1 }, { 10, 1 }, { 5, 1 }, { 2, 1 }, { 1, 1 } }; decimal beforeWithdrawBalance = (HelperMethods.GetBalance(availableNotes, availableCoins)); var cashMachine = new Cashmachine(noteSelector, coinSelector, availableNotes, availableCoins); var result = cashMachine.WithdrawCash(120.28m); decimal afterWithdrawBalance = (HelperMethods.GetBalance(availableNotes, availableCoins)); Assert.AreEqual(218.88m, beforeWithdrawBalance); Assert.AreEqual(98.6m, afterWithdrawBalance); }