diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..3b3b070
Binary files /dev/null and b/.DS_Store differ
diff --git a/pom.xml b/pom.xml
index 541b012..d296103 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,6 +5,14 @@
com.almasb
CashMachine
0.1-SNAPSHOT
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
jar
diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000..5f6f01e
Binary files /dev/null and b/src/.DS_Store differ
diff --git a/src/main/java/rocks/zipcode/atm/ActionResult.java b/src/main/java/rocks/zipcode/atm/ActionResult.java
index 8d41185..420a47d 100644
--- a/src/main/java/rocks/zipcode/atm/ActionResult.java
+++ b/src/main/java/rocks/zipcode/atm/ActionResult.java
@@ -1,38 +1,38 @@
-package rocks.zipcode.atm;
-
-/**
- * @author ZipCodeWilmington
- */
-public class ActionResult {
-
- private T data;
- private String errorMessage;
-
- private ActionResult(T data) {
- this.data = data;
- }
-
- private ActionResult(String errorMessage) {
- this.errorMessage = errorMessage;
- }
-
- public T getData() {
- return data;
- }
-
- public String getErrorMessage() {
- return errorMessage;
- }
-
- public boolean isSuccess() {
- return data != null;
- }
-
- public static ActionResult success(E data) {
- return new ActionResult(data);
- }
-
- public static ActionResult fail(String errorMessage) {
- return new ActionResult(errorMessage);
- }
-}
+package rocks.zipcode.atm;
+
+/**
+ * @author ZipCodeWilmington
+ */
+public class ActionResult {
+
+ private T data;
+ private String errorMessage;
+
+ private ActionResult(T data) {
+ this.data = data;
+ }
+
+ private ActionResult(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ public boolean isSuccess() {
+ return data != null;
+ }
+
+ public static ActionResult success(E data) {
+ return new ActionResult(data);
+ }
+
+ public static ActionResult fail(String errorMessage) {
+ return new ActionResult(errorMessage);
+ }
+}
diff --git a/src/main/java/rocks/zipcode/atm/CashMachine.java b/src/main/java/rocks/zipcode/atm/CashMachine.java
index d6f8f74..838ec2d 100644
--- a/src/main/java/rocks/zipcode/atm/CashMachine.java
+++ b/src/main/java/rocks/zipcode/atm/CashMachine.java
@@ -1,75 +1,80 @@
-package rocks.zipcode.atm;
-
-import rocks.zipcode.atm.bank.AccountData;
-import rocks.zipcode.atm.bank.Bank;
-
-import java.util.function.Consumer;
-import java.util.function.Supplier;
-
-/**
- * @author ZipCodeWilmington
- */
-public class CashMachine {
-
- private final Bank bank;
- private AccountData accountData = null;
-
- public CashMachine(Bank bank) {
- this.bank = bank;
- }
-
- private Consumer update = data -> {
- accountData = data;
- };
-
- public void login(int id) {
- tryCall(
- () -> bank.getAccountById(id),
- update
- );
- }
-
- public void deposit(int amount) {
- if (accountData != null) {
- tryCall(
- () -> bank.deposit(accountData, amount),
- update
- );
- }
- }
-
- public void withdraw(int amount) {
- if (accountData != null) {
- tryCall(
- () -> bank.withdraw(accountData, amount),
- update
- );
- }
- }
-
- public void exit() {
- if (accountData != null) {
- accountData = null;
- }
- }
-
- @Override
- public String toString() {
- return accountData != null ? accountData.toString() : "Try account 1000 or 2000 and click submit.";
- }
-
- private void tryCall(Supplier > action, Consumer postAction) {
- try {
- ActionResult result = action.get();
- if (result.isSuccess()) {
- T data = result.getData();
- postAction.accept(data);
- } else {
- String errorMessage = result.getErrorMessage();
- throw new RuntimeException(errorMessage);
- }
- } catch (Exception e) {
- System.out.println("Error: " + e.getMessage());
- }
- }
-}
+package rocks.zipcode.atm;
+
+import javafx.scene.control.TextField;
+import rocks.zipcode.atm.bank.AccountData;
+import rocks.zipcode.atm.bank.Bank;
+
+import java.util.function.Consumer;
+import java.util.function.Supplier;
+
+/**
+ * @author ZipCodeWilmington
+ */
+public class CashMachine {
+
+ private final Bank bank;
+ private AccountData accountData = null;
+
+ public CashMachine(Bank bank) {
+ this.bank = bank;
+ }
+
+ private Consumer update = data -> {
+ accountData = data;
+ };
+
+ public Object login(int id) {
+ tryCall(
+ () -> bank.getAccountById(id),
+ update
+ );
+ return null;
+ }
+
+ public void deposit(Float amount) {
+ if (accountData != null) {
+ tryCall(
+ () -> bank.deposit(accountData, amount),
+ update
+ );
+ }
+ }
+
+ public void withdraw(Float amount) {
+ if (accountData != null) {
+ tryCall(
+ () -> bank.withdraw(accountData,amount),
+ update
+
+ );
+ }
+ }
+
+ public void exit() {
+ if (accountData != null) {
+ accountData = null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return accountData != null ? accountData.toString() : "Cleared";
+ }
+
+ private void tryCall(Supplier > action, Consumer postAction) {
+ try {
+ ActionResult result = action.get();
+ if (result.isSuccess()) {
+ T data = result.getData();
+ postAction.accept(data);
+ } else {
+ String errorMessage = result.getErrorMessage();
+ throw new RuntimeException(errorMessage);
+ }
+ } catch (Exception e) {
+ System.out.println("Error: " + e.getMessage());
+ }
+ }
+
+}
+
diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java
index c0fada8..b8a4db9 100644
--- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java
+++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java
@@ -1,78 +1,178 @@
-package rocks.zipcode.atm;
-
-import rocks.zipcode.atm.bank.Bank;
-import javafx.application.Application;
-import javafx.scene.Parent;
-import javafx.scene.Scene;
-import javafx.scene.control.Button;
-import javafx.scene.control.TextArea;
-import javafx.scene.control.TextField;
-import javafx.scene.layout.VBox;
-import javafx.stage.Stage;
-import javafx.scene.layout.FlowPane;
-
-/**
- * @author ZipCodeWilmington
- */
-public class CashMachineApp extends Application {
-
- private TextField field = new TextField();
- private CashMachine cashMachine = new CashMachine(new Bank());
-
- private Parent createContent() {
- VBox vbox = new VBox(10);
- vbox.setPrefSize(600, 600);
-
- TextArea areaInfo = new TextArea();
-
- Button btnSubmit = new Button("Set Account ID");
- btnSubmit.setOnAction(e -> {
- int id = Integer.parseInt(field.getText());
- cashMachine.login(id);
-
- areaInfo.setText(cashMachine.toString());
- });
-
- Button btnDeposit = new Button("Deposit");
- btnDeposit.setOnAction(e -> {
- int amount = Integer.parseInt(field.getText());
- cashMachine.deposit(amount);
-
- areaInfo.setText(cashMachine.toString());
- });
-
- Button btnWithdraw = new Button("Withdraw");
- btnWithdraw.setOnAction(e -> {
- int amount = Integer.parseInt(field.getText());
- cashMachine.withdraw(amount);
-
- areaInfo.setText(cashMachine.toString());
- });
-
- Button btnExit = new Button("Exit");
- btnExit.setOnAction(e -> {
- cashMachine.exit();
-
- areaInfo.setText(cashMachine.toString());
- });
-
- FlowPane flowpane = new FlowPane();
-
- flowpane.getChildren().add(btnSubmit);
- flowpane.getChildren().add(btnDeposit);
- flowpane.getChildren().add(btnWithdraw);
- flowpane.getChildren().add(btnExit);
- vbox.getChildren().addAll(field, flowpane, areaInfo);
- return vbox;
- }
-
- @Override
- public void start(Stage stage) throws Exception {
- stage.setScene(new Scene(createContent()));
- stage.show();
- }
-
- public static void main(String[] args) {
- launch(args);
- }
-}
+package rocks.zipcode.atm;
+import javafx.scene.control.*;
+import javafx.scene.layout.*;
+import javafx.scene.paint.Color;
+import javafx.scene.text.Font;
+import javafx.scene.text.FontWeight;
+import javafx.scene.text.Text;
+import javafx.stage.StageStyle;
+import rocks.zipcode.atm.bank.Bank;
+import javafx.application.Application;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+import javafx.scene.layout.VBox;
+import rocks.zipcode.atm.bank.PremiumAccount;
+
+/**
+ * @author ZipCodeWilmington
+ */
+public class CashMachineApp extends Application {
+ private Button btnSubmit;
+ private Button btnDeposit;
+ private Button btnWithdraw;
+ private Button btnClear;
+ private Button btnExit;
+ private PremiumAccount premiumAccount;
+
+private TextField accountId = new TextField();
+private TextField deposit = new TextField();
+private TextField withdraw = new TextField();
+
+
+public float getPremiumAcct() {
+ return premiumAccount.getBalance();
+}
+private CashMachine cashMachine = new CashMachine(new Bank());
+
+ private Parent createContent() {
+ withdraw.setMaxWidth(180);
+ withdraw.setTranslateX(575);
+ withdraw.setTranslateY(25);
+ deposit.setMaxWidth(175);
+ deposit.setTranslateX(300);
+ deposit.setTranslateY(100);
+ accountId.setTranslateX(30);
+ accountId.setTranslateY(133);
+ accountId.setMaxWidth(175);
+
+ // Banner
+ Text text = new Text("ZipCloud Bank");
+ text.setTranslateX(280);
+ text.setTranslateY(0);
+ text.setFill(Color.GREEN);
+ text.setFont(Font.font("Verdana", FontWeight.BOLD, 25));
+
+ accountId.setStyle("-fx-text-inner-color: Green;");
+ accountId.setFont(Font.font("Verdana", FontWeight.BOLD, 12));
+ deposit.setStyle("-fx-text-inner-color: Green;");
+ deposit.setFont(Font.font("Verdana", FontWeight.BOLD, 12));
+ withdraw.setStyle("-fx-text-inner-color: Green;");
+ withdraw.setFont(Font.font("Verdana", FontWeight.BOLD, 12));
+ VBox vbox = new VBox(10);
+ vbox.setPrefSize(500, 500);
+
+ TextArea areaInfo = new TextArea();
+
+ areaInfo.setMaxWidth(500);
+ areaInfo.setTranslateX(140);
+ areaInfo.setFont(Font.font("Verdana", FontWeight.BOLD, 15));
+ areaInfo.setStyle("-fx-text-inner-color: Green;");
+ accountId.setPromptText("Enter Account ID");
+ deposit.setPromptText("Enter Deposit Amount");
+ withdraw.setPromptText("Enter Withdraw Amount");
+
+ areaInfo.setPrefHeight(200);
+ areaInfo.setPrefWidth(200);
+
+ btnSubmit = new Button("Login/Submit");
+ btnSubmit.setTranslateX(5);
+ btnSubmit.setTranslateY(250);
+ btnSubmit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;");
+
+ btnSubmit.setOnAction(e -> {
+ areaInfo.setText("Please input account id 10, 20, 30, or 40 to start.");
+ btnDeposit.setVisible(true);
+ btnWithdraw.setVisible(true);
+ btnClear.setVisible(true);
+ btnExit.setVisible(true);
+ // btnAllAccounts.setVisible(true);
+ int id = Integer.parseInt(accountId.getText());
+ cashMachine.login(id);
+ areaInfo.setText(cashMachine.toString());
+ });
+ btnDeposit = new Button("Deposit");
+ btnDeposit.setTranslateX(30);
+ btnDeposit.setTranslateY(250);
+ btnDeposit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;");
+ btnDeposit.setOnAction(e -> {
+ Float amount = Float.parseFloat(deposit.getText());
+ if (amount < 0) {
+ areaInfo.setText("Input cannot be negative. Please try again.");
+ deposit.clear();
+ } else {
+ cashMachine.deposit(amount);
+ areaInfo.setText(cashMachine.toString());
+ }
+ });
+ btnWithdraw = new Button("Withdraw");
+ btnWithdraw.setTranslateX(380);
+ btnWithdraw.setTranslateY(250);
+ btnWithdraw.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;");
+ btnWithdraw.setOnAction(e -> {
+ Float amount = Float.parseFloat(withdraw.getText());
+ if (amount < 0) {
+ areaInfo.setText("Sorry, you can not withdraw a negative amount");
+// } else if(amount )
+// } else {
+ cashMachine.withdraw(amount);
+ areaInfo.setText(cashMachine.toString());
+ }
+ });
+ btnClear = new Button("Clear");
+ btnClear.setTranslateX(85);
+ btnClear.setTranslateY(250);
+ btnClear.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;");
+ btnClear.setOnAction(e -> {
+ accountId.clear();
+ deposit.clear();
+ withdraw.clear();
+ cashMachine.exit();
+ areaInfo.setText(cashMachine.toString());
+ });
+ btnExit = new Button("Exit");
+ btnExit.setTranslateX(35);
+ btnExit.setTranslateY(300);
+ btnExit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;");
+ btnExit.setOnAction(e -> {
+ System.exit(0);
+ areaInfo.setText(cashMachine.toString());
+
+ });
+
+ FlowPane flowpane = new FlowPane();
+ flowpane.getChildren().add(btnSubmit);
+ flowpane.getChildren().add(btnDeposit);
+ flowpane.getChildren().add(btnWithdraw);
+ flowpane.getChildren().add(btnClear);
+ flowpane.getChildren().add(btnExit);
+ vbox.getChildren().addAll(accountId, deposit, text, withdraw, flowpane, areaInfo);
+ return vbox;
+
+
+ }
+
+@Override
+public void start(Stage stage) throws Exception {
+ stage.setTitle("Welcome to ZipCloud Bank");
+ stage.setWidth(800);
+ stage.setHeight(600);
+ stage.initStyle(StageStyle.DECORATED);
+ stage.setScene(new Scene(createContent()));
+
+ stage.show();
+
+ btnDeposit.setVisible(false);
+ btnWithdraw.setVisible(false);
+ btnClear.setVisible(false);
+ btnExit.setVisible(false);
+
+ }
+public static void main(String[] args) {
+ launch(args);
+ }
+}
+
+
+/////*************
+
diff --git a/src/main/java/rocks/zipcode/atm/bank/Account.java b/src/main/java/rocks/zipcode/atm/bank/Account.java
index 53a0fa8..966fcea 100644
--- a/src/main/java/rocks/zipcode/atm/bank/Account.java
+++ b/src/main/java/rocks/zipcode/atm/bank/Account.java
@@ -1,43 +1,45 @@
-package rocks.zipcode.atm.bank;
-
-/**
- * @author ZipCodeWilmington
- */
-public abstract class Account {
-
- private AccountData accountData;
-
- public Account(AccountData accountData) {
- this.accountData = accountData;
- }
-
- public AccountData getAccountData() {
- return accountData;
- }
-
- public void deposit(int amount) {
- updateBalance(getBalance() + amount);
- }
-
- public boolean withdraw(int amount) {
- if (canWithdraw(amount)) {
- updateBalance(getBalance() - amount);
- return true;
- } else {
- return false;
- }
- }
-
- protected boolean canWithdraw(int amount) {
- return getBalance() >= amount;
- }
-
- public int getBalance() {
- return accountData.getBalance();
- }
-
- private void updateBalance(int newBalance) {
- accountData = new AccountData(accountData.getId(), accountData.getName(), accountData.getEmail(),
- newBalance);
- }
-}
+package rocks.zipcode.atm.bank;
+
+/**
+ * @author ZipCodeWilmington
+ */
+public abstract class Account {
+
+ private AccountData accountData;
+
+ public Account(AccountData accountData) {
+ this.accountData = accountData;
+ }
+
+ public AccountData getAccountData() {
+ return accountData;
+ }
+
+ public void deposit(float amount) {
+ updateBalance(getBalance() + amount);
+ }
+
+ public boolean withdraw (float amount){
+ if (canWithdraw(amount)) {
+ updateBalance(getBalance() - amount);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ protected boolean canWithdraw (float amount){
+ return getBalance() >= amount;
+ }
+
+ public float getBalance () {
+ return accountData.getBalance();
+ }
+
+ private void updateBalance (float newBalance){
+ accountData = new AccountData(accountData.getId(), accountData.getAcctType(), accountData.getName(), accountData.getEmail(),
+ newBalance);
+ }
+
+}
+
diff --git a/src/main/java/rocks/zipcode/atm/bank/AccountData.java b/src/main/java/rocks/zipcode/atm/bank/AccountData.java
index 0255385..fe2fa44 100644
--- a/src/main/java/rocks/zipcode/atm/bank/AccountData.java
+++ b/src/main/java/rocks/zipcode/atm/bank/AccountData.java
@@ -1,44 +1,70 @@
-package rocks.zipcode.atm.bank;
-
-/**
- * @author ZipCodeWilmington
- */
-public final class AccountData {
-
- private final int id;
- private final String name;
- private final String email;
-
- private final int balance;
-
- AccountData(int id, String name, String email, int balance) {
- this.id = id;
- this.name = name;
- this.email = email;
- this.balance = balance;
- }
-
- public int getId() {
- return id;
- }
-
- public String getName() {
- return name;
- }
-
- public String getEmail() {
- return email;
- }
-
- public int getBalance() {
- return balance;
- }
-
- @Override
- public String toString() {
- return "Account id: " + id + '\n' +
- "Name: " + name + '\n' +
- "Email: " + email + '\n' +
- "Balance: " + balance;
- }
-}
+package rocks.zipcode.atm.bank;
+
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+
+import javafx.scene.control.Alert;
+
+
+/**
+ * @author ZipCodeWilmington
+ */
+public final class AccountData {
+
+ private final int id;
+ private final String acctType;
+ private final String name;
+ private final String email;
+ private final Float balance;
+
+ DecimalFormat decimalFormat = new DecimalFormat("#.##");
+
+ AccountData( int id, String acctType, String name, String email,float balance){
+ this.id = id;
+ this.acctType = acctType;
+ this.name = name;
+ this.email = email;
+ this.balance = balance;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getAcctType() {
+ return acctType;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+ public Float getBalance() {
+ return balance;
+ }
+ public static Float round(float d,int decimalPlace){
+ BigDecimal bd = new BigDecimal(Float.toString(d));
+ bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
+ return bd.floatValue();
+ }
+
+ @Override
+ public String toString () {
+ return "Account id: " + id + '\n' +
+ "Account type: " + acctType + '\n' +
+ "Name: " + name + '\n' +
+ "Email: " + email + '\n' +
+ "Balance: " + String.format("$" + "%,.2f", Float.valueOf(decimalFormat.format(balance)));
+
+ }
+
+ }
+
+
+
+
+
diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java
index 5bd5bbf..5573fbd 100644
--- a/src/main/java/rocks/zipcode/atm/bank/Bank.java
+++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java
@@ -1,52 +1,67 @@
-package rocks.zipcode.atm.bank;
-
-import rocks.zipcode.atm.ActionResult;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author ZipCodeWilmington
- */
-public class Bank {
-
- private Map accounts = new HashMap<>();
-
- public Bank() {
- accounts.put(1000, new BasicAccount(new AccountData(
- 1000, "Example 1", "example1@gmail.com", 500
- )));
-
- accounts.put(2000, new PremiumAccount(new AccountData(
- 2000, "Example 2", "example2@gmail.com", 200
- )));
- }
-
- public ActionResult getAccountById(int id) {
- Account account = accounts.get(id);
-
- if (account != null) {
- return ActionResult.success(account.getAccountData());
- } else {
- return ActionResult.fail("No account with id: " + id + "\nTry account 1000 or 2000");
- }
- }
-
- public ActionResult deposit(AccountData accountData, int amount) {
- Account account = accounts.get(accountData.getId());
- account.deposit(amount);
-
- return ActionResult.success(account.getAccountData());
- }
-
- public ActionResult withdraw(AccountData accountData, int amount) {
- Account account = accounts.get(accountData.getId());
- boolean ok = account.withdraw(amount);
-
- if (ok) {
- return ActionResult.success(account.getAccountData());
- } else {
- return ActionResult.fail("Withdraw failed: " + amount + ". Account has: " + account.getBalance());
- }
- }
-}
+package rocks.zipcode.atm.bank;
+
+import rocks.zipcode.atm.ActionResult;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZipCodeWilmington
+ */
+public class Bank {
+
+ private Map accounts = new HashMap<>();
+
+ public Bank() {
+ accounts.put(10, new BasicAccount(new AccountData(
+ 10,"Basic","Bruce Wayne", "brucewayne.wayneenterprises@google.com", 1045658.89f
+ )));
+
+ accounts.put(20, new PremiumAccount(new AccountData(
+ 20, "Premium","Clark Kent" , "clarkkent.dailyplanet@gmail.com", 51456.58f
+ )));
+ accounts.put(30, new BasicAccount(new AccountData(
+ 30, "Basic", "Steve Rogers", "steveRogers1.@army.mil", 23423479.23f
+ )));
+ accounts.put(40, new PremiumAccount(new AccountData(
+ 40, "Premium", "Peter Parker", "peterparker@midtownhigh.edu", 1232146f
+
+ )));
+ }
+
+ public ActionResult getAccountById(int id) {
+ Account account = accounts.get(id);
+
+ if (account != null) {
+ return ActionResult.success(account.getAccountData());
+
+ } else {
+ return ActionResult.fail("No account with id: " + id + "\nPlease input account numbers 10, 20, 30, 40");
+ }
+ }
+
+ public ActionResult deposit(AccountData accountData, Float amount) {
+ Account account = accounts.get(accountData.getId());
+ account.deposit(amount);
+
+ return ActionResult.success(account.getAccountData());
+ }
+
+ public ActionResult withdraw(AccountData accountData, Float amount) {
+ Account account = accounts.get(accountData.getId());
+ boolean ok = account.withdraw(amount);
+
+ if (ok) {
+ return ActionResult.success(account.getAccountData());
+ } else {
+ return ActionResult.fail("Withdraw failed: " + amount + ". Account has: " + account.getBalance());
+ }
+
+ }
+
+ public Map getAccounts() {
+ return accounts;
+ }
+}
+
diff --git a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java
index 08e94a3..cd94df1 100644
--- a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java
+++ b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java
@@ -1,11 +1,17 @@
-package rocks.zipcode.atm.bank;
-
-/**
- * @author ZipCodeWilmington
- */
-public class BasicAccount extends Account {
-
- public BasicAccount(AccountData accountData) {
- super(accountData);
- }
-}
+package rocks.zipcode.atm.bank;
+
+/**
+ * @author ZipCodeWilmington
+ */
+public class BasicAccount extends Account {
+
+ public BasicAccount(AccountData accountData) {
+ super(accountData);
+ }
+}
+
+
+
+
+
+
diff --git a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java
index e4c9616..25cf2f4 100644
--- a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java
+++ b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java
@@ -1,18 +1,19 @@
-package rocks.zipcode.atm.bank;
-
-/**
- * @author ZipCodeWilmington
- */
-public class PremiumAccount extends Account {
-
- private static final int OVERDRAFT_LIMIT = 100;
-
- public PremiumAccount(AccountData accountData) {
- super(accountData);
- }
-
- @Override
- protected boolean canWithdraw(int amount) {
- return getBalance() + OVERDRAFT_LIMIT >= amount;
- }
-}
+package rocks.zipcode.atm.bank;
+
+/**
+ * @author ZipCodeWilmington
+ */
+public class PremiumAccount extends Account {
+
+ private static final float OVERDRAFT_LIMIT = 100;
+
+ public PremiumAccount(AccountData accountData) {
+ super(accountData);
+ }
+
+ @Override
+ protected boolean canWithdraw(float amount) {
+ return getBalance() + OVERDRAFT_LIMIT >= amount;
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/rocks/zipcode/atm/bank/AccountTest.java b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java
new file mode 100644
index 0000000..6476eb3
--- /dev/null
+++ b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java
@@ -0,0 +1,44 @@
+package rocks.zipcode.atm.bank;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class AccountTest {
+
+ @Test
+ public void deposit() {
+ // Given
+ Bank bank = new Bank();
+ Account account = bank.getAccounts().get(10);
+
+ //When
+ account.deposit(100.00f);
+
+
+ // Expected
+ Float expected = 1045658.89f + 100.00f;
+ Float actual = account.getBalance();
+
+ Assert.assertEquals(actual, expected);
+ }
+
+ @Test
+ public void withdraw() {
+ // Given
+ Bank bank = new Bank();
+ Account account = bank.getAccounts().get(10);
+
+ //When
+ account.withdraw(100.00f);
+
+
+ // Expected
+ Float expected = 1045658.89f - 100.00f;
+ Float actual = account.getBalance();
+
+ Assert.assertEquals(actual, expected);
+
+ }
+}