public void TestWithdrawMoneyNotMultipleAmountThrows(int amount, PaperNote minNote) { //Arrange var allCash = new Money { Amount = 240000, Notes = new Dictionary <PaperNote, int> { { PaperNote.Twenty, 2000 }, { PaperNote.Fifty, 4000 } } }; _cashProcessor.Cash.Returns(allCash); _cashProcessor.MinDenomination().Returns(minNote); //Act Assert.Throws <AmountIsNotMultipleException>(() => _atMachine.WithdrawMoney(amount)); //Assert _cardProcessor.DidNotReceive().GetCardBalance(); _cardProcessor.DidNotReceiveWithAnyArgs().BlockAmount(Arg.Any <int>()); _cashProcessor.DidNotReceiveWithAnyArgs().WithdrawMoney(Arg.Any <int>()); _cardProcessor.DidNotReceiveWithAnyArgs().WithdrawFromBlocked(Arg.Any <Guid>()); }
public void Given_manyVariationsAvailable_When_Dispense_Then_shouldUseHighestPossibleValuePaperNotes() { // Given var fifty = new PaperNote(50); var twenty = new PaperNote(20); var ten = new PaperNote(10); var money = new Money { Notes = new Dictionary <PaperNote, int> { { fifty, 5 }, { twenty, 3 }, { ten, 20 } } }; var amountToDispense = 120; GetMock <IThisATMachineState>().Setup(x => x.AvailableMoney).Returns(money); // When var result = ClassUnderTest.Dispense(amountToDispense); // Then Assert.AreEqual(120, result.Amount); Assert.AreEqual(2, result.Notes.Count); Assert.AreEqual(2, result.Notes[fifty]); Assert.AreEqual(1, result.Notes[twenty]); }
public void Given_cantUseHighestValueNotes_When_Dispense_Then_shouldReturnCorrectAmountsOfPaperNotes() { // Given var fifty = new PaperNote(50); var twenty = new PaperNote(20); var money = new Money { Notes = new Dictionary <PaperNote, int> { { fifty, 1 }, { twenty, 3 } } }; var amountToDispense = 60; GetMock <IThisATMachineState>().Setup(x => x.AvailableMoney).Returns(money); // When var result = ClassUnderTest.Dispense(amountToDispense); // Then Assert.AreEqual(60, result.Amount); Assert.AreEqual(1, result.Notes.Count); Assert.AreEqual(3, result.Notes[twenty]); }
public void Given_paperNote_When_GetHashCode_Then_hashCodeIsFaceValue() { // Given var paperNote = new PaperNote(10); // When var result = paperNote.GetHashCode(); // Then Assert.AreEqual(paperNote.FaceValue, result); }
public void Given_twoPaperNotesWithSameFaceValue_When_Equals_Then_shouldReturnTrue() { // Given var paperNoteOne = new PaperNote(5); var paperNoteTwo = new PaperNote(5); // When var result = paperNoteOne.Equals(paperNoteTwo); // Then Assert.IsTrue(result); }
public void Given_twoPaperNotesWithDifferentFaceValues_When_Equals_Then_shouldReturnFalse() { // Given var paperNoteOne = new PaperNote(5); var paperNoteTwo = new PaperNote(10); // When var result = paperNoteOne.Equals(paperNoteTwo); // Then Assert.IsFalse(result); }
public void TestMinDenomination(int fiveAmount, int tenAmount, int twentyAmount, int fiftyAmount, PaperNote expected) { //Arrange var money = new Money() { Amount = fiveAmount * 5 + tenAmount * 10 + twentyAmount * 20 + fiftyAmount * 50, Notes = new Dictionary <PaperNote, int> { { PaperNote.Five, fiveAmount }, { PaperNote.Ten, tenAmount }, { PaperNote.Twenty, twentyAmount }, { PaperNote.Fifty, fiftyAmount } } }; _cashProcessor.LoadMoney(money); //Act var result = _cashProcessor.MinDenomination(); //Assert Assert.Equal(expected, result); }