diff --git a/pom.xml b/pom.xml
index 9901415..36086c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,21 @@
io.zipcoder
project-2-atm
1.0-SNAPSHOT
+ jar
+ interfaces-1
+ http://maven.apache.org
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
\ No newline at end of file
diff --git a/src/main/java/ATM.java b/src/main/java/ATM.java
new file mode 100644
index 0000000..404622c
--- /dev/null
+++ b/src/main/java/ATM.java
@@ -0,0 +1,82 @@
+import java.util.ArrayList;
+
+public class ATM {
+ private ArrayList allUsers = new ArrayList();
+
+ private int numOfAccounts = 0;
+
+ private static ATM theInstance = new ATM();
+
+ private ATM() {
+ }
+
+ public ArrayList getAllUsers() {
+ return allUsers;
+ }
+
+ public void clearAllUsers(){
+ allUsers.clear();
+
+ }
+
+ public static ATM getInstance() {
+ return theInstance;
+ }
+
+ public void addUser(String userName, String password) {
+ User newUser = new User(userName, password);
+ allUsers.add(newUser);
+ }
+
+ int returnAllUsersSize() {
+ return allUsers.size();
+ }
+
+ int returnNewAccountNum() {
+ numOfAccounts++;
+ return numOfAccounts;
+ }
+
+ boolean UserExist(String userName) {
+ boolean userExist = false;
+
+ for (User currentUser : allUsers) {
+
+ if (userName.equalsIgnoreCase(currentUser.getUserName())) {
+ return true;
+ }
+ }
+ return userExist;
+ }
+
+ int UserIndex(String userName){
+ int index = 0;
+ User currentUser;
+ for (int i = 0; i < allUsers.size(); i++) {
+ currentUser = (User) allUsers.get(i);
+ if (userName.equalsIgnoreCase(currentUser.getUserName())) {
+ return i;
+ }
+ }
+ return index;
+ }
+
+ boolean UserNameAndPasswordCorrect(String userName, String password) {
+ User currentUser;
+ String userPassword;
+ boolean userCorrect = false;
+ if(UserExist(userName)){
+ currentUser = EnterUser(userName);
+ userPassword= currentUser.getUserPassword();
+ userCorrect = (password.equals(userPassword));
+ }
+ return userCorrect;
+ }
+
+ User EnterUser(String userName) {
+ int index = UserIndex(userName);
+ User currentUser = (User) allUsers.get(index);
+ return currentUser;
+ }
+
+}
diff --git a/src/main/java/Account.java b/src/main/java/Account.java
new file mode 100644
index 0000000..12fc184
--- /dev/null
+++ b/src/main/java/Account.java
@@ -0,0 +1,42 @@
+import java.util.ArrayList;
+
+public class Account {
+ private int accountNum;
+ private double accountBalance;
+ private String accountType;
+ private ArrayList accountHistory = new ArrayList();
+
+ ATM atm = ATM.getInstance();
+
+ Account(String accountType){
+ this.accountType = accountType;
+ }
+
+ void setBalance(double balanceGiven) {
+ accountBalance = balanceGiven;
+ }
+
+ double getBalance() {
+ return accountBalance;
+ }
+
+ void setAccountNum() {
+ this.accountNum = atm.returnNewAccountNum();
+ }
+
+ int getAccountNum() {
+ return accountNum;
+ }
+
+ String getAccountType(){
+ return accountType;
+ }
+
+ ArrayList getAccountHistory() {
+ return accountHistory;
+ }
+
+ void addToAccountHistory(String newTransaction) {
+ accountHistory.add(newTransaction);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/CheckingAccount.java b/src/main/java/CheckingAccount.java
new file mode 100644
index 0000000..6545218
--- /dev/null
+++ b/src/main/java/CheckingAccount.java
@@ -0,0 +1,5 @@
+public class CheckingAccount extends Account {
+ public CheckingAccount(){
+ super("Checking");
+ }
+}
diff --git a/src/main/java/Console.java b/src/main/java/Console.java
new file mode 100644
index 0000000..deafd6f
--- /dev/null
+++ b/src/main/java/Console.java
@@ -0,0 +1,341 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+public class Console {
+ ATM atm = ATM.getInstance();
+ Scanner scan = new Scanner(System.in);
+
+ void frontPage() {
+ System.out.print("\nWelcome\n 1) New User\n 2) Login\n 0) Exit\n");
+ switch (catchIntErrorInput()) {
+ case 1:
+ addUser();
+ break;
+ case 2:
+ loginPage();
+ break;
+ case 0:
+ return;
+ default:
+ System.out.println("Not a valid input");
+ frontPage();
+ }
+ }
+
+ private void userPage(User user) {
+ System.out.print(
+ "\n 1) Check balance of account\n 2) Withdraw from account\n 3) Deposit to account" +
+ "\n 4) Transfer from one account to another\n 5) Print account transaction history" +
+ "\n 6) Close account\n 7) Add new account\n 8) User settings\n 0) Logout\n");
+ switch (catchIntErrorInput()) {
+ case 1:
+ balancePrint(user);
+ break;
+ case 2:
+ withdrawPrint(user);
+ break;
+ case 3:
+ depositPrint(user);
+ break;
+ case 4:
+ transferPrint(user);
+ break;
+ case 5:
+ historyPrint(user);
+ break;
+ case 6:
+ closeAccount(user);
+ break;
+ case 7:
+ addAccount(user);
+ break;
+ case 8:
+ userSettingPage(user);
+ break;
+ case 0:
+ frontPage();
+ break;
+ default:
+ userPage(user);
+ }
+ }
+
+ private void userSettingPage(User user) {
+ System.out.println("\nUser Settings\n 1) Change user name\n 2) Change password\n 3) Look at all accounts\n 0) Back");
+ switch (catchIntErrorInput()) {
+ case 1:
+ changeUserNamePage(user);
+ break;
+ case 2:
+ changePasswordPage(user);
+ break;
+ case 3:
+ printAccounts(user);
+ break;
+ case 0:
+ userPage(user);
+ break;
+ default:
+ userSettingPage(user);
+ }
+ }
+
+ private void transferPrint(User user) {
+ System.out.println("Transfer funds\n 1) Transfer to own account\n 2) Transfer to other users account\n 0) Back");
+ switch (catchIntErrorInput()) {
+ case 1:
+ selfTransfer(user);
+ break;
+ case 2:
+ otherUserTransfer(user);
+ break;
+ case 0:
+ userPage(user);
+ break;
+ default:
+ transferPrint(user);
+ }
+ }
+
+ private void addAccount(User user) {
+ System.out.print("What type of account?\n 1) Checking\n 2) Savings\n 3) Investment\n");
+ String accountType;
+ switch (catchIntErrorInput()) {
+ case 1:
+ accountType = "Checking ";
+ break;
+ case 2:
+ accountType = "Savings ";
+ break;
+ case 3:
+ accountType = "Investment";
+ break;
+ case 0:
+ userPage(user);
+ default:
+ addAccount(user);
+ accountType = "x";
+ }
+ if (!"x".equals(accountType)) {
+ int accountNum = user.addAccount(accountType);
+ System.out.print("\nAccount added\n\nNew account number : " + accountNum + "\n");
+ }
+ userPage(user);
+ }
+
+ private int catchIntErrorInput() {
+ int output = -1;
+ while(output<0) {
+ String input = scan.next();
+ try {
+ output = Integer.parseInt(input);
+ } catch (Exception e) {
+ System.out.println("Invalid input");
+ }
+ }
+ return output;
+ }
+
+ private double catchDoubleErrorInput() {
+ double output = -1;
+ while(output<0) {
+ String input = scan.next();
+ try {
+ output = Double.parseDouble(input);
+ } catch (Exception e) {
+ System.out.println("Invalid input");
+ }
+ }
+ return output;
+ }
+
+ private void printAccounts(User user) {
+ ArrayList accounts = user.getAccountsArray();
+ for (Object account : accounts) {
+ printAccountInfo((Account) account);
+ }
+ userSettingPage(user);
+ }
+
+ private void printAccountInfo(Account account) {
+ String accountType = account.getAccountType();
+ int accountNum = account.getAccountNum();
+ double accountBalance = account.getBalance();
+ System.out.println("Account type : " + accountType + "\tAccount number : " + accountNum + "\t\tAccount balance\t: " + accountBalance);
+ }
+
+ private void historyPrint(User user) {
+ Account account = enterAccount(user);
+ ArrayList history = account.getAccountHistory();
+ System.out.println("Most recent at the bottom");
+ for (Object transaction : history) {
+ System.out.println((String) transaction);
+ }
+ userPage(user);
+ }
+
+ private void otherUserTransfer(User user) {
+ System.out.println("From account");
+ Account fromAccount = enterAccount(user);
+ System.out.println("User to transfer to");
+ User toUser = enterUser();
+ Account toAccount = enterAccount(toUser);
+ System.out.print("How mush would you like to transfer >> ");
+ double amount = catchDoubleErrorInput();
+ if (user.withdraw(amount, fromAccount) && toUser.deposit(amount, toAccount)) {
+ System.out.println("Transfer made");
+ }
+ userPage(user);
+ }
+
+ private User enterUser() {
+ User toUser = null;
+ System.out.print("User name >> ");
+ String toUserString = scan.next();
+ if (atm.UserExist(toUserString)) {
+ toUser = atm.EnterUser(toUserString);
+ }
+ return toUser;
+ }
+
+ private void loginPage() {
+ System.out.print("LOGIN PAGE\n");
+ System.out.print("User Name >> ");
+ String userName = scan.next();
+ System.out.print("Password >> ");
+ String password = scan.next();
+ if (atm.UserNameAndPasswordCorrect(userName, password)) {
+ User user = atm.EnterUser(userName);
+ System.out.println("\nWelcome back " + user.getUserName());
+ userPage(user);
+ } else {
+ if (atm.UserExist(userName)) {
+ System.out.print("Incorrect password\n");
+ } else {
+ System.out.print("User does not exist\n");
+ }
+ frontPage();
+ }
+ }
+
+
+ private void selfTransfer(User user) {
+ System.out.print("From account\n");
+ Account fromAccount = enterAccount(user);
+ System.out.print("To account\n");
+ Account toAccount = enterAccount(user);
+ System.out.print("How much would you like to transfer >> ");
+ double amount = catchDoubleErrorInput();
+ if (user.transfer(amount, fromAccount, toAccount)) {
+ System.out.print("Transfer made\n");
+ userPage(user);
+ } else {
+ System.out.print("Transfer not possible\n");
+ userPage(user);
+ }
+
+ }
+
+
+ private void changePasswordPage(User user) {
+ System.out.print("Current password >> ");
+ String input = scan.next();
+ if (input.equalsIgnoreCase(user.getUserPassword())) {
+ System.out.print("New password >> ");
+ input = scan.next();
+ user.setUserPassword(input);
+ System.out.print("Password changed");
+ } else {
+ System.out.print("Incorrect password");
+ }
+ userSettingPage(user);
+ }
+
+ private void changeUserNamePage(User user) {
+ System.out.print("Current user name >> ");
+ String input = scan.next();
+ if (input.equalsIgnoreCase(user.getUserName())) {
+ System.out.print("New user name >> ");
+ input = scan.next();
+ user.setUserName(input);
+ System.out.print("User name changed\n");
+ } else {
+ System.out.print("Incorrect user name");
+ }
+ userSettingPage(user);
+ }
+
+ private void closeAccount(User user) {
+ Account account = enterAccount(user);
+ if (user.removeAccount(account.getAccountNum())) {
+ System.out.print("Account removed");
+ userPage(user);
+ } else {
+ System.out.print("Account is not empty");
+ userPage(user);
+ }
+ }
+
+
+ private void depositPrint(User user) {
+ Account account = enterAccount(user);
+ System.out.print("Deposit amount >> ");
+ double amount = catchDoubleErrorInput();
+ if (user.deposit(amount, account)) {
+ System.out.print("Deposit made\n");
+ userPage(user);
+ } else {
+ System.out.print("Deposit not possible\n");
+ userPage(user);
+ }
+ }
+
+ private void withdrawPrint(User user) {
+ Account account = enterAccount(user);
+ System.out.print("Withdraw amount >> ");
+ double amount = catchDoubleErrorInput();
+ if (user.withdraw(amount, account)) {
+ System.out.print("Withdraw made\n");
+ userPage(user);
+ } else {
+ System.out.print("Withdraw not possible\n");
+ userPage(user);
+ }
+ }
+
+ private void balancePrint(User user) {
+ Account account = enterAccount(user);
+ System.out.print("\nAccount : " + account.getAccountNum() + "\nBalance : " + account.getBalance() + "\n");
+ userPage(user);
+ }
+
+ private Account enterAccount(User user) {
+ System.out.print("Account number >> ");
+ int input = catchIntErrorInput();
+ Account account;
+ if (user.AccountExist(input)) {
+ account = user.EnterAccount(input);
+ } else {
+ System.out.print("Account does not exist");
+ account = null;
+ userPage(user);
+ }
+ return account;
+ }
+
+ private void addUser() {
+ System.out.print("New user Name >> ");
+ String userName = scan.next();
+ System.out.print("New password >> ");
+ String password = scan.next();
+ if (atm.UserExist(userName)) {
+ System.out.println("\nUser name already exist");
+ } else {
+ atm.addUser(userName, password);
+ System.out.print("\nNew user added\n");
+ }
+ frontPage();
+ }
+
+
+}
diff --git a/src/main/java/InvestmentAccount.java b/src/main/java/InvestmentAccount.java
new file mode 100644
index 0000000..09e6e9a
--- /dev/null
+++ b/src/main/java/InvestmentAccount.java
@@ -0,0 +1,5 @@
+public class InvestmentAccount extends Account{
+ public InvestmentAccount(){
+ super("Investment");
+ }
+}
diff --git a/src/main/java/Main.java b/src/main/java/Main.java
index 05e41a9..61c495c 100644
--- a/src/main/java/Main.java
+++ b/src/main/java/Main.java
@@ -1,9 +1,21 @@
-/**
- * Created by iyasuwatts on 10/17/17.
- */
+
+
+
public class Main {
public static void main(String[] args){
-
+ Console console = new Console();
+ console.frontPage();
+ }
+
+ public static void clearAll(){
+ ATM atm = ATM.getInstance();
+ for(User user : atm.getAllUsers()){
+ user.clearAccounts();
+ }
+ atm.clearAllUsers();
}
+
+
+
}
diff --git a/src/main/java/SavingAccount.java b/src/main/java/SavingAccount.java
new file mode 100644
index 0000000..5624846
--- /dev/null
+++ b/src/main/java/SavingAccount.java
@@ -0,0 +1,5 @@
+public class SavingAccount extends Account {
+ public SavingAccount(){
+ super("Savings");
+ }
+}
diff --git a/src/main/java/User.java b/src/main/java/User.java
new file mode 100644
index 0000000..4cd9f5b
--- /dev/null
+++ b/src/main/java/User.java
@@ -0,0 +1,104 @@
+import java.util.ArrayList;
+
+public class User {
+ private String userName;
+ private String password;
+ private ArrayList accountsArray = new ArrayList();
+
+ User(String userName, String password) {
+ this.userName = userName;
+ this.password = password;
+ }
+
+ public void clearAccounts(){
+ accountsArray.clear();
+ }
+
+ void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ String getUserName() {
+ return userName;
+ }
+
+ void setUserPassword(String password) {
+ this.password = password;
+ }
+
+ String getUserPassword() {
+ return password;
+ }
+
+ int addAccount(String accountType) {
+ Account newAccount = new Account(accountType);
+ newAccount.setBalance(0);
+ newAccount.setAccountNum();
+ accountsArray.add(newAccount);
+ return newAccount.getAccountNum();
+ }
+
+ ArrayList getAccountsArray() {
+ return accountsArray;
+ }
+
+ boolean removeAccount(int accountNum) {
+ boolean removedAccount = false;
+ Account removeAccount = EnterAccount(accountNum);
+ if (removeAccount.getBalance() == 0) {
+ accountsArray.remove(removeAccount);
+ removedAccount = true;
+ }
+ return removedAccount;
+ }
+
+ boolean AccountExist(int accountNum) {
+ Account currentAccount;
+ for (int i = 0; i < accountsArray.size(); i++) {
+ currentAccount = (Account) accountsArray.get(i);
+ if (currentAccount.getAccountNum() == accountNum) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ Account EnterAccount(int accountNum) {
+ Account currentAccount;
+ for (int i = 0; i < accountsArray.size(); i++) {
+ currentAccount = (Account) accountsArray.get(i);
+ if (currentAccount.getAccountNum() == accountNum) {
+ return currentAccount;
+ }
+ }
+ return null;
+
+ }
+
+ boolean withdraw(double amount, Account account) {
+ boolean withdrawMade = false;
+ double currentBalance = account.getBalance();
+ String newTransaction;
+ if (currentBalance >= amount) {
+ withdrawMade = true;
+ newTransaction = "Withdraw " + amount;
+ account.addToAccountHistory(newTransaction);
+ account.setBalance(currentBalance - amount);
+ }
+ return withdrawMade;
+ }
+
+ boolean deposit(double amount, Account account) {
+ double currentBalance = account.getBalance();
+ account.setBalance(currentBalance + amount);
+ String newTransaction = "Deposit " + amount;
+ account.addToAccountHistory(newTransaction);
+ return true;
+ }
+
+ boolean transfer(double amount, Account fromAccount, Account toAccount) {
+ return withdraw(amount, fromAccount) && deposit(amount, toAccount);
+ }
+
+
+}
diff --git a/src/test/java/accountTest.java b/src/test/java/accountTest.java
new file mode 100644
index 0000000..35959e4
--- /dev/null
+++ b/src/test/java/accountTest.java
@@ -0,0 +1,69 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+
+public class accountTest {
+ ATM atm = ATM.getInstance();
+
+ @Test // test getAccountBalance and setAccountBalance
+ public void AccountBalanceTest(){
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("checking");
+ Account currentAccount = currentUser.EnterAccount(1);
+
+ double expected = 500;
+
+ currentAccount.setBalance(500);
+
+ double actual = currentAccount.getBalance();
+
+ Assert.assertEquals(expected,actual,0);
+ }
+
+ @Test // test getAccountType and setAccountType
+ public void AccountTypeTest(){
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+
+ String expected = "savings";
+
+ currentUser.addAccount(expected);
+ Account currentAccount = currentUser.EnterAccount(1);
+ String actual = currentAccount.getAccountType();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+ @Test // test getAccountNum and setAccountNum
+ public void AccountNumberTest(){
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("savings");
+ Account currentAccount = currentUser.EnterAccount(1);
+
+ int expected = 1;
+
+ int actual = currentAccount.getAccountNum();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+ @Test // test getAccountHistory and addToAccountHistory
+ public void accountHistoryTest(){
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("savings");
+ Account account = currentUser.EnterAccount(1);
+ currentUser.deposit(50,account);
+ String expected = "Deposit 50.0";
+
+ ArrayList history = account.getAccountHistory();
+ String actual = (String)history.get(0);
+
+
+ Assert.assertEquals(expected,actual);
+ }
+
+}
diff --git a/src/test/java/atmTest.java b/src/test/java/atmTest.java
new file mode 100644
index 0000000..52bc34d
--- /dev/null
+++ b/src/test/java/atmTest.java
@@ -0,0 +1,84 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+public class atmTest {
+ ATM atm = ATM.getInstance();
+
+ @Test //Test addUsers and returnAllUserSize
+ public void addUserTest(){
+ atm.clearAllUsers();
+ int expected = 1;
+
+ atm.addUser("wes","password");
+ int actual = atm.returnAllUsersSize();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+ @Test
+ public void returnNewAccountNumTest(){
+ atm.clearAllUsers();
+ int expected = 1;
+
+ int actual = atm.returnNewAccountNum();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+ @Test
+ public void UserExistTest(){
+ atm.clearAllUsers();
+ atm.addUser("wes","password");
+ boolean expected1 = true;
+ boolean expected2 = false;
+
+ boolean actual1 = atm.UserExist("wes");
+ boolean actual2 = atm.UserExist("bob");
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+
+ }
+
+ @Test
+ public void UserIndexTest(){
+ atm.clearAllUsers();
+ int expected1 = 0;
+ int expected2 = 1;
+ atm.addUser("wes","password");
+ atm.addUser("bob","password");
+
+ int actual1 = atm.UserIndex("wes");
+ int actual2 = atm.UserIndex("bob");
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+ }
+
+ @Test
+ public void UserNameAndPasswordCorrectTest(){
+ atm.clearAllUsers();
+ atm.addUser("wes","password");
+ boolean expected1 = true;
+ boolean expected2 = false;
+
+ boolean actual1 = atm.UserNameAndPasswordCorrect("wes","password");
+ boolean actual2 = atm.UserNameAndPasswordCorrect("bob","password");
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+ }
+
+ @Test
+ public void EnterUserTest(){
+ atm.clearAllUsers();
+ atm.addUser("wes","password");
+ String expected = "wes";
+
+ User currentUser = atm.EnterUser("wes");
+ String actual = currentUser.getUserName();
+
+ Assert.assertEquals(expected,actual);
+
+ }
+}
diff --git a/src/test/java/userTest.java b/src/test/java/userTest.java
new file mode 100644
index 0000000..53d9c3b
--- /dev/null
+++ b/src/test/java/userTest.java
@@ -0,0 +1,201 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+
+public class userTest {
+ ATM atm = ATM.getInstance();
+
+ @Test //Test setUserName and getUserName
+ public void setUserNameTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ String expected1 = "wes";
+ String expected2 = "bob";
+
+ String actual1 = currentUser.getUserName();
+ currentUser.setUserName("bob");
+ String actual2 = currentUser.getUserName();
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+ }
+
+ @Test //Test setUserPassword and getUserPassword
+ public void setUserPasswordTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ String expected1 = "password";
+ String expected2 = "newPassword";
+
+ String actual1 = currentUser.getUserPassword();
+ currentUser.setUserPassword("newPassword");
+ String actual2 = currentUser.getUserPassword();
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+ }
+
+ @Test
+ public void addAccountTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("checking");
+ int expected = 1;
+
+ int actual = currentUser.getAccountsArray().size();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+
+ @Test
+ public void accountArraySizeTest(){
+ Main.clearAll();
+ atm.addUser("wes","pass");
+ User currentUser = atm.EnterUser("wes");
+ int expected1 = 0;
+ int expected2 = 1;
+
+ int actual1 = currentUser.getAccountsArray().size();
+ currentUser.addAccount("checking");
+ int actual2 = currentUser.getAccountsArray().size();
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+ }
+
+ @Test
+ public void getAccountArrayTest(){
+ Main.clearAll();
+ atm.addUser("wes","pass");
+ User currentUser = atm.EnterUser("wes");
+ int expected = 1;
+
+ currentUser.addAccount("Checking");
+ ArrayList accounts = currentUser.getAccountsArray();
+ Account account = (Account)accounts.get(0);
+ int actual = account.getAccountNum();
+
+ Assert.assertEquals(expected,actual);
+
+ }
+
+ @Test
+ public void removeAccountTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("checking");
+ currentUser.addAccount("savings");
+
+ boolean expected1 = true;
+ int expected2 = 1;
+ boolean expected3 = false;
+
+ boolean actual1 = currentUser.removeAccount(1);
+ int actual2 = currentUser.getAccountsArray().size();
+ Account currentAccount = currentUser.EnterAccount(2);
+ currentAccount.setBalance(50);
+ boolean actual3 = currentUser.removeAccount(2);
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+ Assert.assertEquals(expected3,actual3);
+
+
+ }
+
+ @Test
+ public void AccountExistTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("checking");
+ boolean expected1 = true;
+ boolean expected2 = false;
+
+ boolean actual1 = currentUser.AccountExist(1);
+ boolean actual2 = currentUser.AccountExist(3);
+
+ Assert.assertEquals(expected1,actual1);
+ Assert.assertEquals(expected2,actual2);
+ }
+
+ @Test
+ public void EnterAccountTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("checking");
+ Account currentAccount = currentUser.EnterAccount(1);
+ String expected = "checking";
+
+ String actual = currentAccount.getAccountType();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+ @Test
+ public void withdrawTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("savings");
+ Account currentAccount = currentUser.EnterAccount(1);
+ currentAccount.setBalance(100);
+
+ double expected = 50;
+ currentUser.withdraw(50,currentAccount);
+
+ double actual = currentAccount.getBalance();
+
+ Assert.assertEquals(expected,actual,0);
+
+ }
+
+ @Test
+ public void depositTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("savings");
+ Account currentAccount = currentUser.EnterAccount(1);
+
+ double expected = 100;
+
+ currentUser.deposit(100,currentAccount);
+
+ double actual = currentAccount.getBalance();
+
+ Assert.assertEquals(expected,actual,0);
+ }
+
+ @Test
+ public void transferTest(){
+ Main.clearAll();
+ atm.addUser("wes","password");
+ User currentUser = atm.EnterUser("wes");
+ currentUser.addAccount("savings");
+ currentUser.addAccount("checking");
+ Account firstAccount = currentUser.EnterAccount(1);
+ Account secondAccount = currentUser.EnterAccount(2);
+ firstAccount.setBalance(100);
+
+ double expected1 = 75;
+ double expected2 = 25;
+
+ currentUser.transfer(25,firstAccount,secondAccount);
+
+ double actual1 = firstAccount.getBalance();
+ double actual2 = secondAccount.getBalance();
+
+ Assert.assertEquals(expected1,actual1,0);
+ Assert.assertEquals(expected2,actual2,0);
+
+ }
+}
+