예제 #1
0
 @Test
 public void testGetCash()
     throws NotEnoughMoneyInAccountException, NotEnoughMoneyInATMException,
         NoCardInsertedException {
   System.out.println("getCashNotZeroBalance");
   double atmMoney = 1000.0;
   ATM atmTest = new ATM(atmMoney);
   Card mockCard = mock(Card.class);
   Account mockAccount = mock(Account.class);
   atmTest.insertCard(mockCard); // ver.2
   double balance = 600.0;
   double amount = 100.0;
   int pinCode = 7777;
   when(mockCard.getAccount()).thenReturn(mockAccount);
   when(mockCard.checkPin(pinCode)).thenReturn(true);
   when(mockCard.isBlocked()).thenReturn(false);
   when(mockAccount.getBalance()).thenReturn(balance);
   when(mockAccount.withdrow(amount)).thenReturn(amount);
   atmTest.validateCard(mockCard, pinCode);
   atmTest.getCash(amount);
   when(mockAccount.getBalance()).thenReturn(balance - amount);
   assertEquals(atmTest.getMoneyInATM(), atmMoney - amount, 0.0);
   assertEquals(atmTest.checkBalance(), balance - amount, 0.0);
   InOrder inOrder = inOrder(mockCard, mockAccount);
   inOrder.verify(mockCard).isBlocked();
   inOrder.verify(mockCard).checkPin(pinCode);
   inOrder.verify(mockCard, atLeastOnce()).getAccount();
   verify(mockAccount).withdrow(amount);
   inOrder.verify(mockAccount).getBalance();
 }
예제 #2
0
 @Test
 public void testInsertOnlyOneCard() {
   System.out.println("insertOnlyOneCard");
   ATM atmTest = new ATM(0.0);
   Card mockCard = mock(Card.class);
   boolean result = atmTest.insertCard(mockCard);
   assertTrue(result);
 }
예제 #3
0
 @Test(expected = UnsupportedOperationException.class)
 public void testInsertMoreThanOneCard() {
   System.out.println("insertMoreThanOneCard");
   ATM atmTest = new ATM(1000.0);
   Card mockCard = mock(Card.class);
   atmTest.insertCard(mockCard);
   atmTest.insertCard(mockCard);
 }
예제 #4
0
 @Test(expected = NoCardInsertedException.class)
 public void testGetCardFromATMMoreThanOneTime() throws NoCardInsertedException {
   System.out.println("getCardFromATMMoreThanOneTime");
   ATM atmTest = new ATM(1000.0);
   Card mockCard = mock(Card.class);
   atmTest.insertCard(mockCard);
   atmTest.getCardFromATM();
   atmTest.getCardFromATM();
 }
예제 #5
0
 @Test
 public void testCheckBalanceVerify() throws NoCardInsertedException {
   System.out.println("checkBalanceVerify");
   ATM atmTest = new ATM(1000);
   Card mockCard = mock(Card.class);
   Account mockAccount = mock(Account.class);
   when(mockCard.getAccount()).thenReturn(mockAccount);
   atmTest.insertCard(mockCard);
   atmTest.checkBalance();
   verify(mockCard, times(1)).isBlocked();
 }
예제 #6
0
 @Test(expected = IllegalArgumentException.class)
 public void testGetCashLessThanZero()
     throws NotEnoughMoneyInATMException, NotEnoughMoneyInAccountException,
         NoCardInsertedException {
   System.out.println("getCashLessThanZero");
   double amount = -100.0;
   ATM atmTest = new ATM(1000.0);
   Card mockCard = mock(Card.class);
   atmTest.insertCard(mockCard);
   Account mockAccount = mock(Account.class);
   when(mockCard.getAccount()).thenReturn(mockAccount);
   atmTest.getCash(amount);
 }
예제 #7
0
 @Test
 public void testCheckBalance() throws NoCardInsertedException {
   System.out.println("checkBalance");
   ATM atmTest = new ATM(1000.0);
   Card mockCard = mock(Card.class);
   Account mockAccount = mock(Account.class);
   atmTest.insertCard(mockCard);
   when(mockCard.getAccount()).thenReturn(mockAccount);
   when(mockAccount.getBalance()).thenReturn(0.0);
   double expResult = 0.0;
   double result = atmTest.checkBalance();
   assertEquals(expResult, result, 0.0);
   InOrder inOrder = inOrder(mockCard, mockAccount);
   inOrder.verify(mockCard).getAccount();
   inOrder.verify(mockAccount).getBalance();
 }
예제 #8
0
 @Test(expected = NotEnoughMoneyInATMException.class)
 public void testGetCashNotEnoughMoneyInATM()
     throws NoCardInsertedException, NotEnoughMoneyInAccountException,
         NotEnoughMoneyInATMException {
   System.out.println("getCashNotEnoughMoneyInATM");
   ATM atmTest = new ATM(1000.0);
   Card mockCard = mock(Card.class);
   Account mockAccount = mock(Account.class);
   double amount = 1100.0;
   int pinCode = 7777;
   atmTest.insertCard(mockCard); // ver.2
   when(mockCard.getAccount()).thenReturn(mockAccount);
   when(mockCard.checkPin(pinCode)).thenReturn(true);
   atmTest.validateCard(mockCard, pinCode);
   atmTest.getCash(amount);
   InOrder inOrder = inOrder(mockCard, mockAccount);
   inOrder.verify(mockCard).getAccount();
   inOrder.verify(mockAccount).getBalance();
 }