public void VendingMachine_FinishTransaction() { // Arrange List <VendingMachineItem> exampleItems = new List <VendingMachineItem> { new VendingMachineItem("Butterfinger", 1.00M, ItemType.Candy, 5), new VendingMachineItem("Coke", 1.25M, ItemType.Drink, 5), new VendingMachineItem("Bubbleyum", 2.00M, ItemType.Gum, 4) }; VendingMachine vendingMachine = new VendingMachine(exampleItems); // Act VendingMachineTransaction result = vendingMachine.FinishTransaction(); VendingMachineTransaction expectedResult = new VendingMachineTransaction(TransactionType.GiveChange, 0); // Assert AssertTransaction(expectedResult, result); // Arrange part 2 vendingMachine.FeedMoney(5); vendingMachine.PurchaseItem(ItemType.Candy, 5); vendingMachine.PurchaseItem(ItemType.Drink, 5); vendingMachine.PurchaseItem(ItemType.Gum, 4); // Expect $0.75 Assert.AreEqual(0.75M, vendingMachine.CurrentBalance); // Act part 2 result = vendingMachine.FinishTransaction(); expectedResult = new VendingMachineTransaction(TransactionType.GiveChange, 0.75M); // Assert part 2 AssertTransaction(expectedResult, result); }
public void VendingMachine_PurchaseItem() { // Purchase item transactions //InvalidPurchase, // Arrange List <VendingMachineItem> exampleItems = new List <VendingMachineItem> { new VendingMachineItem("Butterfinger", 1.00M, ItemType.Candy, 5), new VendingMachineItem("Coke", 1.25M, ItemType.Drink, 5), new VendingMachineItem("Bubbleyum", 2.00M, ItemType.Gum, 4) }; VendingMachine vendingMachine = new VendingMachine(exampleItems); vendingMachine.FeedMoney(10); // Act VendingMachineTransaction result = vendingMachine.PurchaseItem(ItemType.Candy, 5); VendingMachineTransaction expectedResult = new VendingMachineTransaction(TransactionType.PurchaseItem, exampleItems[0]); // Assert AssertTransaction(expectedResult, result); // Act part 2 // Item out of Stock.. result = vendingMachine.PurchaseItem(ItemType.Candy, 5); result = vendingMachine.PurchaseItem(ItemType.Candy, 5); result = vendingMachine.PurchaseItem(ItemType.Candy, 5); result = vendingMachine.PurchaseItem(ItemType.Candy, 5); result = vendingMachine.PurchaseItem(ItemType.Candy, 5); expectedResult = new VendingMachineTransaction(TransactionType.ItemOutOfStock, exampleItems[0]); // Assert part 2 AssertTransaction(expectedResult, result); // Act part 3 // NotSufficientFunds.. result = vendingMachine.PurchaseItem(ItemType.Gum, 4); result = vendingMachine.PurchaseItem(ItemType.Gum, 4); result = vendingMachine.PurchaseItem(ItemType.Drink, 5); expectedResult = new VendingMachineTransaction(TransactionType.NotSufficientFunds, exampleItems[1]); // Assert part 3 AssertTransaction(expectedResult, result); // Act part 4 // InvalidPurchase vendingMachine.FeedMoney(5); result = vendingMachine.PurchaseItem(ItemType.Gum, 7); expectedResult = new VendingMachineTransaction(TransactionType.InvalidPurchase, 0, null); // Assert part 4 AssertTransaction(expectedResult, result); }
public void VendingMachine_FeedMoney() { // Arrange VendingMachine vendingMachine = new VendingMachine(new List <VendingMachineItem>()); VendingMachineTransaction expectedResult = new VendingMachineTransaction(TransactionType.FeedMoney, 20); // Act -- Tests for $20 inserted VendingMachineTransaction result = vendingMachine.FeedMoney(20); // Assert Assert.AreEqual(20, vendingMachine.CurrentBalance); AssertTransaction(expectedResult, result); // Act part 2 -- Tests for "-$20" inserted result = vendingMachine.FeedMoney(-20); expectedResult = new VendingMachineTransaction(TransactionType.InvalidBill, 0); // Assert part 2 Assert.AreEqual(20, vendingMachine.CurrentBalance); AssertTransaction(expectedResult, result); // Act part 3 -- Tests for "$10" inserted result = vendingMachine.FeedMoney(10); expectedResult = new VendingMachineTransaction(TransactionType.FeedMoney, 10); // Assert part 3 Assert.AreEqual(30, vendingMachine.CurrentBalance); AssertTransaction(expectedResult, result); // Act part 4 -- Tests for "$6" inserted result = vendingMachine.FeedMoney(6); expectedResult = new VendingMachineTransaction(TransactionType.InvalidBill, 0); // Assert part 4 Assert.AreEqual(30, vendingMachine.CurrentBalance); AssertTransaction(expectedResult, result); }
private static void AssertTransaction(VendingMachineTransaction expectedResult, VendingMachineTransaction result) { Assert.AreEqual(expectedResult.Amount, result.Amount, "\nTransaction amount mismatch."); Assert.AreEqual(expectedResult.Type, result.Type, "\nDifferent transaction types."); Assert.AreEqual(expectedResult.Item, result.Item, "\nTransaction item mismatch."); }