From af2e6aa2f02240260cb88863003b953942c96f68 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 9 Nov 2019 10:32:34 -0500 Subject: [PATCH 01/69] Stubb language --- src/main/java/Language.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/Language.java diff --git a/src/main/java/Language.java b/src/main/java/Language.java new file mode 100644 index 0000000..9ffea9b --- /dev/null +++ b/src/main/java/Language.java @@ -0,0 +1,21 @@ +import java.util.HashMap; +import java.util.Map; + +public class Language { + + private Map langMap; + public enum LangKey { EXAMPLE1, EXAMPLE2 } + + public Language() { + + langMap = new HashMap(); + langMap.put(LangKey.EXAMPLE1, "This is an example"); + langMap.put(LangKey.EXAMPLE2, "This is another Example"); + + } + + public String getLang(LangKey key) { + return langMap.get(key); + } + +} From da4b12adf7ff59dab4035cc963b14bf9e0a74cd7 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 10:48:08 -0500 Subject: [PATCH 02/69] created accounts and user --- pom.xml | 8 +++++ src/main/java/{ => atmproject}/Main.java | 2 ++ src/main/java/atmproject/User.java | 26 ++++++++++++++ .../java/atmproject/accounts/Account.java | 35 +++++++++++++++++++ .../java/atmproject/accounts/AccountTest.java | 35 +++++++++++++++++++ 5 files changed, 106 insertions(+) rename src/main/java/{ => atmproject}/Main.java (85%) create mode 100644 src/main/java/atmproject/User.java create mode 100644 src/main/java/atmproject/accounts/Account.java create mode 100644 src/main/java/atmproject/accounts/AccountTest.java diff --git a/pom.xml b/pom.xml index 9901415..ddb247d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,14 @@ io.zipcoder project-2-atm 1.0-SNAPSHOT + + + junit + junit + 4.12 + compile + + \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/atmproject/Main.java similarity index 85% rename from src/main/java/Main.java rename to src/main/java/atmproject/Main.java index 05e41a9..6518db0 100644 --- a/src/main/java/Main.java +++ b/src/main/java/atmproject/Main.java @@ -1,3 +1,5 @@ +package atmproject; + /** * Created by iyasuwatts on 10/17/17. */ diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java new file mode 100644 index 0000000..752f58d --- /dev/null +++ b/src/main/java/atmproject/User.java @@ -0,0 +1,26 @@ +package atmproject; + +import atmproject.accounts.Account; + +import java.util.ArrayList; +import java.util.HashMap; + +public class User { + + private String firstName; + private String lastName; + private Integer pinNumber; + private Integer accountNumber; + HashMap accountList; + ArrayList transactionHistory; + + public User(String firstName, String lastName, Integer accountNumber){ + this.firstName = firstName; + this.lastName = lastName; + this.pinNumber = accountNumber; + this.pinNumber = 0; + this.accountList = new HashMap(); + this.transactionHistory = new ArrayList(); + + } +} diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java new file mode 100644 index 0000000..9082050 --- /dev/null +++ b/src/main/java/atmproject/accounts/Account.java @@ -0,0 +1,35 @@ +package atmproject.accounts; + +import atmproject.User; + +public class Account { + + private User currentUser; + private Double balance; + + public User getCurrentUser() { + return currentUser; + } + + public void setCurrentUser(User currentUser) { + this.currentUser = currentUser; + } + + public Double getBalance() { + return balance; + } + + public void setBalance(Double balance) { + this.balance = balance; + } + + public Double addToBalance(Double balance, Double input){ + this.balance = balance + input; + return balance; + } + + public Double subtractFromBalance(Double balance, Double input){ + this.balance = balance - input; + return balance; + } +} diff --git a/src/main/java/atmproject/accounts/AccountTest.java b/src/main/java/atmproject/accounts/AccountTest.java new file mode 100644 index 0000000..24da480 --- /dev/null +++ b/src/main/java/atmproject/accounts/AccountTest.java @@ -0,0 +1,35 @@ +package atmproject.accounts; + + +import org.junit.Test; + +public class AccountTest { + + @Test + public void getCurrentUser() { + } + + @Test + public void testGetCurrentUser() { + } + + @Test + public void setCurrentUser() { + } + + @Test + public void getBalance() { + } + + @Test + public void setBalance() { + } + + @Test + public void addToBalance() { + } + + @Test + public void subtractFromBalance() { + } +} \ No newline at end of file From a791c8ececc24fe30955530bcfcf4e12a7cc62d3 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 9 Nov 2019 11:11:10 -0500 Subject: [PATCH 03/69] Stub transaction --- src/main/java/TransactionHandler.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/TransactionHandler.java diff --git a/src/main/java/TransactionHandler.java b/src/main/java/TransactionHandler.java new file mode 100644 index 0000000..75ed458 --- /dev/null +++ b/src/main/java/TransactionHandler.java @@ -0,0 +1,25 @@ +import java.security.InvalidParameterException; + +public class TransactionHandler { + + public void withdraw(Double amount) { + if (amount < 0) { + throw new InvalidParameterException(); + } + + } + + public void deposit(Double amount) { + if (amount < 0) { + throw new InvalidParameterException(); + } + + } + + public void transfer(Double amount) { + if (amount < 0) { + throw new InvalidParameterException(); + } + } + +} From 7a3b0ef3c046e1212b4e7264df012df6725b6090 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 11:20:01 -0500 Subject: [PATCH 04/69] accounts and tests --- src/main/java/atmproject/User.java | 8 ++++ .../java/atmproject/accounts/Account.java | 9 +++- .../java/atmproject/accounts/AccountTest.java | 48 +++++++++++++++++-- 3 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 752f58d..4adc6f2 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -23,4 +23,12 @@ public User(String firstName, String lastName, Integer accountNumber){ this.transactionHistory = new ArrayList(); } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } } diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index 9082050..04e727c 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -7,6 +7,11 @@ public class Account { private User currentUser; private Double balance; + public Account(User currentUser){ + this.currentUser = currentUser; + this.balance = 0.0; + } + public User getCurrentUser() { return currentUser; } @@ -23,12 +28,12 @@ public void setBalance(Double balance) { this.balance = balance; } - public Double addToBalance(Double balance, Double input){ + public Double addToBalance(Double input){ this.balance = balance + input; return balance; } - public Double subtractFromBalance(Double balance, Double input){ + public Double subtractFromBalance(Double input){ this.balance = balance - input; return balance; } diff --git a/src/main/java/atmproject/accounts/AccountTest.java b/src/main/java/atmproject/accounts/AccountTest.java index 24da480..89c3e69 100644 --- a/src/main/java/atmproject/accounts/AccountTest.java +++ b/src/main/java/atmproject/accounts/AccountTest.java @@ -1,35 +1,73 @@ package atmproject.accounts; +import atmproject.User; +import org.junit.Assert; import org.junit.Test; public class AccountTest { @Test - public void getCurrentUser() { - } + public void getCurrentUserTest() { + User currentUser = new User("Sabin", "Figaro", 456456); + Account account = new Account(currentUser); + User expected = new User("Sabin", "Figaro", 456456); + User actual = account.getCurrentUser(); - @Test - public void testGetCurrentUser() { - } + Assert.assertEquals(actual.getFirstName(),expected.getFirstName()); + } @Test public void setCurrentUser() { + User currentUser = new User("Sabin", "Figaro", 456456); + Account account = new Account(null); + account.setCurrentUser(currentUser); + + Assert.assertEquals(account.getCurrentUser(), currentUser); } @Test public void getBalance() { + Account account = new Account(null); + Double expected = 0.0; + Double actual = account.getBalance(); + Assert.assertEquals(expected,actual); } @Test public void setBalance() { + Account account = new Account(null); + Double expected = 100.0; + account.setBalance(expected); + + Assert.assertEquals(expected,account.getBalance()); } @Test public void addToBalance() { + Account account = new Account(null); + account.setBalance(100.0); + Double input = 80.0; + account.addToBalance(input); + + + Double expected = 180.0; + + Assert.assertEquals(expected,account.getBalance()); + + } @Test public void subtractFromBalance() { + Account account = new Account(null); + account.setBalance(100.0); + Double input = 80.0; + account.subtractFromBalance(input); + + + Double expected = 20.0; + + Assert.assertEquals(expected,account.getBalance()); } } \ No newline at end of file From 97d8ac5f2cdfee7d69983ddc17f446659b84982e Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 11:28:57 -0500 Subject: [PATCH 05/69] savings account --- .../java/atmproject/accounts/SavingsAccount.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/atmproject/accounts/SavingsAccount.java diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java new file mode 100644 index 0000000..6d2a1cc --- /dev/null +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -0,0 +1,13 @@ +package atmproject.accounts; + +import atmproject.User; + +public class SavingsAccount extends Account { + + public SavingsAccount(User currentUser) { + super(currentUser); + Double interestRate = 0.05; + } + + +} From 592a1acc60da66e3d772268e48a8ee8565a25b92 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 12:27:18 -0500 Subject: [PATCH 06/69] accounts finished --- README.md | 8 ++-- src/main/java/{ => atmproject}/Language.java | 2 + .../{ => atmproject}/TransactionHandler.java | 2 + .../java/atmproject/accounts/Account.java | 2 +- .../accounts/InvestmentsAccount.java | 30 +++++++++++++ .../accounts/InvestmentsAccountTest.java | 44 +++++++++++++++++++ .../atmproject/accounts/SavingsAccount.java | 16 ++++++- .../accounts/SavingsAccountTest.java | 44 +++++++++++++++++++ 8 files changed, 142 insertions(+), 6 deletions(-) rename src/main/java/{ => atmproject}/Language.java (95%) rename src/main/java/{ => atmproject}/TransactionHandler.java (95%) create mode 100644 src/main/java/atmproject/accounts/InvestmentsAccount.java create mode 100644 src/main/java/atmproject/accounts/InvestmentsAccountTest.java create mode 100644 src/main/java/atmproject/accounts/SavingsAccountTest.java diff --git a/README.md b/README.md index 92d73b7..d99ef06 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Week 2 project: ATM Simulator Every feature must have corresponding unit tests Tests should demonstrate proper behavior, and proper handling of misuse (eg. attempts to deposit/transfer/withdraw negative amounts -- User interface: CLI (Command line interface) Only +- atmproject.User interface: CLI (Command line interface) Only - Direct Input - Numbered options (instead of on-screen buttons) - ASCII art welcome but not required @@ -17,19 +17,19 @@ Tests should demonstrate proper behavior, and proper handling of misuse (eg. att - Account Actions - Withdraw from acct - Deposit to acct - - Transfer across accounts (self) + - Transfer across atmproject.accounts (self) - Open new account - Close account (must be empty) - Print transaction history - Check balance - **Challenge:** Transfer to another user's account (but not from) - Support multiple users - - Users have associated accounts + - Users have associated atmproject.accounts - Can create new user - Users are authenticated with a password (generated or provided on user creation) - Can exit a user and enter another user - **BONUS** Persistence - - Users and accounts remain persistent + - Users and atmproject.accounts remain persistent - Opportunity for research diff --git a/src/main/java/Language.java b/src/main/java/atmproject/Language.java similarity index 95% rename from src/main/java/Language.java rename to src/main/java/atmproject/Language.java index 9ffea9b..50e3051 100644 --- a/src/main/java/Language.java +++ b/src/main/java/atmproject/Language.java @@ -1,3 +1,5 @@ +package atmproject; + import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/TransactionHandler.java b/src/main/java/atmproject/TransactionHandler.java similarity index 95% rename from src/main/java/TransactionHandler.java rename to src/main/java/atmproject/TransactionHandler.java index 75ed458..8a7719f 100644 --- a/src/main/java/TransactionHandler.java +++ b/src/main/java/atmproject/TransactionHandler.java @@ -1,3 +1,5 @@ +package atmproject; + import java.security.InvalidParameterException; public class TransactionHandler { diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index 04e727c..db0ed2c 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -5,7 +5,7 @@ public class Account { private User currentUser; - private Double balance; + protected Double balance; public Account(User currentUser){ this.currentUser = currentUser; diff --git a/src/main/java/atmproject/accounts/InvestmentsAccount.java b/src/main/java/atmproject/accounts/InvestmentsAccount.java new file mode 100644 index 0000000..b5343f9 --- /dev/null +++ b/src/main/java/atmproject/accounts/InvestmentsAccount.java @@ -0,0 +1,30 @@ +package atmproject.accounts; + +import atmproject.User; + +public class InvestmentsAccount extends SavingsAccount { + + private Double minimumDeposit; + + public InvestmentsAccount(User currentUser) { + super(currentUser); + super.setBalance(0.0); + super.setInterestRate(0.001); + this.minimumDeposit = 15000.0; + } + + public Double getMinimumDeposit() { + return minimumDeposit; + } + + public void setMinimumDeposit(Double minimumDeposit) { + this.minimumDeposit = minimumDeposit; + } + + public String enoughForInitialBalance(Double input){ + if(input < this.minimumDeposit){ + return String.format("We apologize. Your starting balance must be at least $%f0", minimumDeposit); + } + return "Thank you for creating this new account."; + } +} diff --git a/src/main/java/atmproject/accounts/InvestmentsAccountTest.java b/src/main/java/atmproject/accounts/InvestmentsAccountTest.java new file mode 100644 index 0000000..ff4c012 --- /dev/null +++ b/src/main/java/atmproject/accounts/InvestmentsAccountTest.java @@ -0,0 +1,44 @@ +package atmproject.accounts; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class InvestmentsAccountTest { + + @Test + public void getMinimumDepositTest() { + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + Double expected = 15000.0; + Double actual = investmentsAccount.getMinimumDeposit(); + Assert.assertEquals(expected,actual); + } + + @Test + public void setMinimumDepositTest() { + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + Double expected = 35000.0; + investmentsAccount.setMinimumDeposit(expected); + Assert.assertEquals(expected,investmentsAccount.getMinimumDeposit()); + } + + @Test + public void enoughForInitialBalanceFalseTest() { + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + Double input = 13000.0; + String expected = String.format("We apologize. Your starting balance must be at least $%f0", investmentsAccount.getMinimumDeposit()); + String actual = investmentsAccount.enoughForInitialBalance(input); + Assert.assertEquals(expected,actual); + } + + @Test + public void enoughForInitialBalanceTrueTest() { + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + Double input = 17000.0; + String expected = "Thank you for creating this new account."; + String actual = investmentsAccount.enoughForInitialBalance(input); + Assert.assertEquals(expected,actual); + } + +} \ No newline at end of file diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java index 6d2a1cc..b90c33f 100644 --- a/src/main/java/atmproject/accounts/SavingsAccount.java +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -4,10 +4,24 @@ public class SavingsAccount extends Account { + protected Double interestRate; + public SavingsAccount(User currentUser) { super(currentUser); - Double interestRate = 0.05; + super.setBalance(0.0); + this.interestRate = 0.0005; } + public Double addInterest(){ + balance += (balance * interestRate); + return balance; + } + public Double getInterestRate() { + return interestRate; + } + + public void setInterestRate(Double interestRate) { + this.interestRate = interestRate; + } } diff --git a/src/main/java/atmproject/accounts/SavingsAccountTest.java b/src/main/java/atmproject/accounts/SavingsAccountTest.java new file mode 100644 index 0000000..e89ee95 --- /dev/null +++ b/src/main/java/atmproject/accounts/SavingsAccountTest.java @@ -0,0 +1,44 @@ +package atmproject.accounts; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class SavingsAccountTest { + + @Test + public void addInterestTest() { + SavingsAccount savingsAccount = new SavingsAccount(null); + savingsAccount.setBalance(500.0); + Double expected = savingsAccount.getBalance() + (savingsAccount.getBalance() * (savingsAccount).getInterestRate()); + Double actual = savingsAccount.addInterest(); + Assert.assertEquals(expected,actual); + } + + @Test + public void addInterestTest2() { + SavingsAccount savingsAccount = new SavingsAccount(null); + savingsAccount.setBalance(10.0); + Double expected = savingsAccount.getBalance() + (savingsAccount.getBalance() * (savingsAccount).getInterestRate()); + Double actual = savingsAccount.addInterest(); + Assert.assertEquals(expected,actual); + } + + @Test + public void getInterestRate() { + SavingsAccount savingsAccount = new SavingsAccount(null); + Double expected = 0.0005; + Double actual = savingsAccount.getInterestRate(); + Assert.assertEquals(expected,actual); + } + + @Test + public void setInterestRate() { + SavingsAccount savingsAccount = new SavingsAccount(null); + Double expected = 0.0007; + savingsAccount.setInterestRate(0.0007); + + assertEquals(expected,savingsAccount.getInterestRate()); + } +} \ No newline at end of file From d0a7ff41474b17368f2fbcaa4c6c46d1bc38e901 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 13:29:05 -0500 Subject: [PATCH 07/69] refactored --- .../java/atmproject/TransactionHandler.java | 18 ---------------- .../java/atmproject/accounts/Account.java | 21 +++++++++++++++++++ .../accounts/InvestmentsAccount.java | 1 + .../atmproject/accounts/SavingsAccount.java | 1 + src/{main/test => test/java}/AccountTest.java | 1 + .../java/atmproject/accounts/AccountTest.java | 0 .../accounts/InvestmentsAccountTest.java | 2 +- .../accounts/SavingsAccountTest.java | 0 8 files changed, 25 insertions(+), 19 deletions(-) rename src/{main/test => test/java}/AccountTest.java (98%) rename src/{main => test}/java/atmproject/accounts/AccountTest.java (100%) rename src/{main => test}/java/atmproject/accounts/InvestmentsAccountTest.java (94%) rename src/{main => test}/java/atmproject/accounts/SavingsAccountTest.java (100%) diff --git a/src/main/java/atmproject/TransactionHandler.java b/src/main/java/atmproject/TransactionHandler.java index 8a7719f..5a4beb3 100644 --- a/src/main/java/atmproject/TransactionHandler.java +++ b/src/main/java/atmproject/TransactionHandler.java @@ -4,24 +4,6 @@ public class TransactionHandler { - public void withdraw(Double amount) { - if (amount < 0) { - throw new InvalidParameterException(); - } - } - - public void deposit(Double amount) { - if (amount < 0) { - throw new InvalidParameterException(); - } - - } - - public void transfer(Double amount) { - if (amount < 0) { - throw new InvalidParameterException(); - } - } } diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index db0ed2c..aec13d1 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -2,6 +2,8 @@ import atmproject.User; +import java.security.InvalidParameterException; + public class Account { private User currentUser; @@ -37,4 +39,23 @@ public Double subtractFromBalance(Double input){ this.balance = balance - input; return balance; } + public void withdraw(Double amount) { + if (amount < 0) { + throw new InvalidParameterException(); + } + + } + + public void deposit(Double amount) { + if (amount < 0) { + throw new InvalidParameterException(); + } + + } + + public void transfer(Double amount) { + if (amount < 0) { + throw new InvalidParameterException(); + } + } } diff --git a/src/main/java/atmproject/accounts/InvestmentsAccount.java b/src/main/java/atmproject/accounts/InvestmentsAccount.java index b5343f9..cdd3ab9 100644 --- a/src/main/java/atmproject/accounts/InvestmentsAccount.java +++ b/src/main/java/atmproject/accounts/InvestmentsAccount.java @@ -1,6 +1,7 @@ package atmproject.accounts; import atmproject.User; +import atmproject.accounts.SavingsAccount; public class InvestmentsAccount extends SavingsAccount { diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java index b90c33f..199d839 100644 --- a/src/main/java/atmproject/accounts/SavingsAccount.java +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -1,6 +1,7 @@ package atmproject.accounts; import atmproject.User; +import atmproject.accounts.Account; public class SavingsAccount extends Account { diff --git a/src/main/test/AccountTest.java b/src/test/java/AccountTest.java similarity index 98% rename from src/main/test/AccountTest.java rename to src/test/java/AccountTest.java index cbea4ad..77b819d 100644 --- a/src/main/test/AccountTest.java +++ b/src/test/java/AccountTest.java @@ -1,4 +1,5 @@ +import atmproject.accounts.Account; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; diff --git a/src/main/java/atmproject/accounts/AccountTest.java b/src/test/java/atmproject/accounts/AccountTest.java similarity index 100% rename from src/main/java/atmproject/accounts/AccountTest.java rename to src/test/java/atmproject/accounts/AccountTest.java diff --git a/src/main/java/atmproject/accounts/InvestmentsAccountTest.java b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java similarity index 94% rename from src/main/java/atmproject/accounts/InvestmentsAccountTest.java rename to src/test/java/atmproject/accounts/InvestmentsAccountTest.java index ff4c012..110b80e 100644 --- a/src/main/java/atmproject/accounts/InvestmentsAccountTest.java +++ b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java @@ -20,7 +20,7 @@ public void setMinimumDepositTest() { InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); Double expected = 35000.0; investmentsAccount.setMinimumDeposit(expected); - Assert.assertEquals(expected,investmentsAccount.getMinimumDeposit()); + assertEquals(expected,investmentsAccount.getMinimumDeposit()); } @Test diff --git a/src/main/java/atmproject/accounts/SavingsAccountTest.java b/src/test/java/atmproject/accounts/SavingsAccountTest.java similarity index 100% rename from src/main/java/atmproject/accounts/SavingsAccountTest.java rename to src/test/java/atmproject/accounts/SavingsAccountTest.java From b38ae93cbeb5e2f59f9cfb4e4f316c819bddbd08 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 9 Nov 2019 13:49:20 -0500 Subject: [PATCH 08/69] junit --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index ddb247d..943b707 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,12 @@ 4.12 compile + + junit + junit + 4.12 + test + From f738c449c2177488ef5c370358bd0a8cabeee897 Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sat, 9 Nov 2019 14:26:46 -0500 Subject: [PATCH 09/69] pulling for michking --- src/main/java/atmproject/MainMenu.java | 71 +++++++++++++++++++ .../java/atmproject/TransactionHandler.java | 1 + 2 files changed, 72 insertions(+) create mode 100644 src/main/java/atmproject/MainMenu.java diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java new file mode 100644 index 0000000..6b9c304 --- /dev/null +++ b/src/main/java/atmproject/MainMenu.java @@ -0,0 +1,71 @@ +package atmproject; + +import java.io.Console; + +public class MainMenu { + private Console console = new Console(System.in, System.out); + private User currentUser; + private boolean running = true; + + + +public void runMainMenu(User currentUser){ + this.currentUser = currentUser; + while (running) { + console.clearScreen(); + + + + + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + + + + diff --git a/src/main/java/atmproject/TransactionHandler.java b/src/main/java/atmproject/TransactionHandler.java index 5a4beb3..510f4f8 100644 --- a/src/main/java/atmproject/TransactionHandler.java +++ b/src/main/java/atmproject/TransactionHandler.java @@ -2,6 +2,7 @@ import java.security.InvalidParameterException; + public class TransactionHandler { From 0e8d74cd85d3ca9b223855d7079ed43fe73aa530 Mon Sep 17 00:00:00 2001 From: Mike King Date: Sat, 9 Nov 2019 14:27:55 -0500 Subject: [PATCH 10/69] AccountMenu added --- src/main/java/atmproject/AccountMenu.java | 31 +++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/atmproject/AccountMenu.java diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java new file mode 100644 index 0000000..4cbc51e --- /dev/null +++ b/src/main/java/atmproject/AccountMenu.java @@ -0,0 +1,31 @@ +package atmproject; + +import atmproject.accounts.Account; +import atmproject.accounts.InvestmentsAccount; +import atmproject.accounts.SavingsAccount; + +public class AccountMenu { + SavingsAccount savingsAccount; + Account checkingAccount; + InvestmentsAccount investmentsAccount; + + public Account selectAccount(Integer input) { + Account returnedAccount = null; + + switch (input) { + case 1: + returnedAccount = checkingAccount; + break; + case 2: + returnedAccount = savingsAccount; + break; + case 3: + returnedAccount = investmentsAccount; + break; + case 4: + returnedAccount = null; + } + + return returnedAccount; + } +} From 906d124e98dbda59c37cbe8ed087e62f958c713e Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 16:01:26 -0500 Subject: [PATCH 11/69] account number --- src/main/java/atmproject/User.java | 5 +++ .../java/atmproject/accounts/Account.java | 41 ++++++++++++------- .../atmproject/accounts/SavingsAccount.java | 3 +- src/test/java/AccountTest.java | 16 ++++---- .../java/atmproject/accounts/AccountTest.java | 16 ++++---- 5 files changed, 48 insertions(+), 33 deletions(-) diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 4adc6f2..32fca86 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -31,4 +31,9 @@ public String getFirstName() { public void setFirstName(String firstName) { this.firstName = firstName; } + + public Account removeAccount(Account account){ + return accountList.remove(account); + + } } diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index aec13d1..7a0dc6a 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -8,10 +8,16 @@ public class Account { private User currentUser; protected Double balance; + private Integer accountNumber; - public Account(User currentUser){ + public Account(User currentUser, Double balance, Integer accountNumber){ this.currentUser = currentUser; - this.balance = 0.0; + this.balance = balance; + this.accountNumber = accountNumber; + } + + public Account(Double balance){ + this.balance = balance; } public User getCurrentUser() { @@ -30,32 +36,37 @@ public void setBalance(Double balance) { this.balance = balance; } - public Double addToBalance(Double input){ - this.balance = balance + input; + public Double withdraw(Double amount) { + if (amount < 0) { + throw new InvalidParameterException(); + } + this.balance = balance - amount; return balance; } - public Double subtractFromBalance(Double input){ - this.balance = balance - input; - return balance; - } - public void withdraw(Double amount) { + public Double deposit(Double amount) { if (amount < 0) { throw new InvalidParameterException(); } - + if(this.balance > amount) { + this.balance = balance + amount; + return balance; + } + return balance; } - public void deposit(Double amount) { + public void transfer(Account destinationAccount, Double amount) { if (amount < 0) { throw new InvalidParameterException(); } - + destinationAccount.deposit(amount); + this.withdraw(amount); } - public void transfer(Double amount) { - if (amount < 0) { - throw new InvalidParameterException(); + public boolean closeAccount(){ + if (balance > 0.0){ + return false; } + return currentUser.removeAccount(this) == null; } } diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java index 199d839..7efeca2 100644 --- a/src/main/java/atmproject/accounts/SavingsAccount.java +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -8,8 +8,7 @@ public class SavingsAccount extends Account { protected Double interestRate; public SavingsAccount(User currentUser) { - super(currentUser); - super.setBalance(0.0); + super(currentUser, 0.0); this.interestRate = 0.0005; } diff --git a/src/test/java/AccountTest.java b/src/test/java/AccountTest.java index 77b819d..03d47c3 100644 --- a/src/test/java/AccountTest.java +++ b/src/test/java/AccountTest.java @@ -13,13 +13,13 @@ public class AccountTest { @Test public void testA0() { Account a = new Account(0.0); - assertEquals(0.0, a.balance(), 0.0001); + assertEquals(0.0, a.getBalance(), 0.0001); } @Test public void testA00() { Account a = new Account(10.0); - assertEquals(10.0, a.balance(), 0.0001); + assertEquals(10.0, a.getBalance(), 0.0001); } @Test @@ -38,14 +38,14 @@ public void testA02() { public void testA1() { Account a = new Account(0.0); a.deposit(100.0); - assertEquals(100.0, a.balance(), 0.0001); + assertEquals(100.0, a.getBalance(), 0.0001); } @Test public void testA2() { Account a = new Account(10.0); a.deposit(100.0); - assertEquals(110.0, a.balance(), 0.0001); + assertEquals(110.0, a.getBalance(), 0.0001); } @Test @@ -67,8 +67,8 @@ public void testA5() { Account a = new Account(10.0); Account b = new Account(0.0); a.transfer(b, 10.0); - assertEquals(0.0, a.balance(), 0.0001); - assertEquals(10.0, b.balance(), 0.0001); + assertEquals(0.0, a.getBalance(), 0.0001); + assertEquals(10.0, b.getBalance(), 0.0001); } @Test @@ -76,8 +76,8 @@ public void testA6() { Account a = new Account(10.0); Account b = new Account(0.0); a.transfer(b, 100.0); // nothing should happen - assertEquals(10.0, a.balance(), 0.0001); - assertEquals(0.0, b.balance(), 0.0001); + assertEquals(10.0, a.getBalance(), 0.0001); + assertEquals(0.0, b.getBalance(), 0.0001); } diff --git a/src/test/java/atmproject/accounts/AccountTest.java b/src/test/java/atmproject/accounts/AccountTest.java index 89c3e69..29c7ce1 100644 --- a/src/test/java/atmproject/accounts/AccountTest.java +++ b/src/test/java/atmproject/accounts/AccountTest.java @@ -10,7 +10,7 @@ public class AccountTest { @Test public void getCurrentUserTest() { User currentUser = new User("Sabin", "Figaro", 456456); - Account account = new Account(currentUser); + Account account = new Account(currentUser, 0.0); User expected = new User("Sabin", "Figaro", 456456); User actual = account.getCurrentUser(); @@ -20,7 +20,7 @@ public void getCurrentUserTest() { @Test public void setCurrentUser() { User currentUser = new User("Sabin", "Figaro", 456456); - Account account = new Account(null); + Account account = new Account(0.0); account.setCurrentUser(currentUser); Assert.assertEquals(account.getCurrentUser(), currentUser); @@ -28,7 +28,7 @@ public void setCurrentUser() { @Test public void getBalance() { - Account account = new Account(null); + Account account = new Account(0.0); Double expected = 0.0; Double actual = account.getBalance(); Assert.assertEquals(expected,actual); @@ -36,7 +36,7 @@ public void getBalance() { @Test public void setBalance() { - Account account = new Account(null); + Account account = new Account(0.0); Double expected = 100.0; account.setBalance(expected); @@ -45,10 +45,10 @@ public void setBalance() { @Test public void addToBalance() { - Account account = new Account(null); + Account account = new Account(0.0); account.setBalance(100.0); Double input = 80.0; - account.addToBalance(input); + account.deposit(input); Double expected = 180.0; @@ -60,10 +60,10 @@ public void addToBalance() { @Test public void subtractFromBalance() { - Account account = new Account(null); + Account account = new Account(0.0); account.setBalance(100.0); Double input = 80.0; - account.subtractFromBalance(input); + account.withdraw(input); Double expected = 20.0; From 3ee6a79603ff8c6727a68f7322d1bd69aee71dc4 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 9 Nov 2019 16:12:48 -0500 Subject: [PATCH 12/69] console --- src/main/java/atmproject/Console.java | 62 +++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/main/java/atmproject/Console.java diff --git a/src/main/java/atmproject/Console.java b/src/main/java/atmproject/Console.java new file mode 100644 index 0000000..997735e --- /dev/null +++ b/src/main/java/atmproject/Console.java @@ -0,0 +1,62 @@ +package atmproject; + +import java.io.InputStream; +import java.io.PrintStream; +import java.util.Scanner; + +public class Console { + + private final Scanner input; + private final PrintStream output; + + public Console(InputStream in, PrintStream out) { + this.input = new Scanner(in); + this.output = out; + } + + public void print(String val, Object... args) { + output.format(val, args); + } + + public void newln() { + print("\n"); + } + + public void println(String val, Object... vals) { + print(val + "\n", vals); + } + + public String getStringInput(String prompt, Object... args) { + print(prompt, args); + return input.nextLine(); + } + + public Double getDoubleInput(String prompt, Object... args) { + String stringInput = getStringInput(prompt, args); + try { + Double doubleInput = Double.parseDouble(stringInput); + return doubleInput; + } catch (NumberFormatException nfe) { // TODO - Eliminate recursive nature + println("[ %s ] is an invalid user input!", stringInput); + println("Try inputting a numeric value!"); + return getDoubleInput(prompt, args); + } + } + + public Long getLongInput(String prompt, Object... args) { + String stringInput = getStringInput(prompt, args); + try { + Long longInput = Long.parseLong(stringInput); + return longInput; + } catch (NumberFormatException nfe) { // TODO - Eliminate recursive nature + println("[ %s ] is an invalid user input!", stringInput); + println("Try inputting an integer value!"); + return getLongInput(prompt, args); + } + } + + public Integer getIntegerInput(String prompt, Object... args) { + return getLongInput(prompt, args).intValue(); + } + +} From 6c29e85061e5ae69b6808d11cc26450754b12a14 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 16:15:58 -0500 Subject: [PATCH 13/69] more additions --- src/main/java/atmproject/User.java | 40 +++++++++++++++++++ .../java/atmproject/accounts/Account.java | 17 ++++---- .../accounts/InvestmentsAccount.java | 5 +-- .../atmproject/accounts/SavingsAccount.java | 4 +- .../java/atmproject/accounts/AccountTest.java | 2 +- 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 32fca86..c7f1562 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -32,6 +32,46 @@ public void setFirstName(String firstName) { this.firstName = firstName; } + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getPinNumber() { + return pinNumber; + } + + public void setPinNumber(Integer pinNumber) { + this.pinNumber = pinNumber; + } + + public Integer getAccountNumber() { + return accountNumber; + } + + public void setAccountNumber(Integer accountNumber) { + this.accountNumber = accountNumber; + } + + public HashMap getAccountList() { + return accountList; + } + + public void setAccountList(HashMap accountList) { + this.accountList = accountList; + } + + public ArrayList getTransactionHistory() { + return transactionHistory; + } + + public void setTransactionHistory(ArrayList transactionHistory) { + this.transactionHistory = transactionHistory; + } + public Account removeAccount(Account account){ return accountList.remove(account); diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index 7a0dc6a..5f8f5d2 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -40,7 +40,10 @@ public Double withdraw(Double amount) { if (amount < 0) { throw new InvalidParameterException(); } - this.balance = balance - amount; + if(this.balance >= amount) { + this.balance = balance - amount; + return balance; + } return balance; } @@ -48,25 +51,25 @@ public Double deposit(Double amount) { if (amount < 0) { throw new InvalidParameterException(); } - if(this.balance > amount) { this.balance = balance + amount; return balance; - } - return balance; } public void transfer(Account destinationAccount, Double amount) { if (amount < 0) { throw new InvalidParameterException(); } - destinationAccount.deposit(amount); - this.withdraw(amount); + if(this.balance >= amount) { + this.withdraw(amount); + destinationAccount.deposit(amount); + } } public boolean closeAccount(){ if (balance > 0.0){ return false; } - return currentUser.removeAccount(this) == null; + + return currentUser.getAccountList().containsValue(this); } } diff --git a/src/main/java/atmproject/accounts/InvestmentsAccount.java b/src/main/java/atmproject/accounts/InvestmentsAccount.java index cdd3ab9..ddc3524 100644 --- a/src/main/java/atmproject/accounts/InvestmentsAccount.java +++ b/src/main/java/atmproject/accounts/InvestmentsAccount.java @@ -7,9 +7,8 @@ public class InvestmentsAccount extends SavingsAccount { private Double minimumDeposit; - public InvestmentsAccount(User currentUser) { - super(currentUser); - super.setBalance(0.0); + public InvestmentsAccount(User currentUser, Double balance, Integer accountNumber) { + super(currentUser, 0.0, null); super.setInterestRate(0.001); this.minimumDeposit = 15000.0; } diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java index 7efeca2..e202abf 100644 --- a/src/main/java/atmproject/accounts/SavingsAccount.java +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -7,8 +7,8 @@ public class SavingsAccount extends Account { protected Double interestRate; - public SavingsAccount(User currentUser) { - super(currentUser, 0.0); + public SavingsAccount(User currentUser, Double balance, Integer accountNumber) { + super(currentUser, 0.0, null); this.interestRate = 0.0005; } diff --git a/src/test/java/atmproject/accounts/AccountTest.java b/src/test/java/atmproject/accounts/AccountTest.java index 29c7ce1..1268e72 100644 --- a/src/test/java/atmproject/accounts/AccountTest.java +++ b/src/test/java/atmproject/accounts/AccountTest.java @@ -10,7 +10,7 @@ public class AccountTest { @Test public void getCurrentUserTest() { User currentUser = new User("Sabin", "Figaro", 456456); - Account account = new Account(currentUser, 0.0); + Account account = new Account(currentUser, 0.0,null); User expected = new User("Sabin", "Figaro", 456456); User actual = account.getCurrentUser(); From a2a15323cd11f429b47a8c5eb94f6ec9559e07b8 Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sat, 9 Nov 2019 16:17:26 -0500 Subject: [PATCH 14/69] started main menu --- src/main/java/atmproject/MainMenu.java | 27 +++++++++++++++++--------- src/test/java/AccountTest.java | 22 ++++++++++----------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 6b9c304..88d1fd7 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -1,34 +1,44 @@ package atmproject; -import java.io.Console; public class MainMenu { - private Console console = new Console(System.in, System.out); + //private Console console = new Console(System.in, System.out); private User currentUser; private boolean running = true; +// +//public void runMainMenu(User currentUser){ +// this.currentUser = currentUser; +// while (running) { +// -public void runMainMenu(User currentUser){ - this.currentUser = currentUser; - while (running) { - console.clearScreen(); - + public void callDeposit() { + } +public void callWithdraw() { - } } +public void callTransfer() { +} +public void checkBalance() { +} +public void displayHistory() { +} +public void returnTOLoginMenu() { + } +} @@ -64,7 +74,6 @@ public void runMainMenu(User currentUser){ -} diff --git a/src/test/java/AccountTest.java b/src/test/java/AccountTest.java index 77b819d..0b9e424 100644 --- a/src/test/java/AccountTest.java +++ b/src/test/java/AccountTest.java @@ -22,17 +22,17 @@ public void testA00() { assertEquals(10.0, a.balance(), 0.0001); } - @Test - public void testA01() { - Account a = new Account(0.0); - assertEquals(true, a.closeAccount()); - } - - @Test - public void testA02() { - Account a = new Account(10.0); - assertEquals(false, a.closeAccount()); - } +// @Test +// public void testA01() { +// Account a = new Account(0.0); +// assertEquals(true, a.closeAccount()); +// } +// +// @Test +// public void testA02() { +// Account a = new Account(10.0); +// assertEquals(false, a.closeAccount()); +// } @Test public void testA1() { From e5f83d8cc38d017303c7e6473e2acc122d742dff Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sat, 9 Nov 2019 16:37:54 -0500 Subject: [PATCH 15/69] stuff --- src/main/java/atmproject/User.java | 13 +++++----- .../java/atmproject/accounts/Account.java | 24 ++++++++++++++----- .../accounts/InvestmentsAccountTest.java | 8 +++---- .../accounts/SavingsAccountTest.java | 8 +++---- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index c7f1562..3533b91 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.TreeMap; public class User { @@ -11,7 +12,7 @@ public class User { private String lastName; private Integer pinNumber; private Integer accountNumber; - HashMap accountList; + TreeMap accountList; ArrayList transactionHistory; public User(String firstName, String lastName, Integer accountNumber){ @@ -19,7 +20,7 @@ public User(String firstName, String lastName, Integer accountNumber){ this.lastName = lastName; this.pinNumber = accountNumber; this.pinNumber = 0; - this.accountList = new HashMap(); + this.accountList = new TreeMap(); this.transactionHistory = new ArrayList(); } @@ -56,11 +57,11 @@ public void setAccountNumber(Integer accountNumber) { this.accountNumber = accountNumber; } - public HashMap getAccountList() { + public TreeMap getAccountList() { return accountList; } - public void setAccountList(HashMap accountList) { + public void setAccountList(TreeMap accountList) { this.accountList = accountList; } @@ -72,8 +73,8 @@ public void setTransactionHistory(ArrayList transactionHistory) { this.transactionHistory = transactionHistory; } - public Account removeAccount(Account account){ - return accountList.remove(account); + public Account removeAccount(String accountName){ + return accountList.remove(accountName); } } diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index 5f8f5d2..13a014c 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -1,5 +1,6 @@ package atmproject.accounts; +import atmproject.Console; import atmproject.User; import java.security.InvalidParameterException; @@ -8,12 +9,13 @@ public class Account { private User currentUser; protected Double balance; - private Integer accountNumber; + private String accountName; + Console console = new Console(System.in,System.out); - public Account(User currentUser, Double balance, Integer accountNumber){ + public Account(User currentUser, Double balance, String accountName){ this.currentUser = currentUser; this.balance = balance; - this.accountNumber = accountNumber; + this.accountName = accountName; } public Account(Double balance){ @@ -36,6 +38,14 @@ public void setBalance(Double balance) { this.balance = balance; } + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + public Double withdraw(Double amount) { if (amount < 0) { throw new InvalidParameterException(); @@ -55,7 +65,7 @@ public Double deposit(Double amount) { return balance; } - public void transfer(Account destinationAccount, Double amount) { + public Double transfer(Account destinationAccount, Double amount) { if (amount < 0) { throw new InvalidParameterException(); } @@ -63,13 +73,15 @@ public void transfer(Account destinationAccount, Double amount) { this.withdraw(amount); destinationAccount.deposit(amount); } + return this.balance; } - public boolean closeAccount(){ + public Boolean closeAccount(){ if (balance > 0.0){ + console.println("Please empty your account before attempting to close."); return false; } - + currentUser.removeAccount(this.getAccountName()); return currentUser.getAccountList().containsValue(this); } } diff --git a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java index 110b80e..903a727 100644 --- a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java +++ b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java @@ -9,7 +9,7 @@ public class InvestmentsAccountTest { @Test public void getMinimumDepositTest() { - InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null,null,null); Double expected = 15000.0; Double actual = investmentsAccount.getMinimumDeposit(); Assert.assertEquals(expected,actual); @@ -17,7 +17,7 @@ public void getMinimumDepositTest() { @Test public void setMinimumDepositTest() { - InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null,null,null); Double expected = 35000.0; investmentsAccount.setMinimumDeposit(expected); assertEquals(expected,investmentsAccount.getMinimumDeposit()); @@ -25,7 +25,7 @@ public void setMinimumDepositTest() { @Test public void enoughForInitialBalanceFalseTest() { - InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null,null,null); Double input = 13000.0; String expected = String.format("We apologize. Your starting balance must be at least $%f0", investmentsAccount.getMinimumDeposit()); String actual = investmentsAccount.enoughForInitialBalance(input); @@ -34,7 +34,7 @@ public void enoughForInitialBalanceFalseTest() { @Test public void enoughForInitialBalanceTrueTest() { - InvestmentsAccount investmentsAccount = new InvestmentsAccount(null); + InvestmentsAccount investmentsAccount = new InvestmentsAccount(null,null,null); Double input = 17000.0; String expected = "Thank you for creating this new account."; String actual = investmentsAccount.enoughForInitialBalance(input); diff --git a/src/test/java/atmproject/accounts/SavingsAccountTest.java b/src/test/java/atmproject/accounts/SavingsAccountTest.java index e89ee95..74bdbd6 100644 --- a/src/test/java/atmproject/accounts/SavingsAccountTest.java +++ b/src/test/java/atmproject/accounts/SavingsAccountTest.java @@ -9,7 +9,7 @@ public class SavingsAccountTest { @Test public void addInterestTest() { - SavingsAccount savingsAccount = new SavingsAccount(null); + SavingsAccount savingsAccount = new SavingsAccount(null,null,null); savingsAccount.setBalance(500.0); Double expected = savingsAccount.getBalance() + (savingsAccount.getBalance() * (savingsAccount).getInterestRate()); Double actual = savingsAccount.addInterest(); @@ -18,7 +18,7 @@ public void addInterestTest() { @Test public void addInterestTest2() { - SavingsAccount savingsAccount = new SavingsAccount(null); + SavingsAccount savingsAccount = new SavingsAccount(null,null,null); savingsAccount.setBalance(10.0); Double expected = savingsAccount.getBalance() + (savingsAccount.getBalance() * (savingsAccount).getInterestRate()); Double actual = savingsAccount.addInterest(); @@ -27,7 +27,7 @@ public void addInterestTest2() { @Test public void getInterestRate() { - SavingsAccount savingsAccount = new SavingsAccount(null); + SavingsAccount savingsAccount = new SavingsAccount(null,null,null); Double expected = 0.0005; Double actual = savingsAccount.getInterestRate(); Assert.assertEquals(expected,actual); @@ -35,7 +35,7 @@ public void getInterestRate() { @Test public void setInterestRate() { - SavingsAccount savingsAccount = new SavingsAccount(null); + SavingsAccount savingsAccount = new SavingsAccount(null,null,null); Double expected = 0.0007; savingsAccount.setInterestRate(0.0007); From 93a2e7fbe5b44025c1923be4f3dfa240e2dcc08c Mon Sep 17 00:00:00 2001 From: Mike King Date: Sat, 9 Nov 2019 16:45:06 -0500 Subject: [PATCH 16/69] Almost finished account menu --- src/main/java/atmproject/AccountMenu.java | 33 +++++++++---------- src/test/java/atmproject/AccountMenuTest.java | 16 +++++++++ 2 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 src/test/java/atmproject/AccountMenuTest.java diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index 4cbc51e..9f07801 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -4,27 +4,26 @@ import atmproject.accounts.InvestmentsAccount; import atmproject.accounts.SavingsAccount; +import java.util.Map; + public class AccountMenu { - SavingsAccount savingsAccount; - Account checkingAccount; - InvestmentsAccount investmentsAccount; + Account account; + Console console = new Console(System.in, System.out); - public Account selectAccount(Integer input) { + public Account selectAccount(User user) { Account returnedAccount = null; - switch (input) { - case 1: - returnedAccount = checkingAccount; - break; - case 2: - returnedAccount = savingsAccount; - break; - case 3: - returnedAccount = investmentsAccount; - break; - case 4: - returnedAccount = null; - } + + for(String s : user.accountList.keySet()){ + console.println(s); + } + + String input = console.getStringInput("please select an Account:"); + + if (user.accountList.containsKey(input)){ + returnedAccount = user.accountList.get(input); + } + return returnedAccount; } diff --git a/src/test/java/atmproject/AccountMenuTest.java b/src/test/java/atmproject/AccountMenuTest.java new file mode 100644 index 0000000..6244cb6 --- /dev/null +++ b/src/test/java/atmproject/AccountMenuTest.java @@ -0,0 +1,16 @@ +package atmproject; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class AccountMenuTest { + + @Test + public void selectAccount() { + AccountMenu menu = new AccountMenu(); + User newUser = new User(" ", " ", 1); + + menu.selectAccount(newUser); + } +} \ No newline at end of file From 1220fb2bb693eb101d3188ae97aeb6c4c10dd8f1 Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sat, 9 Nov 2019 18:05:05 -0500 Subject: [PATCH 17/69] savinf progress on main menu --- src/main/java/atmproject/MainMenu.java | 107 +++++++++++++++++---- src/test/java/atmproject/MainMenuTest.java | 55 +++++++++++ 2 files changed, 144 insertions(+), 18 deletions(-) create mode 100644 src/test/java/atmproject/MainMenuTest.java diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 88d1fd7..3db78fc 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -1,48 +1,119 @@ package atmproject; -public class MainMenu { - //private Console console = new Console(System.in, System.out); +import atmproject.accounts.Account; + +public class MainMenu { + private Console console = new Console(System.in, System.out); private User currentUser; + + + private boolean running = true; + private AccountMenu accountMenu = new AccountMenu(); -// -//public void runMainMenu(User currentUser){ -// this.currentUser = currentUser; -// while (running) { -// + public void runMainMenu(User currentUser) { + setCurrentUser(currentUser); + while (running) { + console.println("please select your option"); + console.println("(1) - Deposit"); + console.println("(2) - Withdraw"); + console.println("(3) - Transfer"); + console.println("(4) - Balance"); + console.println("(5) - View History"); + console.println("(6) - Return To Login Menu"); + Integer userInput = getUserInput(); + mainMenuLogic(userInput); + } - public void callDeposit() { } + private Double getUserDoubleInput(){ + return console.getDoubleInput(":"); + } + private Integer getUserInput(){ + return console.getIntegerInput(":"); + } -public void callWithdraw() { + public void callDeposit() { + Account chosen; + Double userInput; + chosen = accountMenu.selectAccount(currentUser); -} -public void callTransfer() { + } -} + public void callWithdraw() { -public void checkBalance() { + } -} + public void callTransfer() { -public void displayHistory() { + } -} + public void checkBalance() { -public void returnTOLoginMenu() { + } + + public void displayHistory() { } + public void returnTOLoginMenu() { + running = false; -} + } + public void mainMenuLogic(Integer userInput){ + switch (userInput) { + case 1: + callDeposit(); + break; + case 2: + callWithdraw(); + break; + case 3: + callTransfer(); + break; + case 4: + checkBalance(); + break; + case 5: + displayHistory(); + break; + case 6: + returnTOLoginMenu(); + break; + } + + + + + + } + + public User getCurrentUser() { + return currentUser; + } + + public void setCurrentUser(User currentUser) { + this.currentUser = currentUser; + } + + public boolean isRunning() { + return running; + } + + public void setRunning(boolean running) { + this.running = running; + } + + +} diff --git a/src/test/java/atmproject/MainMenuTest.java b/src/test/java/atmproject/MainMenuTest.java new file mode 100644 index 0000000..d8e2c96 --- /dev/null +++ b/src/test/java/atmproject/MainMenuTest.java @@ -0,0 +1,55 @@ +package atmproject; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class MainMenuTest { + + @Test + public void runMainMenu() { + } + + @Test + public void callDeposit() { + } + + @Test + public void callWithdraw() { + } + + @Test + public void callTransfer() { + } + + @Test + public void checkBalance() { + } + + @Test + public void displayHistory() { + } + + @Test + public void returnTOLoginMenu() { + MainMenu mainMenu = new MainMenu(); + + mainMenu.returnTOLoginMenu(); + + assertFalse(mainMenu.isRunning()); + + + } + + @Test + public void mainMenuLogic() { + } + + @Test + public void getCurrentUser() { + } + + @Test + public void setCurrentUser() { + } +} \ No newline at end of file From be59cf30a935cbb4739e93b4195278bbf0214204 Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sun, 10 Nov 2019 10:11:30 -0500 Subject: [PATCH 18/69] almost done with main menu --- src/main/java/atmproject/MainMenu.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 3db78fc..fa1db4c 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -40,11 +40,19 @@ public void callDeposit() { Account chosen; Double userInput; chosen = accountMenu.selectAccount(currentUser); - + console.println("How much would you like to deposit?"); + userInput = getUserDoubleInput(); + chosen.deposit(userInput); } public void callWithdraw() { + Account chosen; + Double userInput; + chosen = accountMenu.selectAccount(currentUser); + console.println("How much would you like to withdraw?"); + userInput = getUserDoubleInput(); + chosen.withdraw(userInput); } From 6af13c3fa698cf7db11288533367923bc00fb287 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 10:37:04 -0500 Subject: [PATCH 19/69] pulling --- src/main/java/atmproject/AccountMenu.java | 4 +- .../java/atmproject/TransactionHandler.java | 9 -- .../java/atmproject/accounts/Account.java | 2 +- src/test/java/AccountTest.java | 84 --------------- src/test/java/atmproject/AccountMenuTest.java | 4 +- .../java/atmproject/accounts/AccountTest.java | 102 +++++++++++++++++- 6 files changed, 103 insertions(+), 102 deletions(-) delete mode 100644 src/main/java/atmproject/TransactionHandler.java delete mode 100644 src/test/java/AccountTest.java diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index 9f07801..e932939 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -12,13 +12,11 @@ public class AccountMenu { public Account selectAccount(User user) { Account returnedAccount = null; - - for(String s : user.accountList.keySet()){ console.println(s); } - String input = console.getStringInput("please select an Account:"); + String input = console.getStringInput("please select an Account:"); if (user.accountList.containsKey(input)){ returnedAccount = user.accountList.get(input); diff --git a/src/main/java/atmproject/TransactionHandler.java b/src/main/java/atmproject/TransactionHandler.java deleted file mode 100644 index 5a4beb3..0000000 --- a/src/main/java/atmproject/TransactionHandler.java +++ /dev/null @@ -1,9 +0,0 @@ -package atmproject; - -import java.security.InvalidParameterException; - -public class TransactionHandler { - - - -} diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index 13a014c..debba00 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -82,6 +82,6 @@ public Boolean closeAccount(){ return false; } currentUser.removeAccount(this.getAccountName()); - return currentUser.getAccountList().containsValue(this); + return !currentUser.getAccountList().containsValue(this.getAccountName()); } } diff --git a/src/test/java/AccountTest.java b/src/test/java/AccountTest.java deleted file mode 100644 index 03d47c3..0000000 --- a/src/test/java/AccountTest.java +++ /dev/null @@ -1,84 +0,0 @@ - -import atmproject.accounts.Account; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import static org.junit.Assert.assertEquals; - - -// Test the expected Account class from ATM. -public class AccountTest { - - @Test - public void testA0() { - Account a = new Account(0.0); - assertEquals(0.0, a.getBalance(), 0.0001); - } - - @Test - public void testA00() { - Account a = new Account(10.0); - assertEquals(10.0, a.getBalance(), 0.0001); - } - - @Test - public void testA01() { - Account a = new Account(0.0); - assertEquals(true, a.closeAccount()); - } - - @Test - public void testA02() { - Account a = new Account(10.0); - assertEquals(false, a.closeAccount()); - } - - @Test - public void testA1() { - Account a = new Account(0.0); - a.deposit(100.0); - assertEquals(100.0, a.getBalance(), 0.0001); - } - - @Test - public void testA2() { - Account a = new Account(10.0); - a.deposit(100.0); - assertEquals(110.0, a.getBalance(), 0.0001); - } - - @Test - public void testA3() { - Account a = new Account(200.0); - Double actual = a.withdraw(100.0); - assertEquals(100.0, actual, 0.0001); - } - - @Test - public void testA4() { - Account a = new Account(0.0); - Double actual = a.withdraw(1.0); - assertEquals(0.0, actual, 0.0001); - } - - @Test - public void testA5() { - Account a = new Account(10.0); - Account b = new Account(0.0); - a.transfer(b, 10.0); - assertEquals(0.0, a.getBalance(), 0.0001); - assertEquals(10.0, b.getBalance(), 0.0001); - } - - @Test - public void testA6() { - Account a = new Account(10.0); - Account b = new Account(0.0); - a.transfer(b, 100.0); // nothing should happen - assertEquals(10.0, a.getBalance(), 0.0001); - assertEquals(0.0, b.getBalance(), 0.0001); - } - - -} diff --git a/src/test/java/atmproject/AccountMenuTest.java b/src/test/java/atmproject/AccountMenuTest.java index 6244cb6..e5ce896 100644 --- a/src/test/java/atmproject/AccountMenuTest.java +++ b/src/test/java/atmproject/AccountMenuTest.java @@ -6,11 +6,11 @@ public class AccountMenuTest { - @Test + /*@Test public void selectAccount() { AccountMenu menu = new AccountMenu(); User newUser = new User(" ", " ", 1); menu.selectAccount(newUser); - } + }*/ } \ No newline at end of file diff --git a/src/test/java/atmproject/accounts/AccountTest.java b/src/test/java/atmproject/accounts/AccountTest.java index 1268e72..68c1922 100644 --- a/src/test/java/atmproject/accounts/AccountTest.java +++ b/src/test/java/atmproject/accounts/AccountTest.java @@ -1,12 +1,88 @@ package atmproject.accounts; - import atmproject.User; +import atmproject.accounts.Account; import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; + +import static org.junit.Assert.assertEquals; + +// Test the expected Account class from ATM. public class AccountTest { + @Test + public void testA0() { + Account a = new Account(0.0); + assertEquals(0.0, a.getBalance(), 0.0001); + } + + @Test + public void testA00() { + Account a = new Account(10.0); + assertEquals(10.0, a.getBalance(), 0.0001); + } + + @Test + public void testA01() { + Account a = new Account(0.0); + assertEquals(true, a.closeAccount()); + } + + @Test + public void testA02() { + Account a = new Account(10.0); + assertEquals(false, a.closeAccount()); + } + + @Test + public void testA1() { + Account a = new Account(0.0); + a.deposit(100.0); + assertEquals(100.0, a.getBalance(), 0.0001); + } + + @Test + public void testA2() { + Account a = new Account(10.0); + a.deposit(100.0); + assertEquals(110.0, a.getBalance(), 0.0001); + } + + @Test + public void testA3() { + Account a = new Account(200.0); + Double actual = a.withdraw(100.0); + assertEquals(100.0, actual, 0.0001); + } + + @Test + public void testA4() { + Account a = new Account(0.0); + Double actual = a.withdraw(1.0); + assertEquals(0.0, actual, 0.0001); + } + + @Test + public void testA5() { + Account a = new Account(10.0); + Account b = new Account(0.0); + a.transfer(b, 10.0); + assertEquals(0.0, a.getBalance(), 0.0001); + assertEquals(10.0, b.getBalance(), 0.0001); + } + + @Test + public void testA6() { + Account a = new Account(10.0); + Account b = new Account(0.0); + a.transfer(b, 100.0); // nothing should happen + assertEquals(10.0, a.getBalance(), 0.0001); + assertEquals(0.0, b.getBalance(), 0.0001); + } + @Test public void getCurrentUserTest() { User currentUser = new User("Sabin", "Figaro", 456456); @@ -15,7 +91,7 @@ public void getCurrentUserTest() { User actual = account.getCurrentUser(); Assert.assertEquals(actual.getFirstName(),expected.getFirstName()); - } + } @Test public void setCurrentUser() { @@ -70,4 +146,24 @@ public void subtractFromBalance() { Assert.assertEquals(expected,account.getBalance()); } -} \ No newline at end of file + + @Test + public void getAccountName() { + Account account = new Account(null,null,"testAccount"); + String expected = "testAccount"; + String actual = account.getAccountName(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void setAccountName() { + Account account = new Account(null,null,null); + String expected = "testAccount"; + account.setAccountName(expected); + + Assert.assertEquals(expected,account.getAccountName()); + } + + +} From 3d78a3c1e9670113f3da3d9328076b7e9193f3a0 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 10:50:13 -0500 Subject: [PATCH 20/69] atm updates --- src/main/java/atmproject/MainMenu.java | 17 +++++++++-------- src/main/java/atmproject/User.java | 6 ++++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index fa1db4c..9505099 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -37,22 +37,22 @@ private Integer getUserInput(){ } public void callDeposit() { - Account chosen; + Account chosenAccount; Double userInput; - chosen = accountMenu.selectAccount(currentUser); + chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to deposit?"); - userInput = getUserDoubleInput(); - chosen.deposit(userInput); + userInput = getUserDoubleInput(); + chosenAccount.deposit(userInput); } public void callWithdraw() { - Account chosen; + Account chosenAccount; Double userInput; - chosen = accountMenu.selectAccount(currentUser); + chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to withdraw?"); userInput = getUserDoubleInput(); - chosen.withdraw(userInput); + chosenAccount.withdraw(userInput); } @@ -61,10 +61,11 @@ public void callTransfer() { } public void checkBalance() { - + } public void displayHistory() { + console.println(currentUser.displayHistory()); } diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 3533b91..2310582 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -3,6 +3,7 @@ import atmproject.accounts.Account; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.TreeMap; @@ -77,4 +78,9 @@ public Account removeAccount(String accountName){ return accountList.remove(accountName); } + + public String displayHistory(){ + Object[] history = transactionHistory.toArray(); + return Arrays.toString(history); + } } From fd6a939fd7e918f1edccc06701f4366d2107f456 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 10:58:24 -0500 Subject: [PATCH 21/69] mainmenu update --- src/main/java/atmproject/Language.java | 4 ++- src/main/java/atmproject/MainMenu.java | 38 ++++++++------------------ 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/src/main/java/atmproject/Language.java b/src/main/java/atmproject/Language.java index 50e3051..c264ebe 100644 --- a/src/main/java/atmproject/Language.java +++ b/src/main/java/atmproject/Language.java @@ -6,13 +6,15 @@ public class Language { private Map langMap; - public enum LangKey { EXAMPLE1, EXAMPLE2 } + public enum LangKey { EXAMPLE1, EXAMPLE2,MAINMENU } public Language() { langMap = new HashMap(); langMap.put(LangKey.EXAMPLE1, "This is an example"); langMap.put(LangKey.EXAMPLE2, "This is another Example"); + langMap.put(LangKey.MAINMENU, "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Return To Login Menu\n"); } diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 9505099..956bab0 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -6,58 +6,42 @@ public class MainMenu { private Console console = new Console(System.in, System.out); private User currentUser; - - - private boolean running = true; private AccountMenu accountMenu = new AccountMenu(); + private Language language = new Language(); public void runMainMenu(User currentUser) { - setCurrentUser(currentUser); + setCurrentUser(currentUser); while (running) { - console.println("please select your option"); - console.println("(1) - Deposit"); - console.println("(2) - Withdraw"); - console.println("(3) - Transfer"); - console.println("(4) - Balance"); - console.println("(5) - View History"); - console.println("(6) - Return To Login Menu"); - Integer userInput = getUserInput(); + console.println(language.getLang(Language.LangKey.MAINMENU)); + Integer userInput = console.getIntegerInput(":"); mainMenuLogic(userInput); } - - - } - private Double getUserDoubleInput(){ - return console.getDoubleInput(":"); - } - private Integer getUserInput(){ - return console.getIntegerInput(":"); } public void callDeposit() { - Account chosenAccount; + Account chosenAccount = accountMenu.selectAccount(currentUser); Double userInput; - chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to deposit?"); - userInput = getUserDoubleInput(); + userInput = console.getDoubleInput(":"); chosenAccount.deposit(userInput); } public void callWithdraw() { - Account chosenAccount; + Account chosenAccount = accountMenu.selectAccount(currentUser); Double userInput; - chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to withdraw?"); - userInput = getUserDoubleInput(); + userInput = console.getDoubleInput(":"); chosenAccount.withdraw(userInput); } public void callTransfer() { - + Account chosenAccount; + chosenAccount = accountMenu.selectAccount(currentUser); + console.println("The balance in %s is $%f.0", chosenAccount.getAccountName(), chosenAccount.getBalance()); } public void checkBalance() { From 57910451f59f60296373269e2baadc32e7b78c4c Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 11:06:38 -0500 Subject: [PATCH 22/69] changes --- src/main/java/atmproject/MainMenu.java | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 956bab0..81361f7 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -22,34 +22,35 @@ public void runMainMenu(User currentUser) { public void callDeposit() { Account chosenAccount = accountMenu.selectAccount(currentUser); - Double userInput; console.println("How much would you like to deposit?"); - userInput = console.getDoubleInput(":"); + Double userInput = console.getDoubleInput(":"); chosenAccount.deposit(userInput); } public void callWithdraw() { Account chosenAccount = accountMenu.selectAccount(currentUser); - Double userInput; console.println("How much would you like to withdraw?"); - userInput = console.getDoubleInput(":"); + Double userInput = console.getDoubleInput(":"); chosenAccount.withdraw(userInput); } public void callTransfer() { - Account chosenAccount; - chosenAccount = accountMenu.selectAccount(currentUser); - console.println("The balance in %s is $%f.0", chosenAccount.getAccountName(), chosenAccount.getBalance()); + } - public void checkBalance() { + public String checkBalance() { + Account chosenAccount = accountMenu.selectAccount(currentUser); + return String.format("The balance in %s is $%f.0", chosenAccount.getAccountName(), chosenAccount.getBalance()); } - public void displayHistory() { - console.println(currentUser.displayHistory()); + public String displayHistory() { + if(currentUser.getTransactionHistory().isEmpty()){ + return "You currently have no history, please"; + } + return currentUser.displayHistory(); } @@ -73,10 +74,10 @@ public void mainMenuLogic(Integer userInput){ callTransfer(); break; case 4: - checkBalance(); + console.println(displayHistory()); break; case 5: - displayHistory(); + console.println(checkBalance()); break; case 6: returnTOLoginMenu(); From d21e63dfac1a4fca0dc01f07ddac3941e1a30b70 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 11:31:25 -0500 Subject: [PATCH 23/69] transfer complete --- src/main/java/atmproject/MainMenu.java | 16 +++++++++++++++- .../java/exceptions/SameAccountException.java | 4 ++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/main/java/exceptions/SameAccountException.java diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 81361f7..1074d52 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -2,8 +2,12 @@ import atmproject.accounts.Account; +import exceptions.SameAccountException; + +import java.util.logging.Logger; public class MainMenu { + private static final Logger LOGGER = Logger.getLogger(); private Console console = new Console(System.in, System.out); private User currentUser; private boolean running = true; @@ -36,7 +40,17 @@ public void callWithdraw() { } - public void callTransfer() { + public void callTransfer(){ + Account chosenAccount = accountMenu.selectAccount(currentUser); + Account destinationAccount = accountMenu.selectAccount(currentUser); + if(chosenAccount.equals(destinationAccount)){ + console.println("Please select to separate accounts."); + } else { + console.println("How much would you like to transfer?"); + Double userInput = console.getDoubleInput(":"); + chosenAccount.transfer(destinationAccount, userInput); + } + } diff --git a/src/main/java/exceptions/SameAccountException.java b/src/main/java/exceptions/SameAccountException.java new file mode 100644 index 0000000..f8c0bf8 --- /dev/null +++ b/src/main/java/exceptions/SameAccountException.java @@ -0,0 +1,4 @@ +package exceptions; + +public class SameAccountException extends Exception { +} From 987d29c2e318d87c12fa6894f43982051c737783 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 12:14:38 -0500 Subject: [PATCH 24/69] compilation error fix --- src/main/java/atmproject/MainMenu.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 1074d52..efa9840 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -7,7 +7,6 @@ import java.util.logging.Logger; public class MainMenu { - private static final Logger LOGGER = Logger.getLogger(); private Console console = new Console(System.in, System.out); private User currentUser; private boolean running = true; @@ -44,7 +43,7 @@ public void callTransfer(){ Account chosenAccount = accountMenu.selectAccount(currentUser); Account destinationAccount = accountMenu.selectAccount(currentUser); if(chosenAccount.equals(destinationAccount)){ - console.println("Please select to separate accounts."); + console.println("Please select two separate accounts."); } else { console.println("How much would you like to transfer?"); Double userInput = console.getDoubleInput(":"); From 39cbf76afc686756331c5019fe345befc31432ba Mon Sep 17 00:00:00 2001 From: Amendoza20 <20.angel.mendoza@gmail.com> Date: Sun, 10 Nov 2019 12:18:59 -0500 Subject: [PATCH 25/69] added user repo --- src/main/java/atmproject/User.java | 2 +- src/main/java/atmproject/UserLogin.java | 54 +++++++++++++++++++ src/main/java/atmproject/UserRepository.java | 40 ++++++++++++++ .../java/atmproject/UserRepositoryTest.java | 50 +++++++++++++++++ 4 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 src/main/java/atmproject/UserLogin.java create mode 100644 src/main/java/atmproject/UserRepository.java create mode 100644 src/test/java/atmproject/UserRepositoryTest.java diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 3533b91..02beb2d 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -18,7 +18,7 @@ public class User { public User(String firstName, String lastName, Integer accountNumber){ this.firstName = firstName; this.lastName = lastName; - this.pinNumber = accountNumber; + this.accountNumber = accountNumber; this.pinNumber = 0; this.accountList = new TreeMap(); this.transactionHistory = new ArrayList(); diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java new file mode 100644 index 0000000..4962173 --- /dev/null +++ b/src/main/java/atmproject/UserLogin.java @@ -0,0 +1,54 @@ +package atmproject; + +public class UserLogin { + private User currentUser; + private Console console = new Console(System.in, System.out); + private boolean running; + private UserRepository userRepository; + + public UserLogin(){ + userRepository = UserRepository.getUserRepository(); + } + + public void runLoginMenu(User currentUser) { + this.currentUser = currentUser; + while (running) { + console.println("Welcome to the ATM!\n Enter 1 for new account, 2 for login"); + Integer userInput = console.getIntegerInput(":"); +// userLoginLogic(userInput); + } + } + + + /*public void userLoginLogic(User currentUser) { + Switch(userInput){ + case 1: + // this will lead to the create userMethod + + case 2: + // this will lead to the login in method (which if passed will lead to account menu?) + } + }*/ + + /** + * Creating a user with a First name, Last name. Also an ID + */ + public User createUser (String firstName, String lastName){ + Integer accountNum = userRepository.getAccountNums(); + userRepository.saveUser(new User(firstName,lastName, accountNum), accountNum); + + return userRepository.getUser(accountNum); + } + + public void login(Integer accountNum,Integer pinNumber ){ + User user = userRepository.getUser(accountNum); + if(user != null && user.getPinNumber().equals(pinNumber)){ + currentUser = user; + } + + } + public void startMainMenu(){ + } + public void exit(){} + +} \ No newline at end of file diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java new file mode 100644 index 0000000..4c223f1 --- /dev/null +++ b/src/main/java/atmproject/UserRepository.java @@ -0,0 +1,40 @@ +package atmproject; + +import java.util.Map; +import java.util.TreeMap; + +public class UserRepository { + + // Singleton Eager Initialization + private static final UserRepository userRepository = new UserRepository(); + + private int accountNums; + private Map repo; + + private UserRepository(){ + accountNums = 1000; + repo = new TreeMap(); + } + public static UserRepository getUserRepository(){ + return userRepository; + } + + public Integer createNewAccountNum(){ + Integer accountNum = accountNums; + accountNums++; + return accountNum; + } + public void saveUser(User user, Integer accountNum){ + repo.put(String.format("%04d",accountNum),user); + } + public User getUser(String accountNum){ + return repo.get(accountNum); + } + + public User getUser(Integer accountNum){ + return repo.get(String.format("%4d",accountNum)); + } + public int getAccountNums() { + return accountNums; + } +} diff --git a/src/test/java/atmproject/UserRepositoryTest.java b/src/test/java/atmproject/UserRepositoryTest.java new file mode 100644 index 0000000..4ec252b --- /dev/null +++ b/src/test/java/atmproject/UserRepositoryTest.java @@ -0,0 +1,50 @@ +package atmproject; + +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import static org.junit.Assert.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class UserRepositoryTest { + + @Test + public void Test01CreateNewAccountNum() { + UserRepository userRepository = UserRepository.getUserRepository(); + + Integer expectedAccountNum = 1000; + Integer actualAccountNum = userRepository.createNewAccountNum(); + + Integer expectedIncrement = expectedAccountNum + 1; + Integer actualIncrement = userRepository.getAccountNums(); + + assertEquals(expectedAccountNum, actualAccountNum); + assertEquals(expectedIncrement, actualIncrement); + } + @Test + public void Test02CreateNewAccountNum(){ + UserRepository userRepository = UserRepository.getUserRepository(); + + Integer expectedAccountNum = 1001; + Integer actualAccountNum = userRepository.createNewAccountNum(); + + Integer expectedIncrement = expectedAccountNum + 1; + Integer actualIncrement = userRepository.getAccountNums(); + + assertEquals(expectedAccountNum, actualAccountNum); + assertEquals(expectedIncrement, actualIncrement); + } + @Test + public void Test03saveUser() { + UserRepository userRepository = UserRepository.getUserRepository(); + Integer accountNum = userRepository.createNewAccountNum(); + User expected = new User("Jaime","Diamond", accountNum); + + userRepository.saveUser(expected, accountNum); + User actual = userRepository.getUser(accountNum); + + assertEquals(expected, actual); + } + +} From 684d1621da8d8c56de2b5e32b14021ff99a896c2 Mon Sep 17 00:00:00 2001 From: Amendoza20 <20.angel.mendoza@gmail.com> Date: Sun, 10 Nov 2019 13:00:39 -0500 Subject: [PATCH 26/69] almost finished login --- src/main/java/atmproject/UserLogin.java | 58 ++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 4962173..8493595 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -1,5 +1,7 @@ package atmproject; +import com.sun.org.apache.xpath.internal.operations.Bool; + public class UserLogin { private User currentUser; private Console console = new Console(System.in, System.out); @@ -10,14 +12,43 @@ public UserLogin(){ userRepository = UserRepository.getUserRepository(); } - public void runLoginMenu(User currentUser) { - this.currentUser = currentUser; + public void runLoginMenu() { + running = true; while (running) { - console.println("Welcome to the ATM!\n Enter 1 for new account, 2 for login"); + assignUser(); + if(currentUser != null){ + startMainMenu(); + } + exit(); + } + } + public void assignUser (){ + while(currentUser != null) { + console.println("Welcome to the ATM!\n Enter 1 for new account, 2 for login, 0 to exit"); Integer userInput = console.getIntegerInput(":"); -// userLoginLogic(userInput); + Boolean exit = false; + switch (userInput) { + case 0: + exit = true; + break; + case 1: + getUserInfo(); + break; + case 2: + getLoginInfo(); + break; + } + if(exit){ break;} } } + public void getUserInfo(){ + console.println("Please enter"); + } + public void getLoginInfo(){ + console.println("woot"); + } + + /*public void userLoginLogic(User currentUser) { @@ -48,7 +79,24 @@ public void login(Integer accountNum,Integer pinNumber ){ } public void startMainMenu(){ + MainMenu mainMenu = new MainMenu(); + mainMenu.runMainMenu(currentUser); + } + public void exit(){ + Integer userInput = 0; + console.println("Are you sure you want to Exit?\n 1 - Yes 2 - No"); + while (!userInput.equals(1) && !userInput.equals(2)) { + userInput = console.getIntegerInput(":"); + switch (userInput) { + case 1: + running = false; + break; + case 2: + break; + default: + console.print("Please enter 1 or 2"); + } + } } - public void exit(){} } \ No newline at end of file From 051d4c44f6026c2a118326c3d8d6485e3b28186d Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 13:16:01 -0500 Subject: [PATCH 27/69] more additions --- src/main/java/atmproject/MainMenu.java | 13 -- src/main/java/atmproject/User.java | 17 +-- .../java/atmproject/accounts/Account.java | 7 ++ src/test/java/atmproject/LanguageTest.java | 26 ++++ src/test/java/atmproject/UserTest.java | 119 ++++++++++++++++++ 5 files changed, 162 insertions(+), 20 deletions(-) create mode 100644 src/test/java/atmproject/LanguageTest.java create mode 100644 src/test/java/atmproject/UserTest.java diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index efa9840..b0aef93 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -28,7 +28,6 @@ public void callDeposit() { console.println("How much would you like to deposit?"); Double userInput = console.getDoubleInput(":"); chosenAccount.deposit(userInput); - } public void callWithdraw() { @@ -36,7 +35,6 @@ public void callWithdraw() { console.println("How much would you like to withdraw?"); Double userInput = console.getDoubleInput(":"); chosenAccount.withdraw(userInput); - } public void callTransfer(){ @@ -49,14 +47,11 @@ public void callTransfer(){ Double userInput = console.getDoubleInput(":"); chosenAccount.transfer(destinationAccount, userInput); } - - } public String checkBalance() { Account chosenAccount = accountMenu.selectAccount(currentUser); return String.format("The balance in %s is $%f.0", chosenAccount.getAccountName(), chosenAccount.getBalance()); - } public String displayHistory() { @@ -64,18 +59,15 @@ public String displayHistory() { return "You currently have no history, please"; } return currentUser.displayHistory(); - } public void returnTOLoginMenu() { running = false; - } public void mainMenuLogic(Integer userInput){ - switch (userInput) { case 1: callDeposit(); @@ -96,11 +88,6 @@ public void mainMenuLogic(Integer userInput){ returnTOLoginMenu(); break; } - - - - - } public User getCurrentUser() { diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 2310582..30a220e 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -12,14 +12,14 @@ public class User { private String firstName; private String lastName; private Integer pinNumber; - private Integer accountNumber; + private Integer userID; TreeMap accountList; ArrayList transactionHistory; - public User(String firstName, String lastName, Integer accountNumber){ + public User(String firstName, String lastName, Integer userID){ this.firstName = firstName; this.lastName = lastName; - this.pinNumber = accountNumber; + this.userID = userID; this.pinNumber = 0; this.accountList = new TreeMap(); this.transactionHistory = new ArrayList(); @@ -50,12 +50,12 @@ public void setPinNumber(Integer pinNumber) { this.pinNumber = pinNumber; } - public Integer getAccountNumber() { - return accountNumber; + public Integer getUserID() { + return userID; } - public void setAccountNumber(Integer accountNumber) { - this.accountNumber = accountNumber; + public void setUserID(Integer accountNumber) { + this.userID = accountNumber; } public TreeMap getAccountList() { @@ -73,6 +73,9 @@ public ArrayList getTransactionHistory() { public void setTransactionHistory(ArrayList transactionHistory) { this.transactionHistory = transactionHistory; } + public void addToHistory(String transaction){ + transactionHistory.add(transaction); + } public Account removeAccount(String accountName){ return accountList.remove(accountName); diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index debba00..c2e6f97 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -54,6 +54,7 @@ public Double withdraw(Double amount) { this.balance = balance - amount; return balance; } + currentUser.addToHistory(String.format("You withdrew $%f.0 from %s.", amount, this.getAccountName())); return balance; } @@ -62,6 +63,7 @@ public Double deposit(Double amount) { throw new InvalidParameterException(); } this.balance = balance + amount; + currentUser.addToHistory(String.format("You deposited $%f.0 from %s.", amount, this.getAccountName())); return balance; } @@ -73,6 +75,7 @@ public Double transfer(Account destinationAccount, Double amount) { this.withdraw(amount); destinationAccount.deposit(amount); } + currentUser.addToHistory(String.format("You transfered $%f.0 from %s t0 %s.",amount, this.getAccountName(), destinationAccount.getAccountName())); return this.balance; } @@ -84,4 +87,8 @@ public Boolean closeAccount(){ currentUser.removeAccount(this.getAccountName()); return !currentUser.getAccountList().containsValue(this.getAccountName()); } + + public void addAccount(Account account){ + currentUser.getAccountList().put(accountName,this); + } } diff --git a/src/test/java/atmproject/LanguageTest.java b/src/test/java/atmproject/LanguageTest.java new file mode 100644 index 0000000..b2f8a52 --- /dev/null +++ b/src/test/java/atmproject/LanguageTest.java @@ -0,0 +1,26 @@ +package atmproject; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class LanguageTest { + + @Test + public void getLangTest() { + Language language = new Language(); + String expected = "This is an example"; + String actual = language.getLang(Language.LangKey.EXAMPLE1); + Assert.assertEquals(expected,actual); + } + + @Test + public void getLangTest2() { + Language language = new Language(); + String expected = "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Return To Login Menu\n"; + String actual = language.getLang(Language.LangKey.MAINMENU); + Assert.assertEquals(expected,actual); + } +} \ No newline at end of file diff --git a/src/test/java/atmproject/UserTest.java b/src/test/java/atmproject/UserTest.java new file mode 100644 index 0000000..aa27105 --- /dev/null +++ b/src/test/java/atmproject/UserTest.java @@ -0,0 +1,119 @@ +package atmproject; + +import atmproject.accounts.Account; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.TreeMap; + +import static org.junit.Assert.*; + +public class UserTest { + + @Test + public void getFirstName() { + User currentUser = new User("Shadow", "???", 3454); + String expected = "Shadow"; + String actual = currentUser.getFirstName(); + Assert.assertEquals(expected,actual); + } + + @Test + public void setFirstName() { + User currentUser = new User("Shadow", "???", 3454); + String expected = "Shadow"; + currentUser.setFirstName(expected); + Assert.assertEquals(expected,currentUser.getFirstName()); + } + + @Test + public void getLastName() { + User currentUser = new User("Shadow", "???", 3454); + String expected = "???"; + String actual = currentUser.getLastName(); + Assert.assertEquals(expected,actual); + } + + @Test + public void setLastName() { + User currentUser = new User("Shadow", "???", 3454); + String expected = "???"; + currentUser.setLastName(expected); + Assert.assertEquals(expected,currentUser.getLastName()); + + } + + @Test + public void getPinNumber() { + User currentUser = new User("Shadow", "???", 3454); + Integer expected = 7777; + currentUser.setPinNumber(expected); + Assert.assertEquals(expected,currentUser.getPinNumber()); + } + + @Test + public void setPinNumber() { + User currentUser = new User("Shadow", "???", 3454); + Integer expected = 7777; + currentUser.setPinNumber(expected); + Assert.assertEquals(expected,currentUser.getPinNumber()); + } + + @Test + public void getUserID() { + User currentUser = new User("Shadow", "???", 3454); + Integer expected = 3454; + Integer actual = currentUser.getUserID(); + Assert.assertEquals(expected,actual); + } + + @Test + public void setUserID() { + User currentUser = new User("Shadow", "???", 3454); + Integer expected = 3454; + currentUser.setUserID(expected); + Assert.assertEquals(expected,currentUser.getUserID()); + } + + @Test + public void getAccountList() { + User currentUser = new User("Shadow", "???", 3454); + Account account = new Account(currentUser, 500.0, "Checking Account 1"); + String expected = "{" + account.getAccountName() + "=" + account.toString() + "}"; + account.addAccount(account); + Assert.assertEquals(expected,currentUser.getAccountList().toString()); + } + + @Test + public void setAccountList() { + User currentUser = new User("Shadow", "???", 3454); + Account account = new Account(currentUser, 500.0, "Checking Account 1"); + TreeMap expected = new TreeMap(); + expected.put(account.getAccountName(),account); + currentUser.setAccountList(expected); + Assert.assertEquals(expected.toString(),currentUser.getAccountList().toString()); + } + + @Test + public void getTransactionHistory() { + User currentUser = new User("Shadow", "???", 3454); + String expected = "BLAH BLAH BLAH"; + currentUser.addToHistory(expected); + Assert.assertEquals(("[" + expected + "]"),currentUser.getTransactionHistory().toString()); + } + + @Test + public void setTransactionHistory() { + User currentUser = new User("Shadow", "???", 3454); + String[] expected = {"BLAH BLAH BLAH"}; + } + + @Test + public void removeAccount() { + } + + @Test + public void displayHistory() { + } +} \ No newline at end of file From a0b987a459ac0629e33ec60288df9cc4285426e9 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 13:26:27 -0500 Subject: [PATCH 28/69] changed add account to user --- src/main/java/atmproject/User.java | 12 +++++++++--- src/main/java/atmproject/accounts/Account.java | 5 +---- src/test/java/atmproject/UserTest.java | 8 ++++++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 30a220e..b442e99 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -8,7 +8,7 @@ import java.util.TreeMap; public class User { - + private Console console = new Console(System.in,System.out); private String firstName; private String lastName; private Integer pinNumber; @@ -77,9 +77,15 @@ public void addToHistory(String transaction){ transactionHistory.add(transaction); } - public Account removeAccount(String accountName){ - return accountList.remove(accountName); + public void removeAccount(Account account){ + accountList.remove(account.getAccountName()); + } + public void addAccount(Account account) { + if (account.getBalance() > 0.0){ + console.println("Please empty your account before attempting to close."); + } + accountList.put(account.getAccountName(), account); } public String displayHistory(){ diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index c2e6f97..188d042 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -84,11 +84,8 @@ public Boolean closeAccount(){ console.println("Please empty your account before attempting to close."); return false; } - currentUser.removeAccount(this.getAccountName()); + currentUser.removeAccount(this); return !currentUser.getAccountList().containsValue(this.getAccountName()); } - public void addAccount(Account account){ - currentUser.getAccountList().put(accountName,this); - } } diff --git a/src/test/java/atmproject/UserTest.java b/src/test/java/atmproject/UserTest.java index aa27105..7567466 100644 --- a/src/test/java/atmproject/UserTest.java +++ b/src/test/java/atmproject/UserTest.java @@ -81,7 +81,7 @@ public void getAccountList() { User currentUser = new User("Shadow", "???", 3454); Account account = new Account(currentUser, 500.0, "Checking Account 1"); String expected = "{" + account.getAccountName() + "=" + account.toString() + "}"; - account.addAccount(account); + currentUser.addAccount(account); Assert.assertEquals(expected,currentUser.getAccountList().toString()); } @@ -106,7 +106,11 @@ public void getTransactionHistory() { @Test public void setTransactionHistory() { User currentUser = new User("Shadow", "???", 3454); - String[] expected = {"BLAH BLAH BLAH"}; + String transaction = "BLAH BLAH BLAH"; + ArrayList expected = new ArrayList(); + expected.add(transaction); + currentUser.setTransactionHistory(expected); + Assert.assertEquals(expected.toString(), currentUser.getTransactionHistory().toString()); } @Test From f6a0e60b71779e2e619e4c1c3c71b891db5ce26b Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 13:32:55 -0500 Subject: [PATCH 29/69] user tests finished --- src/test/java/atmproject/UserTest.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/test/java/atmproject/UserTest.java b/src/test/java/atmproject/UserTest.java index 7567466..914ec8a 100644 --- a/src/test/java/atmproject/UserTest.java +++ b/src/test/java/atmproject/UserTest.java @@ -113,11 +113,35 @@ public void setTransactionHistory() { Assert.assertEquals(expected.toString(), currentUser.getTransactionHistory().toString()); } + @Test + public void addAccount() { + User currentUser = new User("Shadow", "???", 3454); + Account account = new Account(currentUser, 500.0, "Checking Account 1"); + currentUser.addAccount(account); + Assert.assertTrue(currentUser.getAccountList().containsKey("Checking Account 1")); + + } + @Test public void removeAccount() { + User currentUser = new User("Shadow", "???", 3454); + Account account = new Account(currentUser, 500.0, "Checking Account 1"); + currentUser.addAccount(account); + currentUser.removeAccount(account); + Assert.assertTrue(currentUser.getAccountList().isEmpty()); } @Test public void displayHistory() { + User currentUser = new User("Shadow", "???", 3454); + String transaction = "BLAH BLAH BLAH"; + String transaction2 = "Snip snat snoogle snork"; + String transaction3 = "Fiddle flop flee!"; + currentUser.addToHistory(transaction); + currentUser.addToHistory(transaction2); + currentUser.addToHistory(transaction3); + Assert.assertTrue(currentUser.displayHistory().contains(transaction)); } + + } \ No newline at end of file From a347365df165110b93d71aa66f8126badaf85183 Mon Sep 17 00:00:00 2001 From: Amendoza20 <20.angel.mendoza@gmail.com> Date: Sun, 10 Nov 2019 13:41:13 -0500 Subject: [PATCH 30/69] finished login menu --- src/main/java/atmproject/UserLogin.java | 70 ++++++++++++++++++------- 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 8493595..558ae51 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -8,7 +8,7 @@ public class UserLogin { private boolean running; private UserRepository userRepository; - public UserLogin(){ + public UserLogin() { userRepository = UserRepository.getUserRepository(); } @@ -16,14 +16,15 @@ public void runLoginMenu() { running = true; while (running) { assignUser(); - if(currentUser != null){ + if (currentUser != null) { startMainMenu(); } exit(); } } - public void assignUser (){ - while(currentUser != null) { + + public void assignUser() { + while (currentUser == null) { console.println("Welcome to the ATM!\n Enter 1 for new account, 2 for login, 0 to exit"); Integer userInput = console.getIntegerInput(":"); Boolean exit = false; @@ -38,32 +39,61 @@ public void assignUser (){ getLoginInfo(); break; } - if(exit){ break;} + if (exit) { + break; + } } } - public void getUserInfo(){ - console.println("Please enter"); + + private String getFirstNameInput() { + console.println("Please enter your First name :"); + return console.getStringInput(":"); } - public void getLoginInfo(){ - console.println("woot"); + private String getLastNameInput() { + console.println("Please enter Last name :"); + return console.getStringInput(":"); + } + public void getUserInfo(){ + String firstInput = getFirstNameInput(); + String lastInput = getLastNameInput(); + createUser(firstInput,lastInput); } + private Integer getAccountNumberInput(){ + console.println("Please enter your 4 digit Account Number :"); + return console.getIntegerInput(":"); + } + private Integer getPINInput(){ + console.println("Please enter your PIN :"); + return console.getIntegerInput(":"); + } + private Integer tryAgainInput(){ + console.println("User Info doesn't match. Try again?\n 1 - Yes 2 - No"); + return console.getIntegerInput(":"); + } + public void getLoginInfo(){ + Boolean exit = false; + while (currentUser == null) { + Integer accountNumber = getAccountNumberInput(); + Integer pin = getPINInput(); + login(accountNumber, pin); + if(currentUser == null){ + Integer userInput = tryAgainInput(); + switch(userInput){ + case 1: + break; + case 2: + exit = true; + break; - /*public void userLoginLogic(User currentUser) { - Switch(userInput){ - case 1: - // this will lead to the create userMethod - - case 2: - // this will lead to the login in method (which if passed will lead to account menu?) + } + if(exit){break;} + } } - }*/ - /** - * Creating a user with a First name, Last name. Also an ID - */ + } public User createUser (String firstName, String lastName){ Integer accountNum = userRepository.getAccountNums(); userRepository.saveUser(new User(firstName,lastName, accountNum), accountNum); From 8c6dea7668cedaed332f5de4b4f2b635304d324a Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 14:06:36 -0500 Subject: [PATCH 31/69] user repository added --- src/main/java/atmproject/User.java | 2 +- src/main/java/atmproject/UserRepository.java | 28 +++++++++++++++++++ .../java/atmproject/accounts/Account.java | 9 ------ .../java/atmproject/accounts/AccountTest.java | 4 +-- 4 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 src/main/java/atmproject/UserRepository.java diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index b442e99..0b8bf22 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -13,8 +13,8 @@ public class User { private String lastName; private Integer pinNumber; private Integer userID; + private ArrayList transactionHistory; TreeMap accountList; - ArrayList transactionHistory; public User(String firstName, String lastName, Integer userID){ this.firstName = firstName; diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java new file mode 100644 index 0000000..4fe9a0b --- /dev/null +++ b/src/main/java/atmproject/UserRepository.java @@ -0,0 +1,28 @@ +package atmproject; + +import atmproject.User; + +import java.util.HashMap; + +public class UserRepository { + + HashMap userDatabase; + + public UserRepository() { + userDatabase = new HashMap(); + } + + User findUser(String UserName) { + return userDatabase.get(UserName); + } + + boolean addUser(User User) { + if(userDatabase.containsKey(User.getFirstName())) { + return false; + } else { + userDatabase.put(User.getFirstName(), User); + return true; + } + } + +} \ No newline at end of file diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index 188d042..175d092 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -79,13 +79,4 @@ public Double transfer(Account destinationAccount, Double amount) { return this.balance; } - public Boolean closeAccount(){ - if (balance > 0.0){ - console.println("Please empty your account before attempting to close."); - return false; - } - currentUser.removeAccount(this); - return !currentUser.getAccountList().containsValue(this.getAccountName()); - } - } diff --git a/src/test/java/atmproject/accounts/AccountTest.java b/src/test/java/atmproject/accounts/AccountTest.java index 68c1922..bfe1ea5 100644 --- a/src/test/java/atmproject/accounts/AccountTest.java +++ b/src/test/java/atmproject/accounts/AccountTest.java @@ -25,7 +25,7 @@ public void testA00() { assertEquals(10.0, a.getBalance(), 0.0001); } - @Test + /*@Test public void testA01() { Account a = new Account(0.0); assertEquals(true, a.closeAccount()); @@ -35,7 +35,7 @@ public void testA01() { public void testA02() { Account a = new Account(10.0); assertEquals(false, a.closeAccount()); - } + }*/ @Test public void testA1() { From 7a54ab53eb847a1f3c541beae36ab4f6fdb00744 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 14:12:03 -0500 Subject: [PATCH 32/69] removed user depository --- src/main/java/atmproject/UserRepository.java | 28 -------------------- 1 file changed, 28 deletions(-) delete mode 100644 src/main/java/atmproject/UserRepository.java diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java deleted file mode 100644 index 4fe9a0b..0000000 --- a/src/main/java/atmproject/UserRepository.java +++ /dev/null @@ -1,28 +0,0 @@ -package atmproject; - -import atmproject.User; - -import java.util.HashMap; - -public class UserRepository { - - HashMap userDatabase; - - public UserRepository() { - userDatabase = new HashMap(); - } - - User findUser(String UserName) { - return userDatabase.get(UserName); - } - - boolean addUser(User User) { - if(userDatabase.containsKey(User.getFirstName())) { - return false; - } else { - userDatabase.put(User.getFirstName(), User); - return true; - } - } - -} \ No newline at end of file From f9b899958a37404cb046d17189af09bd535b7e34 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 14:16:31 -0500 Subject: [PATCH 33/69] transaction history worked out --- src/main/java/atmproject/MainMenu.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index b0aef93..e52364f 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -28,6 +28,7 @@ public void callDeposit() { console.println("How much would you like to deposit?"); Double userInput = console.getDoubleInput(":"); chosenAccount.deposit(userInput); + currentUser.addToHistory(String.format("You deposited $%f.0 to %s.", userInput, chosenAccount.getAccountName())); } public void callWithdraw() { @@ -35,6 +36,9 @@ public void callWithdraw() { console.println("How much would you like to withdraw?"); Double userInput = console.getDoubleInput(":"); chosenAccount.withdraw(userInput); + if(userInput <= chosenAccount.getBalance()){ + currentUser.addToHistory(String.format("You withdrew $%f.0 from %s.", userInput, chosenAccount.getAccountName())) + } } public void callTransfer(){ @@ -46,6 +50,9 @@ public void callTransfer(){ console.println("How much would you like to transfer?"); Double userInput = console.getDoubleInput(":"); chosenAccount.transfer(destinationAccount, userInput); + if(userInput <= chosenAccount.getBalance()){ + currentUser.addToHistory(String.format("You transfered $%f.0 from %s t0 %s.",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName())); + } } } From 06fd423a2f08e274b47202d2769ab6380da0a741 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 14:17:24 -0500 Subject: [PATCH 34/69] oops, working in dev --- src/main/java/atmproject/MainMenu.java | 43 +------------------ .../java/atmproject/accounts/Account.java | 3 -- 2 files changed, 2 insertions(+), 44 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index e52364f..7daa182 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -2,9 +2,7 @@ import atmproject.accounts.Account; -import exceptions.SameAccountException; -import java.util.logging.Logger; public class MainMenu { private Console console = new Console(System.in, System.out); @@ -37,7 +35,7 @@ public void callWithdraw() { Double userInput = console.getDoubleInput(":"); chosenAccount.withdraw(userInput); if(userInput <= chosenAccount.getBalance()){ - currentUser.addToHistory(String.format("You withdrew $%f.0 from %s.", userInput, chosenAccount.getAccountName())) + currentUser.addToHistory(String.format("You withdrew $%f.0 from %s.", userInput, chosenAccount.getAccountName())); } } @@ -112,41 +110,4 @@ public boolean isRunning() { public void setRunning(boolean running) { this.running = running; } - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +} \ No newline at end of file diff --git a/src/main/java/atmproject/accounts/Account.java b/src/main/java/atmproject/accounts/Account.java index 175d092..5a1f15f 100644 --- a/src/main/java/atmproject/accounts/Account.java +++ b/src/main/java/atmproject/accounts/Account.java @@ -54,7 +54,6 @@ public Double withdraw(Double amount) { this.balance = balance - amount; return balance; } - currentUser.addToHistory(String.format("You withdrew $%f.0 from %s.", amount, this.getAccountName())); return balance; } @@ -63,7 +62,6 @@ public Double deposit(Double amount) { throw new InvalidParameterException(); } this.balance = balance + amount; - currentUser.addToHistory(String.format("You deposited $%f.0 from %s.", amount, this.getAccountName())); return balance; } @@ -75,7 +73,6 @@ public Double transfer(Account destinationAccount, Double amount) { this.withdraw(amount); destinationAccount.deposit(amount); } - currentUser.addToHistory(String.format("You transfered $%f.0 from %s t0 %s.",amount, this.getAccountName(), destinationAccount.getAccountName())); return this.balance; } From def9a90a8946b35b1e72b7556b194ad8f2c3fe9a Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 14:28:09 -0500 Subject: [PATCH 35/69] transaction history update --- src/main/java/atmproject/MainMenu.java | 30 ++++++++++++++++---------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 7daa182..8419db3 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -21,42 +21,44 @@ public void runMainMenu(User currentUser) { } } - public void callDeposit() { + public String callDeposit() { Account chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to deposit?"); Double userInput = console.getDoubleInput(":"); chosenAccount.deposit(userInput); - currentUser.addToHistory(String.format("You deposited $%f.0 to %s.", userInput, chosenAccount.getAccountName())); + return String.format("You deposited $%f.0 to %s.", userInput, chosenAccount.getAccountName()); } - public void callWithdraw() { + public String callWithdraw() { Account chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to withdraw?"); Double userInput = console.getDoubleInput(":"); chosenAccount.withdraw(userInput); if(userInput <= chosenAccount.getBalance()){ - currentUser.addToHistory(String.format("You withdrew $%f.0 from %s.", userInput, chosenAccount.getAccountName())); + return String.format("You withdrew $%f.0 from %s.\n", userInput, chosenAccount.getAccountName()); } + return "ERROR: insufficient funds for withdraw.\n"; } - public void callTransfer(){ + public String callTransfer(){ Account chosenAccount = accountMenu.selectAccount(currentUser); Account destinationAccount = accountMenu.selectAccount(currentUser); if(chosenAccount.equals(destinationAccount)){ - console.println("Please select two separate accounts."); + return "ERROR: Incorrect account entry\n"; } else { console.println("How much would you like to transfer?"); Double userInput = console.getDoubleInput(":"); chosenAccount.transfer(destinationAccount, userInput); if(userInput <= chosenAccount.getBalance()){ - currentUser.addToHistory(String.format("You transfered $%f.0 from %s t0 %s.",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName())); + return String.format("You transferred $%f.0 from %s t0 %s.\n",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName()); } + return "ERROR: insufficient funds for transfer.\n"; } } public String checkBalance() { Account chosenAccount = accountMenu.selectAccount(currentUser); - return String.format("The balance in %s is $%f.0", chosenAccount.getAccountName(), chosenAccount.getBalance()); + return String.format("The balance in %s is $%f.0\n", chosenAccount.getAccountName(), chosenAccount.getBalance()); } public String displayHistory() { @@ -75,13 +77,19 @@ public void returnTOLoginMenu() { public void mainMenuLogic(Integer userInput){ switch (userInput) { case 1: - callDeposit(); + String transaction = callDeposit(); + console.println(transaction); + currentUser.addToHistory(transaction); break; case 2: - callWithdraw(); + transaction = callWithdraw(); + console.println(transaction); + currentUser.addToHistory(transaction); break; case 3: - callTransfer(); + transaction = callTransfer(); + console.println(transaction); + currentUser.addToHistory(transaction); break; case 4: console.println(displayHistory()); From 82a67d1e4c7f4cc60cdc8e118f562d8b14def624 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 14:44:24 -0500 Subject: [PATCH 36/69] login page updates --- src/main/java/atmproject/AccountMenu.java | 2 +- src/main/java/atmproject/Language.java | 2 +- src/main/java/atmproject/UserLogin.java | 11 +++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index e932939..0e9e2ff 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -12,7 +12,7 @@ public class AccountMenu { public Account selectAccount(User user) { Account returnedAccount = null; - for(String s : user.accountList.keySet()){ + for(String s : user.accountList.keySet()) { console.println(s); } diff --git a/src/main/java/atmproject/Language.java b/src/main/java/atmproject/Language.java index c264ebe..3d4949a 100644 --- a/src/main/java/atmproject/Language.java +++ b/src/main/java/atmproject/Language.java @@ -14,7 +14,7 @@ public Language() { langMap.put(LangKey.EXAMPLE1, "This is an example"); langMap.put(LangKey.EXAMPLE2, "This is another Example"); langMap.put(LangKey.MAINMENU, "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + - "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Return To Login Menu\n"); + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Return To Login Menu"); } diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 9d7248d..73177af 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -23,7 +23,7 @@ public void runLoginMenu() { public void assignUser() { while (currentUser == null) { - console.println("Welcome to the ATM!\n Enter 1 for new account, 2 for login, 0 to exit"); + console.println("Welcome to the ATM!\n(1) - Create New Account\n(2) - Login to Existing Account\n(0) - Exit ATM"); Integer userInput = console.getIntegerInput(":"); Boolean exit = false; switch (userInput) { @@ -32,6 +32,7 @@ public void assignUser() { break; case 1: getUserInfo(); + console.println("Hello, %s! Thank you for creating an account. You user ID is %d", currentUser.getFirstName(),currentUser.getUserID()); break; case 2: getLoginInfo(); @@ -80,7 +81,7 @@ private Integer getPINInput(){ return console.getIntegerInput(":"); } private Integer tryAgainInput(){ - console.println("User Info doesn't match. Try again?\n 1 - Yes 2 - No"); + console.println("User Info doesn't match. Try again?\n(1) - Yes\n (2) - No\n"); return console.getIntegerInput(":"); } public void getLoginInfo(){ @@ -97,8 +98,6 @@ public void getLoginInfo(){ case 2: exit = true; break; - - } if(exit){break;} } @@ -125,7 +124,7 @@ public void startMainMenu(){ } public void exit(){ Integer userInput = 0; - console.println("Are you sure you want to Exit?\n 1 - Yes 2 - No"); + console.println("Are you sure you want to Exit?\n(1) - Yes\n(2) - No\n"); while (!userInput.equals(1) && !userInput.equals(2)) { userInput = console.getIntegerInput(":"); switch (userInput) { @@ -135,7 +134,7 @@ public void exit(){ case 2: break; default: - console.print("Please enter 1 or 2"); + console.print("Please enter (1) or (2)"); } } } From 0d22cbfc60445a3d3564a9bcb678764d072ecefa Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 14:48:11 -0500 Subject: [PATCH 37/69] somewhat running --- src/main/java/atmproject/MainMenu.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 8419db3..ac45885 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -92,10 +92,10 @@ public void mainMenuLogic(Integer userInput){ currentUser.addToHistory(transaction); break; case 4: - console.println(displayHistory()); + console.println(checkBalance()); break; case 5: - console.println(checkBalance()); + console.println(displayHistory()); break; case 6: returnTOLoginMenu(); From fe1650c798f47ad2ebf0f6c8658c43f6782d60af Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 15:14:26 -0500 Subject: [PATCH 38/69] add account fixed --- src/main/java/atmproject/MainMenu.java | 17 +++++++++++++++++ src/main/java/atmproject/User.java | 6 +++--- .../atmproject/accounts/InvestmentsAccount.java | 2 +- .../atmproject/accounts/SavingsAccount.java | 2 +- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index ac45885..e033fce 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -56,6 +56,21 @@ public String callTransfer(){ } } + public void callCreateAccount(){ + console.println("What kind of account would you like to create?\n(1) - Checkings\n(2) - Savings\n(3) - Investments"); + Integer typeOfAccount = console.getIntegerInput(":"); + switch(typeOfAccount) { + case 1: + + if(typeOfAccount == 1 || typeOfAccount == 2) { + currentUser.addAccount(currentUser, typeOfAccount); + } else if(typeOfAccount == 3){ + + } else { + console.println("ERROR: INVALID ENTRY"); + } + } + public String checkBalance() { Account chosenAccount = accountMenu.selectAccount(currentUser); return String.format("The balance in %s is $%f.0\n", chosenAccount.getAccountName(), chosenAccount.getBalance()); @@ -98,6 +113,8 @@ public void mainMenuLogic(Integer userInput){ console.println(displayHistory()); break; case 6: + callCreateAccount(); + case 7: returnTOLoginMenu(); break; } diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 0b8bf22..3ed912a 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -78,13 +78,13 @@ public void addToHistory(String transaction){ } public void removeAccount(Account account){ + if (account.getBalance() > 0.0){ + console.println("Please empty your account before attempting to close."); + } accountList.remove(account.getAccountName()); } public void addAccount(Account account) { - if (account.getBalance() > 0.0){ - console.println("Please empty your account before attempting to close."); - } accountList.put(account.getAccountName(), account); } diff --git a/src/main/java/atmproject/accounts/InvestmentsAccount.java b/src/main/java/atmproject/accounts/InvestmentsAccount.java index ddc3524..ada852e 100644 --- a/src/main/java/atmproject/accounts/InvestmentsAccount.java +++ b/src/main/java/atmproject/accounts/InvestmentsAccount.java @@ -7,7 +7,7 @@ public class InvestmentsAccount extends SavingsAccount { private Double minimumDeposit; - public InvestmentsAccount(User currentUser, Double balance, Integer accountNumber) { + public InvestmentsAccount(User currentUser, Double balance, String accountName) { super(currentUser, 0.0, null); super.setInterestRate(0.001); this.minimumDeposit = 15000.0; diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java index e202abf..1faf89c 100644 --- a/src/main/java/atmproject/accounts/SavingsAccount.java +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -7,7 +7,7 @@ public class SavingsAccount extends Account { protected Double interestRate; - public SavingsAccount(User currentUser, Double balance, Integer accountNumber) { + public SavingsAccount(User currentUser, Double balance, String accountName) { super(currentUser, 0.0, null); this.interestRate = 0.0005; } From 5c00b82de7bf78af95dc8abee9a108b81160f886 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 15:38:07 -0500 Subject: [PATCH 39/69] account creation update --- src/main/java/atmproject/Language.java | 2 +- src/main/java/atmproject/MainMenu.java | 18 ++++++++++++------ .../accounts/InvestmentsAccount.java | 2 +- src/test/java/atmproject/LanguageTest.java | 2 +- .../accounts/InvestmentsAccountTest.java | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/atmproject/Language.java b/src/main/java/atmproject/Language.java index 3d4949a..fb4231e 100644 --- a/src/main/java/atmproject/Language.java +++ b/src/main/java/atmproject/Language.java @@ -14,7 +14,7 @@ public Language() { langMap.put(LangKey.EXAMPLE1, "This is an example"); langMap.put(LangKey.EXAMPLE2, "This is another Example"); langMap.put(LangKey.MAINMENU, "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + - "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Return To Login Menu"); + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Return To Login Menu"); } diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index e033fce..ddd8652 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -2,6 +2,7 @@ import atmproject.accounts.Account; +import atmproject.accounts.SavingsAccount; public class MainMenu { @@ -61,13 +62,18 @@ public void callCreateAccount(){ Integer typeOfAccount = console.getIntegerInput(":"); switch(typeOfAccount) { case 1: + Account account = new Account(currentUser,20.0,(currentUser.getAccountList().size() + 1) + " - Checkings Account"); + currentUser.addAccount(account); + break; + case 2: + account = new SavingsAccount(currentUser,20.0,(currentUser.getAccountList().size() + 1) + " - Savings Account"); + currentUser.addAccount(account); + break; + case 3: + console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow" + + "much would you like to deposit?"); + Integer input = console.getIntegerInput(":"); - if(typeOfAccount == 1 || typeOfAccount == 2) { - currentUser.addAccount(currentUser, typeOfAccount); - } else if(typeOfAccount == 3){ - - } else { - console.println("ERROR: INVALID ENTRY"); } } diff --git a/src/main/java/atmproject/accounts/InvestmentsAccount.java b/src/main/java/atmproject/accounts/InvestmentsAccount.java index ada852e..c7023d4 100644 --- a/src/main/java/atmproject/accounts/InvestmentsAccount.java +++ b/src/main/java/atmproject/accounts/InvestmentsAccount.java @@ -25,6 +25,6 @@ public String enoughForInitialBalance(Double input){ if(input < this.minimumDeposit){ return String.format("We apologize. Your starting balance must be at least $%f0", minimumDeposit); } - return "Thank you for creating this new account."; + return "Thank you! Enjoy your new investment account."; } } diff --git a/src/test/java/atmproject/LanguageTest.java b/src/test/java/atmproject/LanguageTest.java index b2f8a52..61f604c 100644 --- a/src/test/java/atmproject/LanguageTest.java +++ b/src/test/java/atmproject/LanguageTest.java @@ -19,7 +19,7 @@ public void getLangTest() { public void getLangTest2() { Language language = new Language(); String expected = "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + - "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Return To Login Menu\n"; + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Return To Login Menu"; String actual = language.getLang(Language.LangKey.MAINMENU); Assert.assertEquals(expected,actual); } diff --git a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java index 903a727..f766de7 100644 --- a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java +++ b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java @@ -36,7 +36,7 @@ public void enoughForInitialBalanceFalseTest() { public void enoughForInitialBalanceTrueTest() { InvestmentsAccount investmentsAccount = new InvestmentsAccount(null,null,null); Double input = 17000.0; - String expected = "Thank you for creating this new account."; + String expected = "Thank you! Enjoy your new investment account."; String actual = investmentsAccount.enoughForInitialBalance(input); Assert.assertEquals(expected,actual); } From 7947cdb1814a87440396be48a75cd4fc6a6e6f46 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 15:59:21 -0500 Subject: [PATCH 40/69] updates --- src/main/java/atmproject/AccountMenu.java | 9 +++++---- src/main/java/atmproject/MainMenu.java | 8 ++++---- src/main/java/atmproject/User.java | 5 +++++ src/main/java/atmproject/UserLogin.java | 3 +++ src/main/java/atmproject/UserRepository.java | 7 +++++++ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index 0e9e2ff..62cab5e 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -12,11 +12,12 @@ public class AccountMenu { public Account selectAccount(User user) { Account returnedAccount = null; - for(String s : user.accountList.keySet()) { - console.println(s); - } - String input = console.getStringInput("please select an Account:"); + + String input = console.getStringInput("please select an Account:\n"); + for(String s : user.accountList.keySet()) { + console.println(s); + } if (user.accountList.containsKey(input)){ returnedAccount = user.accountList.get(input); diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index ddd8652..ced9060 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -62,12 +62,12 @@ public void callCreateAccount(){ Integer typeOfAccount = console.getIntegerInput(":"); switch(typeOfAccount) { case 1: - Account account = new Account(currentUser,20.0,(currentUser.getAccountList().size() + 1) + " - Checkings Account"); + Account account = new Account(currentUser, 0.0, "(" +(currentUser.getAccountList().size() + 1) + ")" + " - Checkings Account"); currentUser.addAccount(account); break; case 2: - account = new SavingsAccount(currentUser,20.0,(currentUser.getAccountList().size() + 1) + " - Savings Account"); - currentUser.addAccount(account); + SavingsAccount savingsAccount = new SavingsAccount(currentUser, 0.0, "(" +(currentUser.getAccountList().size() + 1) + ")" + " - Savings Account"); + currentUser.addSavingsAccount(savingsAccount); break; case 3: console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow" + @@ -84,7 +84,7 @@ public String checkBalance() { public String displayHistory() { if(currentUser.getTransactionHistory().isEmpty()){ - return "You currently have no history, please"; + return "You currently have no history,"; } return currentUser.displayHistory(); } diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 3ed912a..6a1f146 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -1,6 +1,7 @@ package atmproject; import atmproject.accounts.Account; +import atmproject.accounts.SavingsAccount; import java.util.ArrayList; import java.util.Arrays; @@ -88,6 +89,10 @@ public void addAccount(Account account) { accountList.put(account.getAccountName(), account); } + public void addSavingsAccount(SavingsAccount account) { + accountList.put(account.getAccountName(), account); + } + public String displayHistory(){ Object[] history = transactionHistory.toArray(); return Arrays.toString(history); diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 73177af..a2a305d 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -1,5 +1,7 @@ package atmproject; +import atmproject.accounts.Account; + public class UserLogin { private User currentUser; private Console console = new Console(System.in, System.out); @@ -33,6 +35,7 @@ public void assignUser() { case 1: getUserInfo(); console.println("Hello, %s! Thank you for creating an account. You user ID is %d", currentUser.getFirstName(),currentUser.getUserID()); + userRepository.initialAccount(currentUser); break; case 2: getLoginInfo(); diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java index 0a98862..8d028af 100644 --- a/src/main/java/atmproject/UserRepository.java +++ b/src/main/java/atmproject/UserRepository.java @@ -1,5 +1,7 @@ package atmproject; +import atmproject.accounts.Account; + import java.util.Map; import java.util.TreeMap; @@ -37,4 +39,9 @@ public User getUser(Integer userID){ public int getIDNums() { return idNums; } + + public void initialAccount(User currentUser){ + Account account = new Account(currentUser, 0.0, "(" +(currentUser.getAccountList().size() + 1) + ")" + " - Checkings Account"); + currentUser.addAccount(account); + } } From efb048a2bad5dacbbd7776fd6937575341dc3f38 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 17:08:32 -0500 Subject: [PATCH 41/69] major updates --- src/main/java/atmproject/AccountMenu.java | 7 ++++--- src/main/java/atmproject/MainMenu.java | 19 ++++++++++--------- src/main/java/atmproject/UserLogin.java | 2 +- src/main/java/atmproject/UserRepository.java | 2 +- src/test/java/atmproject/MainMenuTest.java | 2 +- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index 62cab5e..a69a9b2 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -12,12 +12,13 @@ public class AccountMenu { public Account selectAccount(User user) { Account returnedAccount = null; - - - String input = console.getStringInput("please select an Account:\n"); + Integer counter = 1; + console.println("\n"); for(String s : user.accountList.keySet()) { console.println(s); } + console.println("\nPlease select an account."); + String input = console.getStringInput(":"); if (user.accountList.containsKey(input)){ returnedAccount = user.accountList.get(input); diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index ced9060..8a27674 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -27,16 +27,16 @@ public String callDeposit() { console.println("How much would you like to deposit?"); Double userInput = console.getDoubleInput(":"); chosenAccount.deposit(userInput); - return String.format("You deposited $%f.0 to %s.", userInput, chosenAccount.getAccountName()); + return String.format("You deposited $%.2f to %s.", userInput, chosenAccount.getAccountName()); } public String callWithdraw() { Account chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to withdraw?"); Double userInput = console.getDoubleInput(":"); - chosenAccount.withdraw(userInput); if(userInput <= chosenAccount.getBalance()){ - return String.format("You withdrew $%f.0 from %s.\n", userInput, chosenAccount.getAccountName()); + chosenAccount.withdraw(userInput); + return String.format("You withdrew $%.2f from %s.\n", userInput, chosenAccount.getAccountName()); } return "ERROR: insufficient funds for withdraw.\n"; } @@ -51,7 +51,7 @@ public String callTransfer(){ Double userInput = console.getDoubleInput(":"); chosenAccount.transfer(destinationAccount, userInput); if(userInput <= chosenAccount.getBalance()){ - return String.format("You transferred $%f.0 from %s t0 %s.\n",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName()); + return String.format("You transferred $%.2f from %s to %s.\n",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName()); } return "ERROR: insufficient funds for transfer.\n"; } @@ -62,11 +62,11 @@ public void callCreateAccount(){ Integer typeOfAccount = console.getIntegerInput(":"); switch(typeOfAccount) { case 1: - Account account = new Account(currentUser, 0.0, "(" +(currentUser.getAccountList().size() + 1) + ")" + " - Checkings Account"); + Account account = new Account(currentUser, 0.0, "Checkings Account#" + (currentUser.getAccountList().size() + 1)); currentUser.addAccount(account); break; case 2: - SavingsAccount savingsAccount = new SavingsAccount(currentUser, 0.0, "(" +(currentUser.getAccountList().size() + 1) + ")" + " - Savings Account"); + SavingsAccount savingsAccount = new SavingsAccount(currentUser, 0.0, "Savings Account#" + (currentUser.getAccountList().size() + 1)); currentUser.addSavingsAccount(savingsAccount); break; case 3: @@ -79,7 +79,7 @@ public void callCreateAccount(){ public String checkBalance() { Account chosenAccount = accountMenu.selectAccount(currentUser); - return String.format("The balance in %s is $%f.0\n", chosenAccount.getAccountName(), chosenAccount.getBalance()); + return String.format("The balance in %s is $%.2f\n", chosenAccount.getAccountName(), chosenAccount.getBalance()); } public String displayHistory() { @@ -89,7 +89,7 @@ public String displayHistory() { return currentUser.displayHistory(); } - public void returnTOLoginMenu() { + public void returnToLoginMenu() { running = false; } @@ -120,8 +120,9 @@ public void mainMenuLogic(Integer userInput){ break; case 6: callCreateAccount(); + break; case 7: - returnTOLoginMenu(); + returnToLoginMenu(); break; } } diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index a2a305d..20516f4 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -84,7 +84,7 @@ private Integer getPINInput(){ return console.getIntegerInput(":"); } private Integer tryAgainInput(){ - console.println("User Info doesn't match. Try again?\n(1) - Yes\n (2) - No\n"); + console.println("User Info doesn't match. Try again?\n(1) - Yes\n(2) - No\n"); return console.getIntegerInput(":"); } public void getLoginInfo(){ diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java index 8d028af..4926af0 100644 --- a/src/main/java/atmproject/UserRepository.java +++ b/src/main/java/atmproject/UserRepository.java @@ -41,7 +41,7 @@ public int getIDNums() { } public void initialAccount(User currentUser){ - Account account = new Account(currentUser, 0.0, "(" +(currentUser.getAccountList().size() + 1) + ")" + " - Checkings Account"); + Account account = new Account(currentUser, 0.0, "Checkings Account#" + (currentUser.getAccountList().size() + 1)); currentUser.addAccount(account); } } diff --git a/src/test/java/atmproject/MainMenuTest.java b/src/test/java/atmproject/MainMenuTest.java index d8e2c96..bb59c95 100644 --- a/src/test/java/atmproject/MainMenuTest.java +++ b/src/test/java/atmproject/MainMenuTest.java @@ -34,7 +34,7 @@ public void displayHistory() { public void returnTOLoginMenu() { MainMenu mainMenu = new MainMenu(); - mainMenu.returnTOLoginMenu(); + mainMenu.returnToLoginMenu(); assertFalse(mainMenu.isRunning()); From f0873145c2d07d323a3dd87de87e329ee6c1fb6d Mon Sep 17 00:00:00 2001 From: Mike King Date: Sun, 10 Nov 2019 17:38:25 -0500 Subject: [PATCH 42/69] possibly fixed account menu --- src/main/java/atmproject/AccountMenu.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index a69a9b2..e2c5db8 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -4,6 +4,7 @@ import atmproject.accounts.InvestmentsAccount; import atmproject.accounts.SavingsAccount; +import java.util.LinkedHashMap; import java.util.Map; public class AccountMenu { @@ -11,17 +12,22 @@ public class AccountMenu { Console console = new Console(System.in, System.out); public Account selectAccount(User user) { + Map returnedMap = new LinkedHashMap<>(); Account returnedAccount = null; Integer counter = 1; console.println("\n"); for(String s : user.accountList.keySet()) { - console.println(s); + console.println( counter + " " + s); + returnedMap.put(counter, user.accountList.get(s)); + counter++; + } console.println("\nPlease select an account."); - String input = console.getStringInput(":"); + Integer input = console.getIntegerInput(":"); + - if (user.accountList.containsKey(input)){ - returnedAccount = user.accountList.get(input); + if (returnedMap.containsKey(input)){ + returnedAccount = returnedMap.get(input); } From 774ffc11f560268fdd7d0b3ecbbff1bed3fcd38b Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 17:40:12 -0500 Subject: [PATCH 43/69] update, lots of stuff --- src/main/java/atmproject/MainMenu.java | 16 ++++++++++------ src/main/java/atmproject/User.java | 10 +++++++--- src/main/java/atmproject/UserLogin.java | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/MainMenu.java index 8a27674..c3e8a3a 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/MainMenu.java @@ -53,7 +53,7 @@ public String callTransfer(){ if(userInput <= chosenAccount.getBalance()){ return String.format("You transferred $%.2f from %s to %s.\n",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName()); } - return "ERROR: insufficient funds for transfer.\n"; + return "ERROR: Insufficient funds for transfer.\n"; } } @@ -100,17 +100,21 @@ public void mainMenuLogic(Integer userInput){ case 1: String transaction = callDeposit(); console.println(transaction); - currentUser.addToHistory(transaction); + currentUser.addToHistory(transaction + "\n"); break; case 2: transaction = callWithdraw(); console.println(transaction); - currentUser.addToHistory(transaction); + currentUser.addToHistory(transaction + "\n"); break; case 3: - transaction = callTransfer(); - console.println(transaction); - currentUser.addToHistory(transaction); + if (currentUser.getAccountList().size() >= 2) { + transaction = callTransfer(); + console.println(transaction); + currentUser.addToHistory(transaction + "\n"); + } else { + console.println("ERROR: Not enough accounts to transfer money. Please create a new one."); + } break; case 4: console.println(checkBalance()); diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 6a1f146..fdf71a9 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -16,6 +16,7 @@ public class User { private Integer userID; private ArrayList transactionHistory; TreeMap accountList; + TreeMap savingsAccountList; public User(String firstName, String lastName, Integer userID){ this.firstName = firstName; @@ -90,11 +91,14 @@ public void addAccount(Account account) { } public void addSavingsAccount(SavingsAccount account) { - accountList.put(account.getAccountName(), account); + savingsAccountList.put(account.getAccountName(), account); } public String displayHistory(){ - Object[] history = transactionHistory.toArray(); - return Arrays.toString(history); + StringBuilder sb = new StringBuilder(); + for(String s : transactionHistory){ + sb.append("**").append(s); + } + return sb.toString(); } } diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 20516f4..2b262c9 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -34,7 +34,7 @@ public void assignUser() { break; case 1: getUserInfo(); - console.println("Hello, %s! Thank you for creating an account. You user ID is %d", currentUser.getFirstName(),currentUser.getUserID()); + console.println("Hello, %s! Thank you for creating an account. Your user ID is %d.", currentUser.getFirstName(),currentUser.getUserID()); userRepository.initialAccount(currentUser); break; case 2: From e29df7adfb4701b9576ab4459412379fd0d09cd0 Mon Sep 17 00:00:00 2001 From: Mike King Date: Sun, 10 Nov 2019 17:46:36 -0500 Subject: [PATCH 44/69] fixed account Menu --- src/main/java/atmproject/AccountMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index e2c5db8..5f7b3f6 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -17,7 +17,7 @@ public Account selectAccount(User user) { Integer counter = 1; console.println("\n"); for(String s : user.accountList.keySet()) { - console.println( counter + " " + s); + console.println( "(" + counter + ")" + " -> " + s); returnedMap.put(counter, user.accountList.get(s)); counter++; From 1fd7ddd3e21835c402495cb53603b64c74064453 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 17:58:10 -0500 Subject: [PATCH 45/69] ATM class --- src/main/java/atmproject/{MainMenu.java => ATM.java} | 2 +- src/main/java/atmproject/UserLogin.java | 6 ++---- .../java/atmproject/{MainMenuTest.java => ATMTest.java} | 8 ++++---- 3 files changed, 7 insertions(+), 9 deletions(-) rename src/main/java/atmproject/{MainMenu.java => ATM.java} (99%) rename src/test/java/atmproject/{MainMenuTest.java => ATMTest.java} (80%) diff --git a/src/main/java/atmproject/MainMenu.java b/src/main/java/atmproject/ATM.java similarity index 99% rename from src/main/java/atmproject/MainMenu.java rename to src/main/java/atmproject/ATM.java index c3e8a3a..79b5e18 100644 --- a/src/main/java/atmproject/MainMenu.java +++ b/src/main/java/atmproject/ATM.java @@ -5,7 +5,7 @@ import atmproject.accounts.SavingsAccount; -public class MainMenu { +public class ATM { private Console console = new Console(System.in, System.out); private User currentUser; private boolean running = true; diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 2b262c9..c9a2932 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -1,7 +1,5 @@ package atmproject; -import atmproject.accounts.Account; - public class UserLogin { private User currentUser; private Console console = new Console(System.in, System.out); @@ -122,8 +120,8 @@ public void login(Integer userID,Integer pinNumber ){ } public void startMainMenu(){ - MainMenu mainMenu = new MainMenu(); - mainMenu.runMainMenu(currentUser); + ATM ATM = new ATM(); + ATM.runMainMenu(currentUser); } public void exit(){ Integer userInput = 0; diff --git a/src/test/java/atmproject/MainMenuTest.java b/src/test/java/atmproject/ATMTest.java similarity index 80% rename from src/test/java/atmproject/MainMenuTest.java rename to src/test/java/atmproject/ATMTest.java index bb59c95..0c2ea84 100644 --- a/src/test/java/atmproject/MainMenuTest.java +++ b/src/test/java/atmproject/ATMTest.java @@ -4,7 +4,7 @@ import static org.junit.Assert.*; -public class MainMenuTest { +public class ATMTest { @Test public void runMainMenu() { @@ -32,11 +32,11 @@ public void displayHistory() { @Test public void returnTOLoginMenu() { - MainMenu mainMenu = new MainMenu(); + ATM ATM = new ATM(); - mainMenu.returnToLoginMenu(); + ATM.returnToLoginMenu(); - assertFalse(mainMenu.isRunning()); + assertFalse(ATM.isRunning()); } From b40455205b06de33e6d92b9da6bfcb7ee8c516e2 Mon Sep 17 00:00:00 2001 From: Mike King Date: Sun, 10 Nov 2019 18:11:37 -0500 Subject: [PATCH 46/69] Fixed for real accountMenu --- src/main/java/atmproject/AccountMenu.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index 5f7b3f6..fa88fbc 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -17,18 +17,22 @@ public Account selectAccount(User user) { Integer counter = 1; console.println("\n"); for(String s : user.accountList.keySet()) { - console.println( "(" + counter + ")" + " -> " + s); + console.println( "(" + counter + ")" + " - " + s); returnedMap.put(counter, user.accountList.get(s)); counter++; } - console.println("\nPlease select an account."); - Integer input = console.getIntegerInput(":"); + while (returnedAccount == null) { + console.println("\nPlease select an account."); + Integer input = console.getIntegerInput(":"); + if (returnedMap.containsKey(input)) { + returnedAccount = returnedMap.get(input); + } else { + console.println("\nAccount does not exist. Try again: "); + } - if (returnedMap.containsKey(input)){ - returnedAccount = returnedMap.get(input); - } + } return returnedAccount; From 49b39c4542fda57852697c5f9ceec19fac6f2ecd Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 18:25:17 -0500 Subject: [PATCH 47/69] ATM now runs program --- src/main/java/atmproject/ATM.java | 5 +++++ src/main/java/atmproject/Language.java | 2 +- src/main/java/atmproject/Main.java | 4 ++-- src/main/java/atmproject/UserLogin.java | 9 +++++++-- src/main/java/exceptions/SameAccountException.java | 4 ---- 5 files changed, 15 insertions(+), 9 deletions(-) delete mode 100644 src/main/java/exceptions/SameAccountException.java diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 79b5e18..79c6f92 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -7,11 +7,16 @@ public class ATM { private Console console = new Console(System.in, System.out); + private UserLogin userLogin = new UserLogin(); private User currentUser; private boolean running = true; private AccountMenu accountMenu = new AccountMenu(); private Language language = new Language(); + public void turnOnATM(){ + userLogin.runLoginMenu(); + } + public void runMainMenu(User currentUser) { setCurrentUser(currentUser); diff --git a/src/main/java/atmproject/Language.java b/src/main/java/atmproject/Language.java index fb4231e..a96032c 100644 --- a/src/main/java/atmproject/Language.java +++ b/src/main/java/atmproject/Language.java @@ -14,7 +14,7 @@ public Language() { langMap.put(LangKey.EXAMPLE1, "This is an example"); langMap.put(LangKey.EXAMPLE2, "This is another Example"); langMap.put(LangKey.MAINMENU, "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + - "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Return To Login Menu"); + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Exit ATM"); } diff --git a/src/main/java/atmproject/Main.java b/src/main/java/atmproject/Main.java index be7de22..9404c95 100644 --- a/src/main/java/atmproject/Main.java +++ b/src/main/java/atmproject/Main.java @@ -6,7 +6,7 @@ public class Main { public static void main(String[] args){ - UserLogin userLogin = new UserLogin(); - userLogin.runLoginMenu(); + ATM atm = new ATM(); + atm.turnOnATM(); } } diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index c9a2932..ca3fe35 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -65,6 +65,7 @@ private void setPin() { }else{ console.println("Please try again.");} } } + public void getUserInfo(){ String firstInput = getFirstNameInput(); String lastInput = getLastNameInput(); @@ -77,14 +78,17 @@ private Integer getUserIDInput(){ return console.getIntegerInput(":"); } + private Integer getPINInput(){ console.println("Please enter your PIN :"); return console.getIntegerInput(":"); } + private Integer tryAgainInput(){ console.println("User Info doesn't match. Try again?\n(1) - Yes\n(2) - No\n"); return console.getIntegerInput(":"); } + public void getLoginInfo(){ Boolean exit = false; while (currentUser == null) { @@ -105,6 +109,7 @@ public void getLoginInfo(){ } } + public User createUser (String firstName, String lastName){ Integer userID = userRepository.getIDNums(); userRepository.saveUser(new User(firstName,lastName, userID), userID); @@ -117,12 +122,13 @@ public void login(Integer userID,Integer pinNumber ){ if(user != null && user.getPinNumber().equals(pinNumber)){ currentUser = user; } - } + public void startMainMenu(){ ATM ATM = new ATM(); ATM.runMainMenu(currentUser); } + public void exit(){ Integer userInput = 0; console.println("Are you sure you want to Exit?\n(1) - Yes\n(2) - No\n"); @@ -139,5 +145,4 @@ public void exit(){ } } } - } \ No newline at end of file diff --git a/src/main/java/exceptions/SameAccountException.java b/src/main/java/exceptions/SameAccountException.java deleted file mode 100644 index f8c0bf8..0000000 --- a/src/main/java/exceptions/SameAccountException.java +++ /dev/null @@ -1,4 +0,0 @@ -package exceptions; - -public class SameAccountException extends Exception { -} From 0422d101fcf03fe0f509c98e5209017d864a6f06 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 18:42:27 -0500 Subject: [PATCH 48/69] ya'll ready for some testing? --- src/main/java/atmproject/ATM.java | 6 +++--- src/test/java/atmproject/ATMTest.java | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 79c6f92..bdc06db 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -87,9 +87,9 @@ public String checkBalance() { return String.format("The balance in %s is $%.2f\n", chosenAccount.getAccountName(), chosenAccount.getBalance()); } - public String displayHistory() { + public String displayHistory(User currentUser) { if(currentUser.getTransactionHistory().isEmpty()){ - return "You currently have no history,"; + return "You currently have no history."; } return currentUser.displayHistory(); } @@ -125,7 +125,7 @@ public void mainMenuLogic(Integer userInput){ console.println(checkBalance()); break; case 5: - console.println(displayHistory()); + console.println(displayHistory(currentUser)); break; case 6: callCreateAccount(); diff --git a/src/test/java/atmproject/ATMTest.java b/src/test/java/atmproject/ATMTest.java index 0c2ea84..a0c9356 100644 --- a/src/test/java/atmproject/ATMTest.java +++ b/src/test/java/atmproject/ATMTest.java @@ -1,5 +1,6 @@ package atmproject; +import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.*; @@ -27,7 +28,21 @@ public void checkBalance() { } @Test - public void displayHistory() { + public void displayHistoryTest1() { + ATM atm = new ATM(); + User currentUser = new User(null,null,null); + String expected = "You currently have no history."; + Assert.assertEquals(expected,atm.displayHistory(currentUser)); + } + + @Test + public void displayHistoryTest2() { + ATM atm = new ATM(); + User currentUser = new User(null,null,null); + String expected = "This is only a test."; + currentUser.addToHistory("This is only a test."); + + Assert.assertEquals("**" + expected,atm.displayHistory(currentUser)); } @Test From dffa0969f7e0239edc7b1e56388866c79bcb7adb Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 10 Nov 2019 18:50:32 -0500 Subject: [PATCH 49/69] create other account types --- src/main/java/atmproject/ATM.java | 6 +++++- src/main/java/atmproject/User.java | 5 ----- src/main/java/atmproject/accounts/InvestmentsAccount.java | 2 +- src/main/java/atmproject/accounts/SavingsAccount.java | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 79c6f92..50ce7d1 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -2,6 +2,7 @@ import atmproject.accounts.Account; +import atmproject.accounts.InvestmentsAccount; import atmproject.accounts.SavingsAccount; @@ -72,12 +73,15 @@ public void callCreateAccount(){ break; case 2: SavingsAccount savingsAccount = new SavingsAccount(currentUser, 0.0, "Savings Account#" + (currentUser.getAccountList().size() + 1)); - currentUser.addSavingsAccount(savingsAccount); + currentUser.addAccount(savingsAccount); break; case 3: console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow" + "much would you like to deposit?"); Integer input = console.getIntegerInput(":"); + InvestmentsAccount investmentsAccount = new InvestmentsAccount(currentUser, input + 0.0, "Investment Account#" + (currentUser.getAccountList().size() + 1)); + currentUser.addAccount(investmentsAccount); + break; } } diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index fdf71a9..8ff7c9f 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -16,7 +16,6 @@ public class User { private Integer userID; private ArrayList transactionHistory; TreeMap accountList; - TreeMap savingsAccountList; public User(String firstName, String lastName, Integer userID){ this.firstName = firstName; @@ -90,10 +89,6 @@ public void addAccount(Account account) { accountList.put(account.getAccountName(), account); } - public void addSavingsAccount(SavingsAccount account) { - savingsAccountList.put(account.getAccountName(), account); - } - public String displayHistory(){ StringBuilder sb = new StringBuilder(); for(String s : transactionHistory){ diff --git a/src/main/java/atmproject/accounts/InvestmentsAccount.java b/src/main/java/atmproject/accounts/InvestmentsAccount.java index c7023d4..aad0505 100644 --- a/src/main/java/atmproject/accounts/InvestmentsAccount.java +++ b/src/main/java/atmproject/accounts/InvestmentsAccount.java @@ -8,7 +8,7 @@ public class InvestmentsAccount extends SavingsAccount { private Double minimumDeposit; public InvestmentsAccount(User currentUser, Double balance, String accountName) { - super(currentUser, 0.0, null); + super(currentUser, 0.0, accountName); super.setInterestRate(0.001); this.minimumDeposit = 15000.0; } diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java index 1faf89c..455ff93 100644 --- a/src/main/java/atmproject/accounts/SavingsAccount.java +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -8,7 +8,7 @@ public class SavingsAccount extends Account { protected Double interestRate; public SavingsAccount(User currentUser, Double balance, String accountName) { - super(currentUser, 0.0, null); + super(currentUser, 0.0, accountName); this.interestRate = 0.0005; } From 11994065fb7e9e5b3435a1e1b6e38f926c7dffac Mon Sep 17 00:00:00 2001 From: Mike King Date: Sun, 10 Nov 2019 18:52:48 -0500 Subject: [PATCH 50/69] starting account test --- src/main/java/atmproject/AccountMenu.java | 42 ++++++++++++------- src/test/java/atmproject/AccountMenuTest.java | 19 ++++++--- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index fa88fbc..8c9d132 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -13,28 +13,42 @@ public class AccountMenu { public Account selectAccount(User user) { Map returnedMap = new LinkedHashMap<>(); - Account returnedAccount = null; - Integer counter = 1; - console.println("\n"); - for(String s : user.accountList.keySet()) { - console.println( "(" + counter + ")" + " - " + s); - returnedMap.put(counter, user.accountList.get(s)); - counter++; + Account returnedAccount = null; + Integer counter = 1; + printAndStoreAccounts(user, returnedMap, counter); + returnedAccount = getUserSelectedAccount(returnedMap, returnedAccount); - } + + return returnedAccount; + } + + public Account getUserSelectedAccount(Map returnedMap, Account returnedAccount) { while (returnedAccount == null) { console.println("\nPlease select an account."); Integer input = console.getIntegerInput(":"); - if (returnedMap.containsKey(input)) { - returnedAccount = returnedMap.get(input); - } else { - console.println("\nAccount does not exist. Try again: "); - } + returnedAccount = getUsersInput(returnedMap, returnedAccount, input); } + return returnedAccount; + } - + public Account getUsersInput(Map returnedMap, Account returnedAccount, Integer input) { + if (returnedMap.containsKey(input)) { + returnedAccount = returnedMap.get(input); + } else { + console.println("\nAccount does not exist. Try again: "); + } return returnedAccount; } + + public void printAndStoreAccounts(User user, Map returnedMap, Integer counter) { + console.println("\n"); + for (String s : user.accountList.keySet()) { + console.println("(" + counter + ")" + " - " + s); + returnedMap.put(counter, user.accountList.get(s)); + counter++; + + } + } } diff --git a/src/test/java/atmproject/AccountMenuTest.java b/src/test/java/atmproject/AccountMenuTest.java index e5ce896..b48d96d 100644 --- a/src/test/java/atmproject/AccountMenuTest.java +++ b/src/test/java/atmproject/AccountMenuTest.java @@ -5,12 +5,19 @@ import static org.junit.Assert.*; public class AccountMenuTest { - - /*@Test + @Test public void selectAccount() { - AccountMenu menu = new AccountMenu(); - User newUser = new User(" ", " ", 1); + } + + @Test + public void getUserSelectedAccount() { + } + + @Test + public void getUsersInput() { + } - menu.selectAccount(newUser); - }*/ + @Test + public void printAndStoreAccounts() { + } } \ No newline at end of file From b4a01c206dcff3aef43581ebe707d996968a2568 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 18:53:56 -0500 Subject: [PATCH 51/69] account testing done --- src/test/java/atmproject/LanguageTest.java | 2 +- .../java/atmproject/accounts/AccountTest.java | 40 +++++++++++-------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/test/java/atmproject/LanguageTest.java b/src/test/java/atmproject/LanguageTest.java index 61f604c..3262559 100644 --- a/src/test/java/atmproject/LanguageTest.java +++ b/src/test/java/atmproject/LanguageTest.java @@ -19,7 +19,7 @@ public void getLangTest() { public void getLangTest2() { Language language = new Language(); String expected = "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + - "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Return To Login Menu"; + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Exit ATM"; String actual = language.getLang(Language.LangKey.MAINMENU); Assert.assertEquals(expected,actual); } diff --git a/src/test/java/atmproject/accounts/AccountTest.java b/src/test/java/atmproject/accounts/AccountTest.java index bfe1ea5..bb1bd96 100644 --- a/src/test/java/atmproject/accounts/AccountTest.java +++ b/src/test/java/atmproject/accounts/AccountTest.java @@ -7,6 +7,8 @@ import org.junit.Test; import org.junit.rules.ExpectedException; +import java.security.InvalidParameterException; + import static org.junit.Assert.assertEquals; @@ -25,18 +27,6 @@ public void testA00() { assertEquals(10.0, a.getBalance(), 0.0001); } - /*@Test - public void testA01() { - Account a = new Account(0.0); - assertEquals(true, a.closeAccount()); - } - - @Test - public void testA02() { - Account a = new Account(10.0); - assertEquals(false, a.closeAccount()); - }*/ - @Test public void testA1() { Account a = new Account(0.0); @@ -120,7 +110,7 @@ public void setBalance() { } @Test - public void addToBalance() { + public void depositTest() { Account account = new Account(0.0); account.setBalance(100.0); Double input = 80.0; @@ -130,12 +120,17 @@ public void addToBalance() { Double expected = 180.0; Assert.assertEquals(expected,account.getBalance()); + } - + @Test (expected = InvalidParameterException.class) + public void depositTestFalse() throws InvalidParameterException { + Account account = new Account(0.0); + Double input = -80.0; + account.deposit(input); } @Test - public void subtractFromBalance() { + public void withdrawTest() { Account account = new Account(0.0); account.setBalance(100.0); Double input = 80.0; @@ -147,6 +142,13 @@ public void subtractFromBalance() { Assert.assertEquals(expected,account.getBalance()); } + @Test (expected = InvalidParameterException.class) + public void withdrawTestFalse() throws InvalidParameterException{ + Account account = new Account(0.0); + Double input = -80.0; + account.withdraw(input); + } + @Test public void getAccountName() { Account account = new Account(null,null,"testAccount"); @@ -165,5 +167,11 @@ public void setAccountName() { Assert.assertEquals(expected,account.getAccountName()); } - + @Test (expected = InvalidParameterException.class) + public void transferTestFalse() throws InvalidParameterException{ + Account account = new Account(0.0); + Account account2 = new Account(0.0); + Double input = -80.0; + account.transfer(account2, input); + } } From b6abecd0b6e2e3076ef6879b2b17428726200427 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 10 Nov 2019 19:12:21 -0500 Subject: [PATCH 52/69] account creation bug fix --- src/main/java/atmproject/ATM.java | 10 +++++++--- .../accounts/InvestmentsAccount.java | 20 +------------------ .../atmproject/accounts/SavingsAccount.java | 2 +- .../accounts/InvestmentsAccountTest.java | 4 ++-- 4 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 35fae59..00ad4ef 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -76,11 +76,15 @@ public void callCreateAccount(){ currentUser.addAccount(savingsAccount); break; case 3: - console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow" + + console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow " + "much would you like to deposit?"); Integer input = console.getIntegerInput(":"); - InvestmentsAccount investmentsAccount = new InvestmentsAccount(currentUser, input + 0.0, "Investment Account#" + (currentUser.getAccountList().size() + 1)); - currentUser.addAccount(investmentsAccount); + if(input > 14999) { + InvestmentsAccount investmentsAccount = new InvestmentsAccount(currentUser, (double)input, "Investment Account#" + (currentUser.getAccountList().size() + 1)); + currentUser.addAccount(investmentsAccount); + } else { + console.println("That is not enough of an initial deposit"); + } break; } diff --git a/src/main/java/atmproject/accounts/InvestmentsAccount.java b/src/main/java/atmproject/accounts/InvestmentsAccount.java index aad0505..af1849b 100644 --- a/src/main/java/atmproject/accounts/InvestmentsAccount.java +++ b/src/main/java/atmproject/accounts/InvestmentsAccount.java @@ -5,26 +5,8 @@ public class InvestmentsAccount extends SavingsAccount { - private Double minimumDeposit; - public InvestmentsAccount(User currentUser, Double balance, String accountName) { - super(currentUser, 0.0, accountName); + super(currentUser, balance, accountName); super.setInterestRate(0.001); - this.minimumDeposit = 15000.0; - } - - public Double getMinimumDeposit() { - return minimumDeposit; - } - - public void setMinimumDeposit(Double minimumDeposit) { - this.minimumDeposit = minimumDeposit; - } - - public String enoughForInitialBalance(Double input){ - if(input < this.minimumDeposit){ - return String.format("We apologize. Your starting balance must be at least $%f0", minimumDeposit); - } - return "Thank you! Enjoy your new investment account."; } } diff --git a/src/main/java/atmproject/accounts/SavingsAccount.java b/src/main/java/atmproject/accounts/SavingsAccount.java index 455ff93..302911b 100644 --- a/src/main/java/atmproject/accounts/SavingsAccount.java +++ b/src/main/java/atmproject/accounts/SavingsAccount.java @@ -8,7 +8,7 @@ public class SavingsAccount extends Account { protected Double interestRate; public SavingsAccount(User currentUser, Double balance, String accountName) { - super(currentUser, 0.0, accountName); + super(currentUser, balance, accountName); this.interestRate = 0.0005; } diff --git a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java index f766de7..07b8ed3 100644 --- a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java +++ b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java @@ -6,7 +6,7 @@ import static org.junit.Assert.*; public class InvestmentsAccountTest { - +/* @Test public void getMinimumDepositTest() { InvestmentsAccount investmentsAccount = new InvestmentsAccount(null,null,null); @@ -40,5 +40,5 @@ public void enoughForInitialBalanceTrueTest() { String actual = investmentsAccount.enoughForInitialBalance(input); Assert.assertEquals(expected,actual); } - +*/ } \ No newline at end of file From 6cef729be219365bdf00aaedfc035fbb5f95009a Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 19:19:03 -0500 Subject: [PATCH 53/69] testing --- src/main/java/atmproject/ATM.java | 6 +-- src/main/java/atmproject/UserLogin.java | 11 ++-- src/test/java/atmproject/UserLoginTest.java | 58 +++++++++++++++++++++ 3 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 src/test/java/atmproject/UserLoginTest.java diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 35fae59..ee7e774 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -23,7 +23,7 @@ public void runMainMenu(User currentUser) { setCurrentUser(currentUser); while (running) { console.println(language.getLang(Language.LangKey.MAINMENU)); - Integer userInput = console.getIntegerInput(":"); + Integer userInput = console.getIntegerInput("$"); mainMenuLogic(userInput); } } @@ -31,7 +31,7 @@ public void runMainMenu(User currentUser) { public String callDeposit() { Account chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to deposit?"); - Double userInput = console.getDoubleInput(":"); + Double userInput = console.getDoubleInput("$"); chosenAccount.deposit(userInput); return String.format("You deposited $%.2f to %s.", userInput, chosenAccount.getAccountName()); } @@ -39,7 +39,7 @@ public String callDeposit() { public String callWithdraw() { Account chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to withdraw?"); - Double userInput = console.getDoubleInput(":"); + Double userInput = console.getDoubleInput("$"); if(userInput <= chosenAccount.getBalance()){ chosenAccount.withdraw(userInput); return String.format("You withdrew $%.2f from %s.\n", userInput, chosenAccount.getAccountName()); diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index ca3fe35..9f57c37 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -45,16 +45,17 @@ public void assignUser() { } } - private String getFirstNameInput() { - console.println("Please enter your First name :"); - return console.getStringInput(":"); + protected String getFirstNameInput() { + console.println("Please enter your First name :"); + return console.getStringInput(":"); } - private String getLastNameInput() { + + protected String getLastNameInput() { console.println("Please enter Last name :"); return console.getStringInput(":"); } - private void setPin() { + protected void setPin() { Boolean isPINSet = false; while(!isPINSet) { console.println("Please select 4 digit PIN :"); diff --git a/src/test/java/atmproject/UserLoginTest.java b/src/test/java/atmproject/UserLoginTest.java new file mode 100644 index 0000000..27c809e --- /dev/null +++ b/src/test/java/atmproject/UserLoginTest.java @@ -0,0 +1,58 @@ +package atmproject; + +import org.junit.Assert; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +import static org.junit.Assert.*; + +public class UserLoginTest { + + @Test + public void getFirstName(){ + String input = "Shadow"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + UserLogin login = new UserLogin(); + String actual = login.getFirstNameInput(); + Assert.assertEquals(input,actual); + } + + @Test + public void getLastName(){ + String input = "???"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + UserLogin login = new UserLogin(); + String actual = login.getLastNameInput(); + Assert.assertEquals(input,actual); + } + + @Test + public void getUserInfo() { + } + + @Test + public void getLoginInfo() { + } + + @Test + public void createUser() { + } + + @Test + public void login() { + } + + @Test + public void startMainMenu() { + } + + @Test + public void exit() { + } +} \ No newline at end of file From ede5ecbac50e20b660e03b3bfeef5a928391985d Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sun, 10 Nov 2019 19:22:28 -0500 Subject: [PATCH 54/69] doing testing --- src/test/java/atmproject/ATMTest.java | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/test/java/atmproject/ATMTest.java b/src/test/java/atmproject/ATMTest.java index a0c9356..cef8f89 100644 --- a/src/test/java/atmproject/ATMTest.java +++ b/src/test/java/atmproject/ATMTest.java @@ -3,16 +3,29 @@ import org.junit.Assert; import org.junit.Test; +import java.io.ByteArrayInputStream; +import java.io.InputStream; + import static org.junit.Assert.*; public class ATMTest { @Test public void runMainMenu() { + } @Test public void callDeposit() { + ATM atm = new ATM(); + User user = new User("Chris","santana",1111); + + + + + + + } @Test @@ -25,6 +38,11 @@ public void callTransfer() { @Test public void checkBalance() { + ATM atm = new ATM(); + User currentUser = new User( null, null,null); + + + } @Test @@ -58,13 +76,9 @@ public void returnTOLoginMenu() { @Test public void mainMenuLogic() { - } - @Test - public void getCurrentUser() { - } - @Test - public void setCurrentUser() { } + + } \ No newline at end of file From 347ae888bc9b0f7dc02aa44b7b429dfa71ce185c Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 19:27:49 -0500 Subject: [PATCH 55/69] too much ATM --- src/main/java/atmproject/ATM.java | 4 ++-- src/main/java/atmproject/UserLogin.java | 11 ++++++++++- src/main/java/atmproject/UserRepository.java | 9 +-------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 146b30a..71cbef3 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -23,7 +23,7 @@ public void runMainMenu(User currentUser) { setCurrentUser(currentUser); while (running) { console.println(language.getLang(Language.LangKey.MAINMENU)); - Integer userInput = console.getIntegerInput("$"); + Integer userInput = console.getIntegerInput(":"); mainMenuLogic(userInput); } } @@ -54,7 +54,7 @@ public String callTransfer(){ return "ERROR: Incorrect account entry\n"; } else { console.println("How much would you like to transfer?"); - Double userInput = console.getDoubleInput(":"); + Double userInput = console.getDoubleInput("$"); chosenAccount.transfer(destinationAccount, userInput); if(userInput <= chosenAccount.getBalance()){ return String.format("You transferred $%.2f from %s to %s.\n",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName()); diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 9f57c37..6a67b15 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -1,5 +1,7 @@ package atmproject; +import atmproject.accounts.Account; + public class UserLogin { private User currentUser; private Console console = new Console(System.in, System.out); @@ -33,7 +35,7 @@ public void assignUser() { case 1: getUserInfo(); console.println("Hello, %s! Thank you for creating an account. Your user ID is %d.", currentUser.getFirstName(),currentUser.getUserID()); - userRepository.initialAccount(currentUser); + initialAccount(currentUser); break; case 2: getLoginInfo(); @@ -130,6 +132,13 @@ public void startMainMenu(){ ATM.runMainMenu(currentUser); } + + + public void initialAccount(User currentUser){ + Account account = new Account(currentUser, 0.0, "Checkings Account#" + (currentUser.getAccountList().size() + 1)); + currentUser.addAccount(account); + } + public void exit(){ Integer userInput = 0; console.println("Are you sure you want to Exit?\n(1) - Yes\n(2) - No\n"); diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java index 4926af0..ff6f7ad 100644 --- a/src/main/java/atmproject/UserRepository.java +++ b/src/main/java/atmproject/UserRepository.java @@ -29,19 +29,12 @@ public Integer createNewUserID(){ public void saveUser(User user, Integer userID){ repo.put(String.format("%04d",userID),user); } - public User getUser(String userID){ - return repo.get(userID); - } public User getUser(Integer userID){ return repo.get(String.format("%4d",userID)); } + public int getIDNums() { return idNums; } - - public void initialAccount(User currentUser){ - Account account = new Account(currentUser, 0.0, "Checkings Account#" + (currentUser.getAccountList().size() + 1)); - currentUser.addAccount(account); - } } From 7b0972b69a3eb4d441910f07bc6d832dea5c71d6 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 19:46:19 -0500 Subject: [PATCH 56/69] added interest --- src/main/java/atmproject/ATM.java | 85 +++++++++++++++---------------- 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 71cbef3..5945aec 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -28,6 +28,43 @@ public void runMainMenu(User currentUser) { } } + public void mainMenuLogic(Integer userInput){ + switch (userInput) { + case 1: + String transaction = callDeposit(); + console.println(transaction); + currentUser.addToHistory(transaction + "\n"); + break; + case 2: + transaction = callWithdraw(); + console.println(transaction); + currentUser.addToHistory(transaction + "\n"); + break; + case 3: + if (currentUser.getAccountList().size() >= 2) { + transaction = callTransfer(); + console.println(transaction); + currentUser.addToHistory(transaction + "\n"); + } else { + console.println("ERROR: Not enough accounts to transfer money. Please create a new one."); + } + break; + case 4: + console.println(checkBalance()); + break; + case 5: + console.println(displayHistory(currentUser)); + break; + case 6: + callCreateAccount(); + break; + case 7: + returnToLoginMenu(); + break; + } + giveInterest(); + } + public String callDeposit() { Account chosenAccount = accountMenu.selectAccount(currentUser); console.println("How much would you like to deposit?"); @@ -106,48 +143,14 @@ public void returnToLoginMenu() { running = false; } - - - public void mainMenuLogic(Integer userInput){ - switch (userInput) { - case 1: - String transaction = callDeposit(); - console.println(transaction); - currentUser.addToHistory(transaction + "\n"); - break; - case 2: - transaction = callWithdraw(); - console.println(transaction); - currentUser.addToHistory(transaction + "\n"); - break; - case 3: - if (currentUser.getAccountList().size() >= 2) { - transaction = callTransfer(); - console.println(transaction); - currentUser.addToHistory(transaction + "\n"); - } else { - console.println("ERROR: Not enough accounts to transfer money. Please create a new one."); - } - break; - case 4: - console.println(checkBalance()); - break; - case 5: - console.println(displayHistory(currentUser)); - break; - case 6: - callCreateAccount(); - break; - case 7: - returnToLoginMenu(); - break; + public void giveInterest(){ + for(String name : currentUser.getAccountList().keySet()){ + if(currentUser.getAccountList().get(name) instanceof SavingsAccount){ + ((SavingsAccount) currentUser.getAccountList().get(name)).addInterest(); + } } } - public User getCurrentUser() { - return currentUser; - } - public void setCurrentUser(User currentUser) { this.currentUser = currentUser; } @@ -155,8 +158,4 @@ public void setCurrentUser(User currentUser) { public boolean isRunning() { return running; } - - public void setRunning(boolean running) { - this.running = running; - } } \ No newline at end of file From f504942609a4747f292c585c260835912a739959 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 19:55:39 -0500 Subject: [PATCH 57/69] makin' in pretty --- src/main/java/atmproject/ATM.java | 22 +++++++++++++--------- src/main/java/atmproject/User.java | 5 +++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 5945aec..9728d2d 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -113,20 +113,24 @@ public void callCreateAccount(){ currentUser.addAccount(savingsAccount); break; case 3: - console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow " + - "much would you like to deposit?"); - Integer input = console.getIntegerInput(":"); - if(input > 14999) { - InvestmentsAccount investmentsAccount = new InvestmentsAccount(currentUser, (double)input, "Investment Account#" + (currentUser.getAccountList().size() + 1)); - currentUser.addAccount(investmentsAccount); - } else { - console.println("That is not enough of an initial deposit"); - } + createInvestmentAccount(); break; } } + private void createInvestmentAccount() { + console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow " + + "much would you like to deposit?"); + Integer input = console.getIntegerInput(":"); + if(input > 14999) { + InvestmentsAccount investmentsAccount = new InvestmentsAccount(currentUser, (double)input, "Investment Account#" + (currentUser.getAccountList().size() + 1)); + currentUser.addAccount(investmentsAccount); + } else { + console.println("That is not enough of an initial deposit"); + } + } + public String checkBalance() { Account chosenAccount = accountMenu.selectAccount(currentUser); return String.format("The balance in %s is $%.2f\n", chosenAccount.getAccountName(), chosenAccount.getBalance()); diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index 8ff7c9f..fdf71a9 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -16,6 +16,7 @@ public class User { private Integer userID; private ArrayList transactionHistory; TreeMap accountList; + TreeMap savingsAccountList; public User(String firstName, String lastName, Integer userID){ this.firstName = firstName; @@ -89,6 +90,10 @@ public void addAccount(Account account) { accountList.put(account.getAccountName(), account); } + public void addSavingsAccount(SavingsAccount account) { + savingsAccountList.put(account.getAccountName(), account); + } + public String displayHistory(){ StringBuilder sb = new StringBuilder(); for(String s : transactionHistory){ From 4d8e48eeaab1976a3cd16e03c6501c6a483ac6c6 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 20:07:15 -0500 Subject: [PATCH 58/69] further testing --- src/main/java/atmproject/User.java | 4 ---- src/test/java/atmproject/UserTest.java | 3 ++- .../accounts/InvestmentsAccountTest.java | 17 ++++++++++++++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index fdf71a9..c6e3353 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -90,10 +90,6 @@ public void addAccount(Account account) { accountList.put(account.getAccountName(), account); } - public void addSavingsAccount(SavingsAccount account) { - savingsAccountList.put(account.getAccountName(), account); - } - public String displayHistory(){ StringBuilder sb = new StringBuilder(); for(String s : transactionHistory){ diff --git a/src/test/java/atmproject/UserTest.java b/src/test/java/atmproject/UserTest.java index 914ec8a..2a711ce 100644 --- a/src/test/java/atmproject/UserTest.java +++ b/src/test/java/atmproject/UserTest.java @@ -1,6 +1,7 @@ package atmproject; import atmproject.accounts.Account; +import atmproject.accounts.SavingsAccount; import org.junit.Assert; import org.junit.Test; @@ -125,7 +126,7 @@ public void addAccount() { @Test public void removeAccount() { User currentUser = new User("Shadow", "???", 3454); - Account account = new Account(currentUser, 500.0, "Checking Account 1"); + Account account = new Account(currentUser, 500.0, "Savings Account 1"); currentUser.addAccount(account); currentUser.removeAccount(account); Assert.assertTrue(currentUser.getAccountList().isEmpty()); diff --git a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java index 07b8ed3..98b8508 100644 --- a/src/test/java/atmproject/accounts/InvestmentsAccountTest.java +++ b/src/test/java/atmproject/accounts/InvestmentsAccountTest.java @@ -1,13 +1,28 @@ package atmproject.accounts; +import atmproject.User; import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.*; public class InvestmentsAccountTest { -/* + @Test + public void constructorTest(){ + User currentUser = new User("Shadow",null,null); + Double expectedBalance = 15000.0; + String expectedName = "Investments Account 1"; + InvestmentsAccount account = new InvestmentsAccount(currentUser, expectedBalance, expectedName); + + Double actualBalance = account.getBalance(); + String actualName = account.getAccountName(); + + Assert.assertEquals(expectedBalance,actualBalance); + Assert.assertEquals(expectedName,actualName); + } + +/* @Test public void getMinimumDepositTest() { InvestmentsAccount investmentsAccount = new InvestmentsAccount(null,null,null); Double expected = 15000.0; From 14211df995bddad2b1c40ccfb30a82718f080d14 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 20:17:47 -0500 Subject: [PATCH 59/69] added remove account method --- src/main/java/atmproject/ATM.java | 12 ++++++++++++ src/main/java/atmproject/Language.java | 3 ++- src/main/java/atmproject/User.java | 3 ++- src/test/java/atmproject/LanguageTest.java | 3 ++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 9728d2d..34cd4f5 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -59,6 +59,9 @@ public void mainMenuLogic(Integer userInput){ callCreateAccount(); break; case 7: + callRemoveAccount(); + break; + case 8: returnToLoginMenu(); break; } @@ -119,6 +122,15 @@ public void callCreateAccount(){ } } + public void callRemoveAccount() { + Account chosenAccount = accountMenu.selectAccount(currentUser); + if(currentUser.getAccountList().containsValue(chosenAccount)){ + currentUser.removeAccount(chosenAccount); + } else { + console.println("ERROR: Chosen account not found."); + } + } + private void createInvestmentAccount() { console.println("At this bank, you'll need an initial deposit of $15,000 to open an investment account.\nHow " + "much would you like to deposit?"); diff --git a/src/main/java/atmproject/Language.java b/src/main/java/atmproject/Language.java index a96032c..bbc9aca 100644 --- a/src/main/java/atmproject/Language.java +++ b/src/main/java/atmproject/Language.java @@ -14,7 +14,8 @@ public Language() { langMap.put(LangKey.EXAMPLE1, "This is an example"); langMap.put(LangKey.EXAMPLE2, "This is another Example"); langMap.put(LangKey.MAINMENU, "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + - "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Exit ATM"); + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create New Account\n" + "(7) - Remove Account\n" + + "(8) - Exit ATM"); } diff --git a/src/main/java/atmproject/User.java b/src/main/java/atmproject/User.java index c6e3353..cd6bf48 100644 --- a/src/main/java/atmproject/User.java +++ b/src/main/java/atmproject/User.java @@ -82,8 +82,9 @@ public void addToHistory(String transaction){ public void removeAccount(Account account){ if (account.getBalance() > 0.0){ console.println("Please empty your account before attempting to close."); + } else { + accountList.remove(account.getAccountName()); } - accountList.remove(account.getAccountName()); } public void addAccount(Account account) { diff --git a/src/test/java/atmproject/LanguageTest.java b/src/test/java/atmproject/LanguageTest.java index 3262559..b4ccce0 100644 --- a/src/test/java/atmproject/LanguageTest.java +++ b/src/test/java/atmproject/LanguageTest.java @@ -19,7 +19,8 @@ public void getLangTest() { public void getLangTest2() { Language language = new Language(); String expected = "Please select your option:\n" + "(1) - Deposit\n" + "(2) - Withdraw\n" + - "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create new Account\n" + "(7) - Exit ATM"; + "(3) - Transfer\n" + "(4) - Balance\n" + "(5) - View History\n" + "(6) - Create New Account\n" + "(7) - Remove Account\n" + + "(8) - Exit ATM"; String actual = language.getLang(Language.LangKey.MAINMENU); Assert.assertEquals(expected,actual); } From 20ad136f889b63f15a2f24edf067e64dbacc61c9 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 20:25:28 -0500 Subject: [PATCH 60/69] new test --- src/main/java/atmproject/UserLogin.java | 1 - src/test/java/atmproject/UserLoginTest.java | 11 ++++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 6a67b15..6b5e04b 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -133,7 +133,6 @@ public void startMainMenu(){ } - public void initialAccount(User currentUser){ Account account = new Account(currentUser, 0.0, "Checkings Account#" + (currentUser.getAccountList().size() + 1)); currentUser.addAccount(account); diff --git a/src/test/java/atmproject/UserLoginTest.java b/src/test/java/atmproject/UserLoginTest.java index 27c809e..5dc849f 100644 --- a/src/test/java/atmproject/UserLoginTest.java +++ b/src/test/java/atmproject/UserLoginTest.java @@ -45,14 +45,15 @@ public void createUser() { } @Test - public void login() { - } + public void initialAccountTest(){ + UserLogin login = new UserLogin(); + User currentUser = new User(null,null,null); + login.initialAccount(currentUser); - @Test - public void startMainMenu() { + Assert.assertTrue(currentUser.getAccountList().containsKey("Checkings Account#1")); } @Test - public void exit() { + public void login() { } } \ No newline at end of file From 77572e692740517f42bd0b10201419b570f3b5a0 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 20:28:52 -0500 Subject: [PATCH 61/69] wrapping up for the night --- src/test/java/atmproject/UserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/atmproject/UserTest.java b/src/test/java/atmproject/UserTest.java index 2a711ce..c0eeee7 100644 --- a/src/test/java/atmproject/UserTest.java +++ b/src/test/java/atmproject/UserTest.java @@ -129,7 +129,7 @@ public void removeAccount() { Account account = new Account(currentUser, 500.0, "Savings Account 1"); currentUser.addAccount(account); currentUser.removeAccount(account); - Assert.assertTrue(currentUser.getAccountList().isEmpty()); + assertEquals(1, currentUser.getAccountList().size()); } @Test From 53cc6e4ebc60069536336f912c7ef7ec2dbc2a18 Mon Sep 17 00:00:00 2001 From: Mike King Date: Sun, 10 Nov 2019 20:33:09 -0500 Subject: [PATCH 62/69] did a test for casino --- src/main/java/atmproject/AccountMenu.java | 4 ++-- src/main/java/atmproject/UserRepository.java | 4 ++-- src/test/java/atmproject/AccountMenuTest.java | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/java/atmproject/AccountMenu.java b/src/main/java/atmproject/AccountMenu.java index 8c9d132..604009b 100644 --- a/src/main/java/atmproject/AccountMenu.java +++ b/src/main/java/atmproject/AccountMenu.java @@ -8,12 +8,12 @@ import java.util.Map; public class AccountMenu { - Account account; + Account returnedAccount; Console console = new Console(System.in, System.out); public Account selectAccount(User user) { Map returnedMap = new LinkedHashMap<>(); - Account returnedAccount = null; + returnedAccount = null; Integer counter = 1; printAndStoreAccounts(user, returnedMap, counter); returnedAccount = getUserSelectedAccount(returnedMap, returnedAccount); diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java index 4926af0..3b0fe0c 100644 --- a/src/main/java/atmproject/UserRepository.java +++ b/src/main/java/atmproject/UserRepository.java @@ -8,12 +8,12 @@ public class UserRepository { // Singleton Eager Initialization - private static final UserRepository userRepository = new UserRepository(); + protected static final UserRepository userRepository = new UserRepository(); private int idNums; private Map repo; - private UserRepository(){ + protected UserRepository(){ idNums = 1000; repo = new TreeMap(); } diff --git a/src/test/java/atmproject/AccountMenuTest.java b/src/test/java/atmproject/AccountMenuTest.java index b48d96d..c9cec73 100644 --- a/src/test/java/atmproject/AccountMenuTest.java +++ b/src/test/java/atmproject/AccountMenuTest.java @@ -2,11 +2,31 @@ import org.junit.Test; +import java.io.ByteArrayInputStream; +import java.io.InputStream; + import static org.junit.Assert.*; public class AccountMenuTest { @Test public void selectAccount() { + String input = "1"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + AccountMenu accountmenu = new AccountMenu(); + ATM atm = new ATM(); + UserRepository userRepository = new UserRepository(); + User user = new User("mich", "kin", 1000); + + userRepository.initialAccount(user); + + atm.setCurrentUser(user); + + + accountmenu.selectAccount(user); + Double actual = accountmenu.returnedAccount.getBalance(); + assertTrue(actual == 0.0); } @Test From 95a89724c6103e3f7baa7503dc1b7131ce8e8b14 Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sun, 10 Nov 2019 20:33:11 -0500 Subject: [PATCH 63/69] done tests for atm --- src/main/java/atmproject/UserRepository.java | 2 +- src/test/java/atmproject/ATMTest.java | 49 ++++++++++++++++++-- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/main/java/atmproject/UserRepository.java b/src/main/java/atmproject/UserRepository.java index 4926af0..b0bfc75 100644 --- a/src/main/java/atmproject/UserRepository.java +++ b/src/main/java/atmproject/UserRepository.java @@ -13,7 +13,7 @@ public class UserRepository { private int idNums; private Map repo; - private UserRepository(){ + protected UserRepository(){ idNums = 1000; repo = new TreeMap(); } diff --git a/src/test/java/atmproject/ATMTest.java b/src/test/java/atmproject/ATMTest.java index cef8f89..e91b3da 100644 --- a/src/test/java/atmproject/ATMTest.java +++ b/src/test/java/atmproject/ATMTest.java @@ -12,15 +12,43 @@ public class ATMTest { @Test public void runMainMenu() { + String input = "7"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + ATM atm = new ATM(); + User currentUser = new User("Jow","Byeden",0000); + + atm.runMainMenu(currentUser); + + assertFalse(atm.isRunning()); } @Test public void callDeposit() { + String input = "1"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + ATM atm = new ATM(); - User user = new User("Chris","santana",1111); + UserRepository userRepository = new UserRepository(); + User currentUser = new User("Jow","Byeden",0000); + userRepository.initialAccount(currentUser); + atm.setCurrentUser(currentUser); + input = "1.0"; + in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + atm.callDeposit(); + + + + Double actual = currentUser.getAccountList().get("Checkings Account#1").getBalance(); + Double expected = 1.0; + + Assert.assertEquals(actual,expected); @@ -38,8 +66,20 @@ public void callTransfer() { @Test public void checkBalance() { + ATM atm = new ATM(); - User currentUser = new User( null, null,null); + UserRepository userRepository = new UserRepository(); + User currentUser = new User("Jow","Byeden",0000); + + userRepository.initialAccount(currentUser); + atm.setCurrentUser(currentUser); + + + + Double actual = currentUser.getAccountList().get("Checkings Account#1").getBalance(); + Double expected = 0.0; + + Assert.assertEquals(actual,expected); @@ -74,11 +114,10 @@ public void returnTOLoginMenu() { } - @Test - public void mainMenuLogic() { - } + + } \ No newline at end of file From 2a0dc1113a9b98caf7df0c6cbd59fdc6fddd05ed Mon Sep 17 00:00:00 2001 From: Mike King Date: Sun, 10 Nov 2019 20:54:39 -0500 Subject: [PATCH 64/69] merging --- src/test/java/atmproject/AccountMenuTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/atmproject/AccountMenuTest.java b/src/test/java/atmproject/AccountMenuTest.java index c9cec73..1db407e 100644 --- a/src/test/java/atmproject/AccountMenuTest.java +++ b/src/test/java/atmproject/AccountMenuTest.java @@ -16,10 +16,10 @@ public void selectAccount() { AccountMenu accountmenu = new AccountMenu(); ATM atm = new ATM(); - UserRepository userRepository = new UserRepository(); + UserLogin userLogin = new UserLogin(); User user = new User("mich", "kin", 1000); - userRepository.initialAccount(user); + userLogin.initialAccount(user); atm.setCurrentUser(user); From 354385a042f818941987cf30134492babc96697f Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sun, 10 Nov 2019 20:55:13 -0500 Subject: [PATCH 65/69] pusshing --- src/test/java/atmproject/ATMTest.java | 46 ++------------------------- 1 file changed, 2 insertions(+), 44 deletions(-) diff --git a/src/test/java/atmproject/ATMTest.java b/src/test/java/atmproject/ATMTest.java index e91b3da..489a54e 100644 --- a/src/test/java/atmproject/ATMTest.java +++ b/src/test/java/atmproject/ATMTest.java @@ -25,53 +25,14 @@ public void runMainMenu() { } - @Test - public void callDeposit() { - String input = "1"; - InputStream in = new ByteArrayInputStream(input.getBytes()); - System.setIn(in); - - ATM atm = new ATM(); - UserRepository userRepository = new UserRepository(); - User currentUser = new User("Jow","Byeden",0000); - - userRepository.initialAccount(currentUser); - atm.setCurrentUser(currentUser); - - input = "1.0"; - in = new ByteArrayInputStream(input.getBytes()); - System.setIn(in); - atm.callDeposit(); - - - - Double actual = currentUser.getAccountList().get("Checkings Account#1").getBalance(); - Double expected = 1.0; - - Assert.assertEquals(actual,expected); - - - - - - } - - @Test - public void callWithdraw() { - } - - @Test - public void callTransfer() { - } - @Test public void checkBalance() { ATM atm = new ATM(); - UserRepository userRepository = new UserRepository(); + UserLogin userLogin = new UserLogin(); User currentUser = new User("Jow","Byeden",0000); - userRepository.initialAccount(currentUser); + userLogin.initialAccount(currentUser); atm.setCurrentUser(currentUser); @@ -81,8 +42,6 @@ public void checkBalance() { Assert.assertEquals(actual,expected); - - } @Test @@ -119,5 +78,4 @@ public void returnTOLoginMenu() { - } \ No newline at end of file From ddbfcc41f5f57e9b4f1eb681f11f452b21f5a06a Mon Sep 17 00:00:00 2001 From: Christopher Santana Date: Sun, 10 Nov 2019 20:59:20 -0500 Subject: [PATCH 66/69] added test --- src/test/java/atmproject/ATMTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/atmproject/ATMTest.java b/src/test/java/atmproject/ATMTest.java index 489a54e..a2724d6 100644 --- a/src/test/java/atmproject/ATMTest.java +++ b/src/test/java/atmproject/ATMTest.java @@ -12,7 +12,7 @@ public class ATMTest { @Test public void runMainMenu() { - String input = "7"; + String input = "8"; InputStream in = new ByteArrayInputStream(input.getBytes()); System.setIn(in); From 19bb188890adc83e56d14aaa7f49602f9615ea21 Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 21:42:16 -0500 Subject: [PATCH 67/69] pulling --- src/test/java/atmproject/UserLoginTest.java | 5 +++++ src/test/java/atmproject/UserTest.java | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/java/atmproject/UserLoginTest.java b/src/test/java/atmproject/UserLoginTest.java index 5dc849f..1d3798a 100644 --- a/src/test/java/atmproject/UserLoginTest.java +++ b/src/test/java/atmproject/UserLoginTest.java @@ -40,6 +40,11 @@ public void getUserInfo() { public void getLoginInfo() { } + @Test + public void getPINInputTest(){ + + } + @Test public void createUser() { } diff --git a/src/test/java/atmproject/UserTest.java b/src/test/java/atmproject/UserTest.java index 2a711ce..fa52883 100644 --- a/src/test/java/atmproject/UserTest.java +++ b/src/test/java/atmproject/UserTest.java @@ -127,7 +127,6 @@ public void addAccount() { public void removeAccount() { User currentUser = new User("Shadow", "???", 3454); Account account = new Account(currentUser, 500.0, "Savings Account 1"); - currentUser.addAccount(account); currentUser.removeAccount(account); Assert.assertTrue(currentUser.getAccountList().isEmpty()); } @@ -141,7 +140,7 @@ public void displayHistory() { currentUser.addToHistory(transaction); currentUser.addToHistory(transaction2); currentUser.addToHistory(transaction3); - Assert.assertTrue(currentUser.displayHistory().contains(transaction)); + Assert.assertTrue(currentUser.displayHistory().contains(transaction2)); } From a272b4c2733d42a0ae8945b3f89fff2efa0db19c Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Sun, 10 Nov 2019 22:17:01 -0500 Subject: [PATCH 68/69] tests --- src/main/java/atmproject/UserLogin.java | 6 ++--- src/test/java/atmproject/UserLoginTest.java | 28 +++++++++++++++++++++ src/test/java/atmproject/UserTest.java | 10 ++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/main/java/atmproject/UserLogin.java b/src/main/java/atmproject/UserLogin.java index 6b5e04b..ef3c389 100644 --- a/src/main/java/atmproject/UserLogin.java +++ b/src/main/java/atmproject/UserLogin.java @@ -76,18 +76,18 @@ public void getUserInfo(){ setPin(); } - private Integer getUserIDInput(){ + protected Integer getUserIDInput(){ console.println("Please enter your 4 digit Account Number :"); return console.getIntegerInput(":"); } - private Integer getPINInput(){ + protected Integer getPINInput(){ console.println("Please enter your PIN :"); return console.getIntegerInput(":"); } - private Integer tryAgainInput(){ + protected Integer tryAgainInput(){ console.println("User Info doesn't match. Try again?\n(1) - Yes\n(2) - No\n"); return console.getIntegerInput(":"); } diff --git a/src/test/java/atmproject/UserLoginTest.java b/src/test/java/atmproject/UserLoginTest.java index 1d3798a..b63038f 100644 --- a/src/test/java/atmproject/UserLoginTest.java +++ b/src/test/java/atmproject/UserLoginTest.java @@ -40,9 +40,37 @@ public void getUserInfo() { public void getLoginInfo() { } + @Test + public void getUserIDinput(){ + String input = "3453"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + UserLogin login = new UserLogin(); + String actual = login.getUserIDInput().toString(); + Assert.assertEquals(input,actual); + } + @Test public void getPINInputTest(){ + String input = "3453"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + UserLogin login = new UserLogin(); + String actual = login.getPINInput().toString(); + Assert.assertEquals(input,actual); + } + + @Test + public void tryAgaininput(){ + String input = "1"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + UserLogin login = new UserLogin(); + String actual = login.tryAgainInput().toString(); + Assert.assertEquals(input,actual); } @Test diff --git a/src/test/java/atmproject/UserTest.java b/src/test/java/atmproject/UserTest.java index f45e220..c283447 100644 --- a/src/test/java/atmproject/UserTest.java +++ b/src/test/java/atmproject/UserTest.java @@ -127,10 +127,20 @@ public void addAccount() { public void removeAccount() { User currentUser = new User("Shadow", "???", 3454); Account account = new Account(currentUser, 500.0, "Savings Account 1"); + currentUser.addAccount(account); currentUser.removeAccount(account); assertEquals(1, currentUser.getAccountList().size()); } + @Test + public void removeAccount2() { + User currentUser = new User("Shadow", "???", 3454); + Account account = new Account(currentUser, 0.0, "Savings Account 1"); + currentUser.addAccount(account); + currentUser.removeAccount(account); + Assert.assertTrue(currentUser.getAccountList().isEmpty()); + } + @Test public void displayHistory() { User currentUser = new User("Shadow", "???", 3454); From 39d258c2ada7a797c1564f35ba67d7365266bace Mon Sep 17 00:00:00 2001 From: Ron Duwell Date: Mon, 11 Nov 2019 08:03:12 -0500 Subject: [PATCH 69/69] fixed transfer bug --- src/main/java/atmproject/ATM.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/atmproject/ATM.java b/src/main/java/atmproject/ATM.java index 34cd4f5..11ce5bb 100644 --- a/src/main/java/atmproject/ATM.java +++ b/src/main/java/atmproject/ATM.java @@ -95,8 +95,8 @@ public String callTransfer(){ } else { console.println("How much would you like to transfer?"); Double userInput = console.getDoubleInput("$"); - chosenAccount.transfer(destinationAccount, userInput); if(userInput <= chosenAccount.getBalance()){ + chosenAccount.transfer(destinationAccount, userInput); return String.format("You transferred $%.2f from %s to %s.\n",userInput, chosenAccount.getAccountName(), destinationAccount.getAccountName()); } return "ERROR: Insufficient funds for transfer.\n";