From b7fb58a272a0c60512b42b2a981967020c32f9a0 Mon Sep 17 00:00:00 2001 From: John Squier Date: Wed, 18 Jan 2017 20:30:26 -0500 Subject: [PATCH 1/4] one more time --- Reusing_Classes_1.md | 24 ++ Reusing_Classes_2.md | 25 ++ Reusing_Classes_3.md | 26 ++ Reusing_Classes_4.md | 26 ++ Reusing_Classes_Class_Manager.png | Bin 0 -> 47001 bytes pom.xml | 34 ++ .../java/squier/john/reusingClasses/ATM.java | 34 ++ .../squier/john/reusingClasses/ATMMain.java | 38 +++ .../squier/john/reusingClasses/Account.java | 201 +++++++++++ .../john/reusingClasses/ApprovalStatus.java | 6 + .../reusingClasses/BankAccountStatus.java | 6 + .../BankAccountTransaction.java | 24 ++ .../john/reusingClasses/BankAccountType.java | 6 + .../john/reusingClasses/CheckingAccount.java | 13 + .../squier/john/reusingClasses/Genders.java | 6 + .../squier/john/reusingClasses/Human.java | 76 +++++ .../squier/john/reusingClasses/Inventory.java | 37 ++ .../reusingClasses/InvestmentAccount.java | 13 + .../java/squier/john/reusingClasses/Main.java | 58 ++++ .../reusingClasses/OverdraftProtection.java | 6 + .../squier/john/reusingClasses/Product.java | 40 +++ .../john/reusingClasses/RotatableList.java | 62 ++++ .../john/reusingClasses/SavingsAccount.java | 13 + .../john/reusingClasses/SuperHuman.java | 41 +++ .../john/reusingClasses/TransactionType.java | 6 + .../squier/john/reusingClasses/ATMTest.java | 50 +++ .../reusingClasses/CheckingAccountTest.java | 315 +++++++++++++++++ .../john/reusingClasses/InventoryTest.java | 65 ++++ .../reusingClasses/InvestmentAccountTest.java | 315 +++++++++++++++++ .../john/reusingClasses/ListRotatorTest.java | 87 +++++ .../john/reusingClasses/ProductTest.java | 69 ++++ .../reusingClasses/SavingsAccountTest.java | 318 ++++++++++++++++++ 32 files changed, 2040 insertions(+) create mode 100755 Reusing_Classes_1.md create mode 100755 Reusing_Classes_2.md create mode 100755 Reusing_Classes_3.md create mode 100755 Reusing_Classes_4.md create mode 100644 Reusing_Classes_Class_Manager.png create mode 100644 pom.xml create mode 100644 src/main/java/squier/john/reusingClasses/ATM.java create mode 100644 src/main/java/squier/john/reusingClasses/ATMMain.java create mode 100644 src/main/java/squier/john/reusingClasses/Account.java create mode 100644 src/main/java/squier/john/reusingClasses/ApprovalStatus.java create mode 100644 src/main/java/squier/john/reusingClasses/BankAccountStatus.java create mode 100644 src/main/java/squier/john/reusingClasses/BankAccountTransaction.java create mode 100644 src/main/java/squier/john/reusingClasses/BankAccountType.java create mode 100644 src/main/java/squier/john/reusingClasses/CheckingAccount.java create mode 100644 src/main/java/squier/john/reusingClasses/Genders.java create mode 100644 src/main/java/squier/john/reusingClasses/Human.java create mode 100644 src/main/java/squier/john/reusingClasses/Inventory.java create mode 100644 src/main/java/squier/john/reusingClasses/InvestmentAccount.java create mode 100644 src/main/java/squier/john/reusingClasses/Main.java create mode 100644 src/main/java/squier/john/reusingClasses/OverdraftProtection.java create mode 100644 src/main/java/squier/john/reusingClasses/Product.java create mode 100644 src/main/java/squier/john/reusingClasses/RotatableList.java create mode 100644 src/main/java/squier/john/reusingClasses/SavingsAccount.java create mode 100644 src/main/java/squier/john/reusingClasses/SuperHuman.java create mode 100644 src/main/java/squier/john/reusingClasses/TransactionType.java create mode 100644 src/test/java/squier/john/reusingClasses/ATMTest.java create mode 100644 src/test/java/squier/john/reusingClasses/CheckingAccountTest.java create mode 100644 src/test/java/squier/john/reusingClasses/InventoryTest.java create mode 100644 src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java create mode 100644 src/test/java/squier/john/reusingClasses/ListRotatorTest.java create mode 100644 src/test/java/squier/john/reusingClasses/ProductTest.java create mode 100644 src/test/java/squier/john/reusingClasses/SavingsAccountTest.java diff --git a/Reusing_Classes_1.md b/Reusing_Classes_1.md new file mode 100755 index 0000000..658b615 --- /dev/null +++ b/Reusing_Classes_1.md @@ -0,0 +1,24 @@ +# Rotate Array + +## Objectives + +1. To demonstrate your understanding of objects and functions +2. To demonstrate your understanding of controlling execution +3. To demonstrate your understanding of access control +4. To demonstrate your understanding of reusing classes + + +## Overview + +Create a class that subclasses the built-in List class. Write a function that rotates a list by k elements. For example [1,2,3,4,5,6] rotated by two becomes [3,4,5,6,1,2]. Try solving this without creating a copy of the list. How many swap or move operations do you need? + + +## Unit Test + +No Unit Test + +## Instructions + +1. In your main class, initialize your custom List with values +2. In your main class call the method that rotates your array +3. Print original and rotated List values to screen \ No newline at end of file diff --git a/Reusing_Classes_2.md b/Reusing_Classes_2.md new file mode 100755 index 0000000..ba3aa0f --- /dev/null +++ b/Reusing_Classes_2.md @@ -0,0 +1,25 @@ +# Rotate Array + +## Humans and Superhumans + +## Objectives + +1. To demonstrate your understanding of objects and functions +2. To demonstrate your understanding of controlling execution +3. To demonstrate your understanding of access control +4. To demonstrate your understanding of reusing classes + + +## Overview + +Create a 'Human' class that has fields for: name, age, gender, occupation, and address. Also create methods for retreiving and outputing this data to screen.Then create a SuperHuman class that subclasses the first with fields for good or bad, hero name, super ability. As before, create methods for retrieving field data and printing to screen. + +## Unit Test + +No Unit Test + +## Instructions + +1. In your main class initialize a few human and superhuman instances +2. Demonstrate calling methods inherited from Human on your SuperHuman instances +3. Print all output to screen \ No newline at end of file diff --git a/Reusing_Classes_3.md b/Reusing_Classes_3.md new file mode 100755 index 0000000..9152922 --- /dev/null +++ b/Reusing_Classes_3.md @@ -0,0 +1,26 @@ +# Class Manager + +## Product Inventory Project + +## Objectives + +1. To demonstrate your understanding of objects and functions +2. To demonstrate your understanding of controlling execution +3. To demonstrate your understanding of access control +4. To demonstrate your understanding of reusing classes + + +## Overview + +Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. + +## Unit Test + +UML is required +Unit test in place before proceeding with code + +## Instructions + +1. In your main class initialize your manager and populate your inventory +2. Demonstrate calling methods on your manager +3. Print all output to screen \ No newline at end of file diff --git a/Reusing_Classes_4.md b/Reusing_Classes_4.md new file mode 100755 index 0000000..797a3cc --- /dev/null +++ b/Reusing_Classes_4.md @@ -0,0 +1,26 @@ +# Abstract Class + +## Bank Account Manager + +## Objectives + +1. To demonstrate your understanding of objects and functions +2. To demonstrate your understanding of controlling execution +3. To demonstrate your understanding of access control +4. To demonstrate your understanding of reusing classes + + +## Overview + +Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. + +## Unit Test + +UML is required +Unit test in place before proceeding with code + +## Instructions + +1. In your main class initialize your ATM +2. Demonstrate calling methods on your ATM with creating, deleting and managing account data +3. Print all output to screen \ No newline at end of file diff --git a/Reusing_Classes_Class_Manager.png b/Reusing_Classes_Class_Manager.png new file mode 100644 index 0000000000000000000000000000000000000000..124c0069b9d017228bb42f62edfbc4d214a33b08 GIT binary patch literal 47001 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 ~~!wS8pP3vR2P*oex=AofO-I;K4$*AV| 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..3d142a3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + squier.john.reusingClasses + reusingClassesLab + 1.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + + + + junit + junit + 4.12 + + + + \ No newline at end of file diff --git a/src/main/java/squier/john/reusingClasses/ATM.java b/src/main/java/squier/john/reusingClasses/ATM.java new file mode 100644 index 0000000..463956d --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/ATM.java @@ -0,0 +1,34 @@ +package squier.john.reusingClasses; + +import java.util.ArrayList; + +/** + * Created by johnsquier on 1/18/17. + */ +public class ATM { + + private ArrayList accounts; + + public ATM() { + accounts = new ArrayList(); + } + + public ATM(ArrayList accounts) { + this.accounts = accounts; + } + + public ArrayList getAccounts() { return accounts; } + + public String displayAccountNamesAndBalances() { + StringBuilder stringBuilder = new StringBuilder(500); + + for ( Account a : accounts ) { + stringBuilder.append("Name: "); + stringBuilder.append(a.getAccountHoldersName()); + stringBuilder.append(" Balance: "); + stringBuilder.append(a.getBalance() + "\n"); + } + + return stringBuilder.toString(); + } +} diff --git a/src/main/java/squier/john/reusingClasses/ATMMain.java b/src/main/java/squier/john/reusingClasses/ATMMain.java new file mode 100644 index 0000000..edaa63c --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/ATMMain.java @@ -0,0 +1,38 @@ +package squier.john.reusingClasses; + +import java.util.ArrayList; + +/** + * Created by johnsquier on 1/18/17. + */ +public class ATMMain { + public static void main(String[] args) { + + // Declare some accounts + Account savings = new SavingsAccount(BankAccountType.SAVINGS, 100.0, "Alice", 1.0, + BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + + Account checking = new CheckingAccount(BankAccountType.CHECKING, 50.0, "Bob", 0.0, + BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + + Account investment = new InvestmentAccount(BankAccountType.INVESTMENT, 10000.0, "Eve", 10.0, + BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + + // Put em in an array list + ArrayList accounts = new ArrayList<>(); + accounts.add(savings); + accounts.add(checking); + accounts.add(investment); + + // Create the atm with the accounts + ATM atm = new ATM(accounts); + + // Loop through and display everyone's balance and name + System.out.println(atm.displayAccountNamesAndBalances()); + + // Add a new account to the atm + Account newAccount = new InvestmentAccount(BankAccountType.INVESTMENT, 0.0, "Steve", 10.0, + BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + + } +} diff --git a/src/main/java/squier/john/reusingClasses/Account.java b/src/main/java/squier/john/reusingClasses/Account.java new file mode 100644 index 0000000..07bc803 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/Account.java @@ -0,0 +1,201 @@ +package squier.john.reusingClasses; + +import java.util.ArrayList; + +/** + * Created by johnsquier on 1/18/17. + */ +public abstract class Account { + + private BankAccountType accountType; + private int accountNumber; + private static int nextAccountNumber = 1; + private double balance; + private String accountHoldersName; + private double interestRate; + private BankAccountStatus accountStatus; + private OverdraftProtection overdraftProtection; + private ArrayList transactionRecord; + + + public Account(BankAccountType accountType, double balance, String accountHoldersName, double interestRate, + BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { + this.accountType = accountType; + accountNumber = nextAccountNumber++; + this.balance = balance; + this.accountHoldersName = accountHoldersName; + this.interestRate = interestRate; + this.accountStatus = accountStatus; + this.overdraftProtection = overdraftProtection; + transactionRecord = new ArrayList(); + } + + public Double getBalance() { + if (accountStatus.equals(BankAccountStatus.OFAC_FROZEN)) { + return null; + } else { + return balance; + } + } + + public String getAccountHoldersName() { + return accountHoldersName; + } + + public void setAccountHoldersName(String newName) { + if (accountStatus.equals(BankAccountStatus.OPEN)) { + accountHoldersName = newName; + + transactionRecord.add(new BankAccountTransaction(TransactionType.NAME_CHANGE, 0.0, + accountStatus, this.accountHoldersName)); + + return; + } + } + + public BankAccountStatus getAccountStatus() { + return accountStatus; + } + + public void setAccountStatus(BankAccountStatus accountStatus) { + if (isAccountOpenOrFrozen()) { + // check balance if trying to close + if (isNewAccountStatusClose(accountStatus)) { + if (this.balance == 0.0) { + this.accountStatus = accountStatus; + + transactionRecord.add(new BankAccountTransaction(TransactionType.STATUS_CHANGE, 0.0, + this.accountStatus, accountHoldersName)); + } + } else { + this.accountStatus = accountStatus; + + transactionRecord.add(new BankAccountTransaction(TransactionType.STATUS_CHANGE, 0.0, + this.accountStatus, accountHoldersName)); + } + } + + return; + } + + private boolean isAccountOpenOrFrozen() { + return !accountStatus.equals(BankAccountStatus.CLOSED); + } + + private boolean isNewAccountStatusClose(BankAccountStatus newStatus) { + return newStatus.equals(BankAccountStatus.CLOSED); + } + + public ApprovalStatus updateBalanceWithCreditOrDebit(double amount) { + + if (accountStatus.equals(BankAccountStatus.OPEN)) { + + if (overdraftProtection.equals(OverdraftProtection.ENABLED)) { + if (isTransactionAnOverDraft(amount)) { + return ApprovalStatus.NOT_APPROVED; + } + } + + if (amount > 0.0) { + return credit(amount); + } else if (amount < 0.0) { + return debit(amount); + } else { + return ApprovalStatus.ZERO_TRANSACTION; + } + } else { + return ApprovalStatus.CANT_COMPLETE_DUE_TO_ACCT_STATUS; + } + } + + private ApprovalStatus credit(double amountToCredit) { + Double previousBalance = getBalance(); + balance += amountToCredit; + + // check if balance updated + if ((previousBalance + amountToCredit) == getBalance()) { + // create new transaction record and add to list + transactionRecord.add(new BankAccountTransaction(TransactionType.DEPOSIT, + amountToCredit, accountStatus, accountHoldersName)); + return ApprovalStatus.APPROVED; + } else { + return ApprovalStatus.NOT_APPROVED; + } + } + + private ApprovalStatus debit(double amountToDebit) { + Double previousBalance = getBalance(); + balance += amountToDebit; + + // amountToDebit is negative + if ((previousBalance + amountToDebit) == getBalance()) { + // create new transaction record + transactionRecord.add(new BankAccountTransaction(TransactionType.WITHDRAWL, amountToDebit, + accountStatus, accountHoldersName)); + return ApprovalStatus.APPROVED; + } else { + return ApprovalStatus.NOT_APPROVED; + } + } + + + private boolean isTransactionAnOverDraft(double amount) { + return (Math.abs(amount) > this.getBalance()); + } + + // refactor this and transferBalanceTo, gotta be some reapeat code + public ApprovalStatus transferBalanceFrom(Account transferFrom, double amountToTransfer) { + if (bothAccountsHaveSameOwner(transferFrom, this)) { + + if (doesAccountHaveSufficientBalance(transferFrom, amountToTransfer)) { + ApprovalStatus debitApproval = transferFrom.updateBalanceWithCreditOrDebit(-amountToTransfer); + ApprovalStatus creditApproval = this.updateBalanceWithCreditOrDebit(amountToTransfer); + + transactionRecord.add(new BankAccountTransaction(TransactionType.TRANSFER, amountToTransfer, + accountStatus, accountHoldersName)); + + // pull out into check approvals method + if ((debitApproval.equals(ApprovalStatus.APPROVED)) + && creditApproval.equals(ApprovalStatus.APPROVED)) { + return ApprovalStatus.APPROVED; + } + } + } + + return ApprovalStatus.NOT_APPROVED; + } + + public ApprovalStatus transferBalanceTo(Account transferTo, double amountToTransfer) { + // check if both accts have the same owener + if (bothAccountsHaveSameOwner(this, transferTo)) { + + // check if from has enough money + if (doesAccountHaveSufficientBalance(this, amountToTransfer)) { + + // do the transfer + ApprovalStatus debitApproval = this.updateBalanceWithCreditOrDebit(-amountToTransfer); + ApprovalStatus creditApproval = transferTo.updateBalanceWithCreditOrDebit(amountToTransfer); + + transactionRecord.add(new BankAccountTransaction(TransactionType.TRANSFER, amountToTransfer, + accountStatus, accountHoldersName)); + + + if ((debitApproval.equals(ApprovalStatus.APPROVED)) + && creditApproval.equals(ApprovalStatus.APPROVED)) { + return ApprovalStatus.APPROVED; + } + } + } + + return ApprovalStatus.NOT_APPROVED; + } + + private boolean bothAccountsHaveSameOwner(Account transferFrom, Account transferTo) { + return transferFrom.getAccountHoldersName().equals(transferTo.accountHoldersName); + } + + private boolean doesAccountHaveSufficientBalance(Account acct, double amount) { + return acct.getBalance() >= amount; + } +} + diff --git a/src/main/java/squier/john/reusingClasses/ApprovalStatus.java b/src/main/java/squier/john/reusingClasses/ApprovalStatus.java new file mode 100644 index 0000000..bb883be --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/ApprovalStatus.java @@ -0,0 +1,6 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public enum ApprovalStatus {APPROVED, NOT_APPROVED, ZERO_TRANSACTION, CANT_COMPLETE_DUE_TO_ACCT_STATUS} diff --git a/src/main/java/squier/john/reusingClasses/BankAccountStatus.java b/src/main/java/squier/john/reusingClasses/BankAccountStatus.java new file mode 100644 index 0000000..86a52d1 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/BankAccountStatus.java @@ -0,0 +1,6 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public enum BankAccountStatus {OPEN, CLOSED, OFAC_FROZEN} diff --git a/src/main/java/squier/john/reusingClasses/BankAccountTransaction.java b/src/main/java/squier/john/reusingClasses/BankAccountTransaction.java new file mode 100644 index 0000000..04f696f --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/BankAccountTransaction.java @@ -0,0 +1,24 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public class BankAccountTransaction { + private TransactionType transactionType; + private Double transactionAmount; + private BankAccountStatus newStatus; + private String newName; + + public BankAccountTransaction(TransactionType transactionType, double transactionAmount, + BankAccountStatus newStatus, String newName) { + this.transactionType = transactionType; + this.transactionAmount = transactionAmount; + this.newStatus = newStatus; + this.newName = newName; + } + + public TransactionType getTransactionType() { return transactionType; } + public Double getTransactionAmount() { return transactionAmount; } + public BankAccountStatus getBankAccountStatus() { return newStatus; } + public String getName() { return newName; } +} diff --git a/src/main/java/squier/john/reusingClasses/BankAccountType.java b/src/main/java/squier/john/reusingClasses/BankAccountType.java new file mode 100644 index 0000000..e545f6d --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/BankAccountType.java @@ -0,0 +1,6 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public enum BankAccountType {CHECKING, SAVINGS, INVESTMENT} diff --git a/src/main/java/squier/john/reusingClasses/CheckingAccount.java b/src/main/java/squier/john/reusingClasses/CheckingAccount.java new file mode 100644 index 0000000..63388ea --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/CheckingAccount.java @@ -0,0 +1,13 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public class CheckingAccount extends Account { + + public CheckingAccount(BankAccountType accountType, double balance, String accountHoldersName, double interestRate, + BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { + + super(accountType, balance, accountHoldersName, interestRate, accountStatus, overdraftProtection); + } +} diff --git a/src/main/java/squier/john/reusingClasses/Genders.java b/src/main/java/squier/john/reusingClasses/Genders.java new file mode 100644 index 0000000..d84a465 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/Genders.java @@ -0,0 +1,6 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public enum Genders {MALE, FEMALE} diff --git a/src/main/java/squier/john/reusingClasses/Human.java b/src/main/java/squier/john/reusingClasses/Human.java new file mode 100644 index 0000000..9d1aeaa --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/Human.java @@ -0,0 +1,76 @@ +package squier.john.reusingClasses; + +import com.sun.tools.javac.jvm.Gen; + +/** + * Created by johnsquier on 1/18/17. + */ +public class Human { + + private String name; + private Integer age; + private Genders gender; + private String occupation; + private String address; + + public Human() { + name = "default"; + age = 0; + gender = Genders.MALE; + occupation = "default"; + address = "default"; + } + + public Human(String name, Integer age, Genders gender, String occupation, String address) { + this.name = name; + this.age = age; + this.gender = gender; + this.occupation = occupation; + this.address = address; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Genders getGender() { + return gender; + } + + public void setGender(Genders gender) { + this.gender = gender; + } + + public String getOccupation() { + return occupation; + } + + public void setOccupation(String occupation) { + this.occupation = occupation; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public void printInformation() { + System.out.printf("Name: %s\nAge: %d\nGender: %s\nOccupation: %s\nAddress: %s\n", + name, age, gender.toString(), occupation, address); + } +} diff --git a/src/main/java/squier/john/reusingClasses/Inventory.java b/src/main/java/squier/john/reusingClasses/Inventory.java new file mode 100644 index 0000000..51fda51 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/Inventory.java @@ -0,0 +1,37 @@ +package squier.john.reusingClasses; + +import java.util.ArrayList; + +/** + * Created by johnsquier on 1/18/17. + */ +public class Inventory { + + private ArrayList products; + + public Inventory() { + products = new ArrayList(); + } + + public Inventory(ArrayList products) { + this.products = products; + } + + public ArrayList getProductsList() { + return products; + } + + public void addProductToInventory(Product product) { + products.add(product); + } + + public Double calculateInventoryValue() { + Double totalInventoryValue = 0.0; + + for ( Product p : products) { + totalInventoryValue += (p.getPrice() * p.getQuantityOnHand()); + } + + return totalInventoryValue; + } +} diff --git a/src/main/java/squier/john/reusingClasses/InvestmentAccount.java b/src/main/java/squier/john/reusingClasses/InvestmentAccount.java new file mode 100644 index 0000000..09e8d62 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/InvestmentAccount.java @@ -0,0 +1,13 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public class InvestmentAccount extends Account { + + public InvestmentAccount(BankAccountType accountType, double balance, String accountHoldersName, double interestRate, + BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { + + super(accountType, balance, accountHoldersName, interestRate, accountStatus, overdraftProtection); + } +} diff --git a/src/main/java/squier/john/reusingClasses/Main.java b/src/main/java/squier/john/reusingClasses/Main.java new file mode 100644 index 0000000..04cad4b --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/Main.java @@ -0,0 +1,58 @@ +package squier.john.reusingClasses; + +import sun.print.SunMinMaxPage; + +/** + * Created by johnsquier on 1/18/17. + */ +public class Main { + public static void main(String[] args) { + + // Demonstrate RotatableList + RotatableList rotatableList = new RotatableList(); + rotatableList.runRotateDemo(); + + // Print newline + System.out.println(); + + // Demonstrate Human and Superhuman functionality + Human human = new Human(); + System.out.println("Default Human Info:"); + human.printInformation(); + System.out.println(); + + Human human2 = new Human("John", 29, Genders.MALE, "Unemployed", "7 Cartier"); + System.out.println("Human Info:"); + human2.printInformation(); + System.out.println(); + + SuperHuman superHuman = new SuperHuman(); + System.out.println("Default Superhuman Info:"); + superHuman.printInformation(); + System.out.println(); + + SuperHuman superHuman2 = new SuperHuman("John", 29, Genders.MALE, "Unemployed", "7 Cartier", + true, "SuperJohn", "Incredible Typing Speed!"); + System.out.println("SuperHuman Info:"); + superHuman2.printInformation(); + System.out.println(); + + // Demonstrate inventory and product functionality + Inventory inventory = new Inventory(); + Product product1 = new Product(1.00, "1", 1); + Product product2 = new Product(2.00, "2", 2); + System.out.printf("\nTotal Inventory value when empty: %.2f\n", + inventory.calculateInventoryValue()); + + // Now add a few products + inventory.addProductToInventory(product1); + inventory.addProductToInventory(product2); + System.out.printf("After adding a few prodcuts: %.2f\n", + inventory.calculateInventoryValue()); + + // And add one more + inventory.addProductToInventory(new Product(3.00, "3", 3)); + System.out.printf("After adding another product: %.2f\n", + inventory.calculateInventoryValue()); + } +} diff --git a/src/main/java/squier/john/reusingClasses/OverdraftProtection.java b/src/main/java/squier/john/reusingClasses/OverdraftProtection.java new file mode 100644 index 0000000..8c8dd17 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/OverdraftProtection.java @@ -0,0 +1,6 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public enum OverdraftProtection {ENABLED, DISABLED, AUTOMATIC_ACCT_TRANSFER} diff --git a/src/main/java/squier/john/reusingClasses/Product.java b/src/main/java/squier/john/reusingClasses/Product.java new file mode 100644 index 0000000..d670d5c --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/Product.java @@ -0,0 +1,40 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public class Product { + private Double price; + private String productID; + private Integer quantityOnHand; + + public Product(Double price, String productID, Integer quantityOnHand) { + this.price = price; + this.productID = productID; + this.quantityOnHand = quantityOnHand; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } + + public String getProductID() { + return productID; + } + + public void setProductID(String productID) { + this.productID = productID; + } + + public Integer getQuantityOnHand() { + return quantityOnHand; + } + + public void setQuantityOnHand(Integer quantityOnHand) { + this.quantityOnHand = quantityOnHand; + } +} diff --git a/src/main/java/squier/john/reusingClasses/RotatableList.java b/src/main/java/squier/john/reusingClasses/RotatableList.java new file mode 100644 index 0000000..08a04e9 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/RotatableList.java @@ -0,0 +1,62 @@ +package squier.john.reusingClasses; + +import java.lang.reflect.Array; +import java.util.*; + +/** + * Created by johnsquier on 1/18/17. + * Learn about generics so I can avoid downcasting when extracting from the RotatableList + */ +public class RotatableList extends ArrayList { + + public RotatableList rotateList(int shift) { + RotatableList newList = new RotatableList(); + + for ( int i = 0; i < this.size(); i++ ) { + newList.add(this.get((i + shift) % this.size())); + } + + return newList; + } + + public void createAndInitializeList() { + this.add(1); + this.add(2); + this.add(3); + this.add(4); + this.add(5); + this.add(6); + } + + private void printOutList() { + System.out.print("["); + + // pretty print + for ( int i = 0; i < this.size(); i++ ) { + // handle case where i is the last element + if ( i == this.size() - 1 ) { + System.out.printf("%d", this.get(i)); + } + else { + System.out.printf("%d, ", this.get(i)); + } + } + + System.out.print("]\n"); + + } + + public void runRotateDemo() { + RotatableList list = new RotatableList(); + list.createAndInitializeList(); + + System.out.printf("Original List: "); + list.printOutList(); + System.out.printf("Shift = %d\n", 3); + + list = list.rotateList(3); + + System.out.printf("Rotated List: "); + list.printOutList(); + } +} diff --git a/src/main/java/squier/john/reusingClasses/SavingsAccount.java b/src/main/java/squier/john/reusingClasses/SavingsAccount.java new file mode 100644 index 0000000..c502d8a --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/SavingsAccount.java @@ -0,0 +1,13 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public class SavingsAccount extends Account { + + public SavingsAccount(BankAccountType accountType, double balance, String accountHoldersName, double interestRate, + BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { + + super(accountType, balance, accountHoldersName, interestRate, accountStatus, overdraftProtection); + } +} diff --git a/src/main/java/squier/john/reusingClasses/SuperHuman.java b/src/main/java/squier/john/reusingClasses/SuperHuman.java new file mode 100644 index 0000000..fe56bf1 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/SuperHuman.java @@ -0,0 +1,41 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public class SuperHuman extends Human { + Boolean isGood; + String heroName; + String superAbility; + + public SuperHuman() { + super(); + isGood = true; + heroName = "default"; + superAbility = "default"; + } + + public SuperHuman(String name, Integer age, Genders gender, String occupation, String address, + Boolean isGood, String heroName, String superAbility) { + super(name, age, gender, occupation, address); + this.isGood = isGood; + this.heroName = heroName; + this.superAbility = superAbility; + } + + public Boolean getIsGood() { return isGood; } + public void setIsGood(Boolean isGood) { this.isGood = isGood; } + + public String getHeroName() { return heroName; } + public void setHeroName(String heroName) { this.heroName = heroName; } + + public String getSuperAbility() { return superAbility; } + public void setSuperAbility(String superAbility) { this.superAbility = superAbility; } + + @Override + public void printInformation() { + super.printInformation(); + System.out.printf("isGood: %s\nheroName: %s\nsuperAbility: %s\n", + isGood.toString(), heroName, superAbility); + } +} diff --git a/src/main/java/squier/john/reusingClasses/TransactionType.java b/src/main/java/squier/john/reusingClasses/TransactionType.java new file mode 100644 index 0000000..51a3c07 --- /dev/null +++ b/src/main/java/squier/john/reusingClasses/TransactionType.java @@ -0,0 +1,6 @@ +package squier.john.reusingClasses; + +/** + * Created by johnsquier on 1/18/17. + */ +public enum TransactionType {WITHDRAWL, DEPOSIT, TRANSFER, STATUS_CHANGE, NAME_CHANGE, INTEREST_RATE_CHANGE} diff --git a/src/test/java/squier/john/reusingClasses/ATMTest.java b/src/test/java/squier/john/reusingClasses/ATMTest.java new file mode 100644 index 0000000..ecae02f --- /dev/null +++ b/src/test/java/squier/john/reusingClasses/ATMTest.java @@ -0,0 +1,50 @@ +package squier.john.reusingClasses; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; + +/** + * Created by johnsquier on 1/18/17. + */ +public class ATMTest { + + ATM atm; + ArrayList accounts; + + @Before + public void setup() { + accounts = new ArrayList(); + + Account account1 = new SavingsAccount( + BankAccountType.SAVINGS, 100.0, "John", 10.0, + BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + + Account account2 = new CheckingAccount(BankAccountType.CHECKING, 50.0, "Alice", 0.0, + BankAccountStatus.OPEN, OverdraftProtection.DISABLED); + + + Account account3 = new InvestmentAccount(BankAccountType.INVESTMENT, 10000.0, "Bob", 15.0, + BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + + accounts.add(account1); + accounts.add(account2); + accounts.add(account3); + + atm = new ATM(accounts); + } + + @Test + public void getAccountsTest() { + ArrayList expected = accounts; + ArrayList actual = atm.getAccounts(); + Assert.assertEquals(expected, actual); + } + + @Test + public void displayAccountNamesAndBalancesTest() { + + } +} diff --git a/src/test/java/squier/john/reusingClasses/CheckingAccountTest.java b/src/test/java/squier/john/reusingClasses/CheckingAccountTest.java new file mode 100644 index 0000000..f9fd180 --- /dev/null +++ b/src/test/java/squier/john/reusingClasses/CheckingAccountTest.java @@ -0,0 +1,315 @@ +package squier.john.reusingClasses; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Created by johnsquier on 1/18/17. + */ +public class CheckingAccountTest { + Account bankAccount; + double delta = 0.00001; + + @Test + public void getBalanceAccountUnfrozenTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void getBalanceAccountFrozenTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + // using null to indicate frozen acct status + Double actual = bankAccount.getBalance(); + Assert.assertNull(actual); + } + + @Test + public void getAccountHoldersNameTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + String expected = "John"; + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setAccountHoldersNameOpenTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + String expected = "Bob"; + bankAccount.setAccountHoldersName("Bob"); + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setAccountHoldersNameClosedTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + String expected = "John"; + bankAccount.setAccountHoldersName("Bob"); + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void updateBalanceAccountClosedTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + bankAccount.updateBalanceWithCreditOrDebit(5.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalancePositiveTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 200.0; + bankAccount.updateBalanceWithCreditOrDebit(100.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalanceNegativeTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 50.0; + bankAccount.updateBalanceWithCreditOrDebit(-50.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalanceZeroTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + ApprovalStatus expected = ApprovalStatus.ZERO_TRANSACTION; + ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); + Assert.assertEquals(expected, actual); + } + + @Test + public void transferBalanceFromTestBothEndAboveZeroTest() { + CheckingAccount transferFrom = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + CheckingAccount transferTo = new CheckingAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferTo.transferBalanceFrom(transferFrom, 50.0); + + Double[] expected = {150.0, 50.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceToTestBothEndAboveZeroTest() { + CheckingAccount transferFrom = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + CheckingAccount transferTo = new CheckingAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferFrom.transferBalanceTo(transferTo, 50.0); + + Double[] expected = {150.0, 50.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceFromTestNotEnoughInFromTest() { + CheckingAccount transferFrom = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + CheckingAccount transferTo = new CheckingAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferTo.transferBalanceFrom(transferFrom, 500.0); + + Double[] expected = {100.0, 100.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceToTestNotEnoughInFromTest() { + CheckingAccount transferFrom = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + CheckingAccount transferTo = new CheckingAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferFrom.transferBalanceTo(transferTo, 500.0); + + Double[] expected = {100.0, 100.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void overdrawWithProtectionOnTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + bankAccount.updateBalanceWithCreditOrDebit(-500.0); + Double actual = bankAccount.getBalance(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void overdrawWithProtectOffTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.DISABLED); + + Double expected = -400.0; + bankAccount.updateBalanceWithCreditOrDebit(-500.0); + Double actual = bankAccount.getBalance(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void getBankAccountStatusTest() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedFromOpen() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedFromFrozen() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusOpenFromFrozen() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + bankAccount.setAccountStatus(BankAccountStatus.OPEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusOpenFromClosed() { + // needs to fail + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.OPEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusFrozenFromOpen() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OFAC_FROZEN; + bankAccount.setAccountStatus(BankAccountStatus.OFAC_FROZEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusFrozenFromClosed() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.OFAC_FROZEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedWithZeroBalance() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedWithNonZeroBalance() { + bankAccount = new CheckingAccount(BankAccountType.SAVINGS, 10.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } +} + diff --git a/src/test/java/squier/john/reusingClasses/InventoryTest.java b/src/test/java/squier/john/reusingClasses/InventoryTest.java new file mode 100644 index 0000000..01fe6d4 --- /dev/null +++ b/src/test/java/squier/john/reusingClasses/InventoryTest.java @@ -0,0 +1,65 @@ +package squier.john.reusingClasses; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.security.ProtectionDomain; +import java.util.ArrayList; + +/** + * Created by johnsquier on 1/18/17. + */ +public class InventoryTest { + + Inventory inventory; + Product product1, product2; + ArrayList productsList; + + @Before + public void setup() { + product1 = new Product(1.00, "1", 1); + product2 = new Product(2.00, "2", 2); + + productsList = new ArrayList(); + productsList.add(product1); + productsList.add(product2); + + inventory = new Inventory(productsList); + } + + @Test + public void getProductsListTest() { + productsList.add(product1); + productsList.add(product2); + + ArrayList expected = productsList; + ArrayList actual = inventory.getProductsList(); + Assert.assertEquals(expected, actual); + } + + @Test + public void addProductToInventoryTest() { + inventory.addProductToInventory(product1); + inventory.addProductToInventory(product2); + + ArrayList expected = productsList; + ArrayList actual = inventory.getProductsList(); + Assert.assertEquals(expected, actual); + } + + @Test + public void calculateInventoryValueEmptyTest() { + Inventory inventory2 = new Inventory(); + Double expected = 0.00; + Double actual = inventory2.calculateInventoryValue(); + Assert.assertEquals(expected, actual); + } + + @Test + public void calculateInventoryValueNonEmptyTest() { + Double expected = 5.00; + Double actual = inventory.calculateInventoryValue(); + Assert.assertEquals(expected, actual); + } +} diff --git a/src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java b/src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java new file mode 100644 index 0000000..797af0b --- /dev/null +++ b/src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java @@ -0,0 +1,315 @@ +package squier.john.reusingClasses; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Created by johnsquier on 1/18/17. + */ +public class InvestmentAccountTest { + Account bankAccount; + double delta = 0.00001; + + @Test + public void getBalanceAccountUnfrozenTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void getBalanceAccountFrozenTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + // using null to indicate frozen acct status + Double actual = bankAccount.getBalance(); + Assert.assertNull(actual); + } + + @Test + public void getAccountHoldersNameTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + String expected = "John"; + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setAccountHoldersNameOpenTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + String expected = "Bob"; + bankAccount.setAccountHoldersName("Bob"); + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setAccountHoldersNameClosedTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + String expected = "John"; + bankAccount.setAccountHoldersName("Bob"); + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void updateBalanceAccountClosedTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + bankAccount.updateBalanceWithCreditOrDebit(5.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalancePositiveTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 200.0; + bankAccount.updateBalanceWithCreditOrDebit(100.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalanceNegativeTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 50.0; + bankAccount.updateBalanceWithCreditOrDebit(-50.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalanceZeroTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + ApprovalStatus expected = ApprovalStatus.ZERO_TRANSACTION; + ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); + Assert.assertEquals(expected, actual); + } + + @Test + public void transferBalanceFromTestBothEndAboveZeroTest() { + InvestmentAccount transferFrom = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + InvestmentAccount transferTo = new InvestmentAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferTo.transferBalanceFrom(transferFrom, 50.0); + + Double[] expected = {150.0, 50.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceToTestBothEndAboveZeroTest() { + InvestmentAccount transferFrom = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + InvestmentAccount transferTo = new InvestmentAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferFrom.transferBalanceTo(transferTo, 50.0); + + Double[] expected = {150.0, 50.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceFromTestNotEnoughInFromTest() { + InvestmentAccount transferFrom = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + InvestmentAccount transferTo = new InvestmentAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferTo.transferBalanceFrom(transferFrom, 500.0); + + Double[] expected = {100.0, 100.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceToTestNotEnoughInFromTest() { + InvestmentAccount transferFrom = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + InvestmentAccount transferTo = new InvestmentAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferFrom.transferBalanceTo(transferTo, 500.0); + + Double[] expected = {100.0, 100.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void overdrawWithProtectionOnTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + bankAccount.updateBalanceWithCreditOrDebit(-500.0); + Double actual = bankAccount.getBalance(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void overdrawWithProtectOffTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.DISABLED); + + Double expected = -400.0; + bankAccount.updateBalanceWithCreditOrDebit(-500.0); + Double actual = bankAccount.getBalance(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void getBankAccountStatusTest() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedFromOpen() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedFromFrozen() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusOpenFromFrozen() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + bankAccount.setAccountStatus(BankAccountStatus.OPEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusOpenFromClosed() { + // needs to fail + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.OPEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusFrozenFromOpen() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OFAC_FROZEN; + bankAccount.setAccountStatus(BankAccountStatus.OFAC_FROZEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusFrozenFromClosed() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.OFAC_FROZEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedWithZeroBalance() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedWithNonZeroBalance() { + bankAccount = new InvestmentAccount(BankAccountType.SAVINGS, 10.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } +} + diff --git a/src/test/java/squier/john/reusingClasses/ListRotatorTest.java b/src/test/java/squier/john/reusingClasses/ListRotatorTest.java new file mode 100644 index 0000000..ddb32db --- /dev/null +++ b/src/test/java/squier/john/reusingClasses/ListRotatorTest.java @@ -0,0 +1,87 @@ +package squier.john.reusingClasses; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Created by johnsquier on 1/18/17. + */ +public class ListRotatorTest { + + RotatableList expectedList; + + @Before + public void setup() { + expectedList = new RotatableList(); + expectedList.createAndInitializeList(); + } + + @Test + public void rotateListByZeroTest() { + Object[] expected = {1, 2, 3, 4, 5, 6}; + Object[] actual = expectedList.rotateList(0).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void rotateListByOneTest() { + Object[] expected = {2, 3, 4, 5, 6, 1}; + Object[] actual = expectedList.rotateList(1).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void rotateListByTwoTest() { + Object[] expected = {3, 4, 5, 6, 1, 2}; + Object[] actual = expectedList.rotateList(2).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void rotateListByThreeTest() { + Object[] expected = {4, 5, 6, 1, 2, 3}; + Object[] actual = expectedList.rotateList(3).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void rotateListByFourTest() { + Object[] expected = {5, 6, 1, 2, 3, 4}; + Object[] actual = expectedList.rotateList(4).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void rotateListByFiveTest() { + Object[] expected = {6, 1, 2, 3, 4, 5}; + Object[] actual = expectedList.rotateList(5).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void rotateListBySixTest() { + Object[] expected = {1, 2, 3, 4, 5, 6}; + Object[] actual = expectedList.rotateList(6).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void rotateListBySevenTest() { + Object[] expected = {2, 3, 4, 5, 6, 1}; + Object[] actual = expectedList.rotateList(7).toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void createAndInitializeListTest() { + Object[] expected = {1, 2, 3, 4, 5, 6}; + + RotatableList temp = new RotatableList(); + temp.createAndInitializeList(); + + Object[] actual = temp.toArray(); + + Assert.assertArrayEquals(expected, actual); + } +} diff --git a/src/test/java/squier/john/reusingClasses/ProductTest.java b/src/test/java/squier/john/reusingClasses/ProductTest.java new file mode 100644 index 0000000..246755f --- /dev/null +++ b/src/test/java/squier/john/reusingClasses/ProductTest.java @@ -0,0 +1,69 @@ +package squier.john.reusingClasses; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Date; + +/** + * Created by johnsquier on 1/18/17. + */ +public class ProductTest { + + Product product; + + @Before + public void setup() { + product = new Product(100.0, "1234", 500); + } + + @Test + public void getPriceTest() { + Double expected = 100.0; + Double actual = product.getPrice(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setPriceTest() { + Double expected = 500.0; + product.setPrice(500.0); + Double actual = product.getPrice(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getProductIDTest() { + String expected = "1234"; + String actual = product.getProductID(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setProductIDTest() { + String expected = "4321"; + product.setProductID("4321"); + String actual = product.getProductID(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getQuantityOnHandTest() { + Integer expected = 500; + Integer actual = product.getQuantityOnHand(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setQuantityOnHandTest() { + Integer expected = 1; + product.setQuantityOnHand(1); + Integer actual = product.getQuantityOnHand(); + Assert.assertEquals(expected, actual); + } + + + + +} diff --git a/src/test/java/squier/john/reusingClasses/SavingsAccountTest.java b/src/test/java/squier/john/reusingClasses/SavingsAccountTest.java new file mode 100644 index 0000000..1b4d3f6 --- /dev/null +++ b/src/test/java/squier/john/reusingClasses/SavingsAccountTest.java @@ -0,0 +1,318 @@ +package squier.john.reusingClasses; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import squier.john.reusingClasses.*; + + +/** + * Created by johnsquier on 1/17/17. + */ +public class SavingsAccountTest { + + Account bankAccount; + double delta = 0.00001; + + @Test + public void getBalanceAccountUnfrozenTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void getBalanceAccountFrozenTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + // using null to indicate frozen acct status + Double actual = bankAccount.getBalance(); + Assert.assertNull(actual); + } + + @Test + public void getAccountHoldersNameTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + String expected = "John"; + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setAccountHoldersNameOpenTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + String expected = "Bob"; + bankAccount.setAccountHoldersName("Bob"); + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setAccountHoldersNameClosedTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + String expected = "John"; + bankAccount.setAccountHoldersName("Bob"); + String actual = bankAccount.getAccountHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void updateBalanceAccountClosedTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + bankAccount.updateBalanceWithCreditOrDebit(5.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalancePositiveTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 200.0; + bankAccount.updateBalanceWithCreditOrDebit(100.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalanceNegativeTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 50.0; + bankAccount.updateBalanceWithCreditOrDebit(-50.0); + Double actual = bankAccount.getBalance(); + Assert.assertEquals(expected, actual, delta); + } + + @Test + public void updateBalanceZeroTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + ApprovalStatus expected = ApprovalStatus.ZERO_TRANSACTION; + ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); + Assert.assertEquals(expected, actual); + } + + @Test + public void transferBalanceFromTestBothEndAboveZeroTest() { + SavingsAccount transferFrom = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + SavingsAccount transferTo = new SavingsAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferTo.transferBalanceFrom(transferFrom, 50.0); + + Double[] expected = {150.0, 50.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceToTestBothEndAboveZeroTest() { + SavingsAccount transferFrom = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + SavingsAccount transferTo = new SavingsAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferFrom.transferBalanceTo(transferTo, 50.0); + + Double[] expected = {150.0, 50.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceFromTestNotEnoughInFromTest() { + SavingsAccount transferFrom = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + SavingsAccount transferTo = new SavingsAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferTo.transferBalanceFrom(transferFrom, 500.0); + + Double[] expected = {100.0, 100.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void transferBalanceToTestNotEnoughInFromTest() { + SavingsAccount transferFrom = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + SavingsAccount transferTo = new SavingsAccount(BankAccountType.CHECKING, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + transferFrom.transferBalanceTo(transferTo, 500.0); + + Double[] expected = {100.0, 100.0}; + Double[] actual = {transferTo.getBalance(), transferFrom.getBalance()}; + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void overdrawWithProtectionOnTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + Double expected = 100.0; + bankAccount.updateBalanceWithCreditOrDebit(-500.0); + Double actual = bankAccount.getBalance(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void overdrawWithProtectOffTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.DISABLED); + + Double expected = -400.0; + bankAccount.updateBalanceWithCreditOrDebit(-500.0); + Double actual = bankAccount.getBalance(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void getBankAccountStatusTest() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 100.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedFromOpen() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedFromFrozen() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusOpenFromFrozen() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OFAC_FROZEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + bankAccount.setAccountStatus(BankAccountStatus.OPEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusOpenFromClosed() { + // needs to fail + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.OPEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusFrozenFromOpen() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OFAC_FROZEN; + bankAccount.setAccountStatus(BankAccountStatus.OFAC_FROZEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusFrozenFromClosed() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.CLOSED, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.OFAC_FROZEN); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedWithZeroBalance() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 0.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.CLOSED; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setBankAccountStatusClosedWithNonZeroBalance() { + bankAccount = new SavingsAccount(BankAccountType.SAVINGS, 10.0, + "John", 10.0, BankAccountStatus.OPEN, + OverdraftProtection.ENABLED); + + BankAccountStatus expected = BankAccountStatus.OPEN; + bankAccount.setAccountStatus(BankAccountStatus.CLOSED); + BankAccountStatus actual = bankAccount.getAccountStatus(); + Assert.assertEquals(expected, actual); + } +} From 5d97addd8440fa1102969e269d058f1971a55dc0 Mon Sep 17 00:00:00 2001 From: John Squier Date: Wed, 18 Jan 2017 21:01:23 -0500 Subject: [PATCH 2/4] finished modifying ATM for now... --- .../java/squier/john/reusingClasses/ATM.java | 23 +++++++++++++++++++ .../squier/john/reusingClasses/ATMMain.java | 23 ++++++++++++++++++- .../squier/john/reusingClasses/ATMTest.java | 23 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) diff --git a/src/main/java/squier/john/reusingClasses/ATM.java b/src/main/java/squier/john/reusingClasses/ATM.java index 463956d..f685728 100644 --- a/src/main/java/squier/john/reusingClasses/ATM.java +++ b/src/main/java/squier/john/reusingClasses/ATM.java @@ -31,4 +31,27 @@ public String displayAccountNamesAndBalances() { return stringBuilder.toString(); } + + public void addAccountToAccounts(Account account) { + accounts.add(account); + return; + } + + public void removeAccountWithNameAndBalance(String accountHoldersName, Double balance) { + Account toRemove = null; + + for ( Account a : accounts ) { + if ( a.getAccountHoldersName().equalsIgnoreCase(accountHoldersName) + && a.getBalance().equals(balance) ) { + toRemove = a; + break; + // can we have multiple accts with the same name and balance? + // probably... + } + } + + if ( !toRemove.equals(null) ) { + accounts.remove(toRemove); + } + } } diff --git a/src/main/java/squier/john/reusingClasses/ATMMain.java b/src/main/java/squier/john/reusingClasses/ATMMain.java index edaa63c..ab64d88 100644 --- a/src/main/java/squier/john/reusingClasses/ATMMain.java +++ b/src/main/java/squier/john/reusingClasses/ATMMain.java @@ -8,7 +8,7 @@ public class ATMMain { public static void main(String[] args) { - // Declare some accounts + // Create some accounts Account savings = new SavingsAccount(BankAccountType.SAVINGS, 100.0, "Alice", 1.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); @@ -34,5 +34,26 @@ public static void main(String[] args) { Account newAccount = new InvestmentAccount(BankAccountType.INVESTMENT, 0.0, "Steve", 10.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + atm.addAccountToAccounts(newAccount); + + // Display the new accounts + System.out.println(atm.displayAccountNamesAndBalances()); + + // Delete an account + System.out.println("Removing steve"); + atm.removeAccountWithNameAndBalance("Steve", 0.0); + + // And print again + System.out.println(atm.displayAccountNamesAndBalances()); + + // Delete another account + System.out.println("Removing Bob"); + atm.removeAccountWithNameAndBalance("Bob", 50.0); + System.out.println(atm.displayAccountNamesAndBalances()); + + // Change Alice's balance + System.out.println("Change Alice's balance"); + atm.getAccounts().get(0).updateBalanceWithCreditOrDebit(-100.0); + System.out.println(atm.displayAccountNamesAndBalances()); } } diff --git a/src/test/java/squier/john/reusingClasses/ATMTest.java b/src/test/java/squier/john/reusingClasses/ATMTest.java index ecae02f..24bcfa2 100644 --- a/src/test/java/squier/john/reusingClasses/ATMTest.java +++ b/src/test/java/squier/john/reusingClasses/ATMTest.java @@ -45,6 +45,29 @@ public void getAccountsTest() { @Test public void displayAccountNamesAndBalancesTest() { + String expected = "Name: John Balance: 100.0\n" + + "Name: Alice Balance: 50.0\n" + + "Name: Bob Balance: 10000.0\n"; + String actual = atm.displayAccountNamesAndBalances(); + Assert.assertEquals(expected, actual); + } + @Test + public void addAccountToAccountsTest() { + Account expected = new SavingsAccount(BankAccountType.SAVINGS, 0.0, "John", 0.0, + BankAccountStatus.OPEN, OverdraftProtection.ENABLED); + atm.addAccountToAccounts(expected); + Account actual = atm.getAccounts().get(3); + Assert.assertEquals(expected, actual); + } + + @Test + public void removeAccountWithNameAndBalanceTest() { + // need to implement .equals in Account I believe + ArrayList expected = accounts; + + atm.removeAccountWithNameAndBalance("John", 0.0); + + ArrayList actual = atm.getAccounts(); } } From 9bd37ab9ea49fc2cf626bbe0189cb3883042139b Mon Sep 17 00:00:00 2001 From: John Squier Date: Wed, 18 Jan 2017 21:15:01 -0500 Subject: [PATCH 3/4] Added UML for ATM --- ATM_Lab.png | Bin 0 -> 218081 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ATM_Lab.png diff --git a/ATM_Lab.png b/ATM_Lab.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9811ce11f9ad3b9cf3d3b72c0eedb91bd7434b GIT binary patch literal 218081 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 F{0ne!l0X0e literal 0 HcmV?d00001 From 976be080c40180ae01836878d92a8e1e41403d4a Mon Sep 17 00:00:00 2001 From: John Squier Date: Wed, 18 Jan 2017 21:35:26 -0500 Subject: [PATCH 4/4] restructured pacakges for easier understanding --- .../john/reusingClasses/{ => ATM}/ATM.java | 18 +++++++-------- .../reusingClasses/{ => ATM}/ATMMain.java | 12 +++++----- .../reusingClasses/{ => ATM}/Account.java | 2 +- .../{ => ATM}/ApprovalStatus.java | 2 +- .../{ => ATM}/BankAccountStatus.java | 2 +- .../{ => ATM}/BankAccountTransaction.java | 2 +- .../{ => ATM}/BankAccountType.java | 2 +- .../{ => ATM}/CheckingAccount.java | 4 ++-- .../{ => ATM}/InvestmentAccount.java | 6 ++--- .../{ => ATM}/OverdraftProtection.java | 2 +- .../{ => ATM}/SavingsAccount.java | 9 ++++++-- .../{ => ATM}/TransactionType.java | 2 +- .../java/squier/john/reusingClasses/Main.java | 7 +++++- .../reusingClasses/{ => humans}/Genders.java | 3 ++- .../reusingClasses/{ => humans}/Human.java | 2 +- .../{ => humans}/SuperHuman.java | 2 +- .../{ => inventory}/Inventory.java | 2 +- .../{ => inventory}/Product.java | 2 +- .../{ => rotatableList}/RotatableList.java | 3 +-- .../squier/john/reusingClasses/ATMTest.java | 23 ++++++++++--------- .../reusingClasses/CheckingAccountTest.java | 7 +++--- .../john/reusingClasses/InventoryTest.java | 3 ++- .../reusingClasses/InvestmentAccountTest.java | 7 +++--- .../john/reusingClasses/ListRotatorTest.java | 1 + .../john/reusingClasses/ProductTest.java | 3 +-- .../reusingClasses/SavingsAccountTest.java | 9 ++++---- 26 files changed, 75 insertions(+), 62 deletions(-) rename src/main/java/squier/john/reusingClasses/{ => ATM}/ATM.java (71%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/ATMMain.java (76%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/Account.java (99%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/ApprovalStatus.java (78%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/BankAccountStatus.java (72%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/BankAccountTransaction.java (95%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/BankAccountType.java (72%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/CheckingAccount.java (81%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/InvestmentAccount.java (59%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/OverdraftProtection.java (75%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/SavingsAccount.java (55%) rename src/main/java/squier/john/reusingClasses/{ => ATM}/TransactionType.java (79%) rename src/main/java/squier/john/reusingClasses/{ => humans}/Genders.java (58%) rename src/main/java/squier/john/reusingClasses/{ => humans}/Human.java (97%) rename src/main/java/squier/john/reusingClasses/{ => humans}/SuperHuman.java (96%) rename src/main/java/squier/john/reusingClasses/{ => inventory}/Inventory.java (94%) rename src/main/java/squier/john/reusingClasses/{ => inventory}/Product.java (94%) rename src/main/java/squier/john/reusingClasses/{ => rotatableList}/RotatableList.java (95%) diff --git a/src/main/java/squier/john/reusingClasses/ATM.java b/src/main/java/squier/john/reusingClasses/ATM/ATM.java similarity index 71% rename from src/main/java/squier/john/reusingClasses/ATM.java rename to src/main/java/squier/john/reusingClasses/ATM/ATM.java index f685728..3bb9859 100644 --- a/src/main/java/squier/john/reusingClasses/ATM.java +++ b/src/main/java/squier/john/reusingClasses/ATM/ATM.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; import java.util.ArrayList; @@ -7,22 +7,22 @@ */ public class ATM { - private ArrayList accounts; + private ArrayList accounts; public ATM() { - accounts = new ArrayList(); + accounts = new ArrayList(); } - public ATM(ArrayList accounts) { + public ATM(ArrayList accounts) { this.accounts = accounts; } - public ArrayList getAccounts() { return accounts; } + public ArrayList getAccounts() { return accounts; } public String displayAccountNamesAndBalances() { StringBuilder stringBuilder = new StringBuilder(500); - for ( Account a : accounts ) { + for ( ATM.Account a : accounts ) { stringBuilder.append("Name: "); stringBuilder.append(a.getAccountHoldersName()); stringBuilder.append(" Balance: "); @@ -32,15 +32,15 @@ public String displayAccountNamesAndBalances() { return stringBuilder.toString(); } - public void addAccountToAccounts(Account account) { + public void addAccountToAccounts(ATM.Account account) { accounts.add(account); return; } public void removeAccountWithNameAndBalance(String accountHoldersName, Double balance) { - Account toRemove = null; + ATM.Account toRemove = null; - for ( Account a : accounts ) { + for ( ATM.Account a : accounts ) { if ( a.getAccountHoldersName().equalsIgnoreCase(accountHoldersName) && a.getBalance().equals(balance) ) { toRemove = a; diff --git a/src/main/java/squier/john/reusingClasses/ATMMain.java b/src/main/java/squier/john/reusingClasses/ATM/ATMMain.java similarity index 76% rename from src/main/java/squier/john/reusingClasses/ATMMain.java rename to src/main/java/squier/john/reusingClasses/ATM/ATMMain.java index ab64d88..c20afdd 100644 --- a/src/main/java/squier/john/reusingClasses/ATMMain.java +++ b/src/main/java/squier/john/reusingClasses/ATM/ATMMain.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; import java.util.ArrayList; @@ -9,17 +9,17 @@ public class ATMMain { public static void main(String[] args) { // Create some accounts - Account savings = new SavingsAccount(BankAccountType.SAVINGS, 100.0, "Alice", 1.0, + ATM.Account savings = new SavingsAccount(BankAccountType.SAVINGS, 100.0, "Alice", 1.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); - Account checking = new CheckingAccount(BankAccountType.CHECKING, 50.0, "Bob", 0.0, + ATM.Account checking = new CheckingAccount(BankAccountType.CHECKING, 50.0, "Bob", 0.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); - Account investment = new InvestmentAccount(BankAccountType.INVESTMENT, 10000.0, "Eve", 10.0, + ATM.Account investment = new InvestmentAccount(BankAccountType.INVESTMENT, 10000.0, "Eve", 10.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); // Put em in an array list - ArrayList accounts = new ArrayList<>(); + ArrayList accounts = new ArrayList<>(); accounts.add(savings); accounts.add(checking); accounts.add(investment); @@ -31,7 +31,7 @@ public static void main(String[] args) { System.out.println(atm.displayAccountNamesAndBalances()); // Add a new account to the atm - Account newAccount = new InvestmentAccount(BankAccountType.INVESTMENT, 0.0, "Steve", 10.0, + ATM.Account newAccount = new InvestmentAccount(BankAccountType.INVESTMENT, 0.0, "Steve", 10.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); atm.addAccountToAccounts(newAccount); diff --git a/src/main/java/squier/john/reusingClasses/Account.java b/src/main/java/squier/john/reusingClasses/ATM/Account.java similarity index 99% rename from src/main/java/squier/john/reusingClasses/Account.java rename to src/main/java/squier/john/reusingClasses/ATM/Account.java index 07bc803..6941fcb 100644 --- a/src/main/java/squier/john/reusingClasses/Account.java +++ b/src/main/java/squier/john/reusingClasses/ATM/Account.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; import java.util.ArrayList; diff --git a/src/main/java/squier/john/reusingClasses/ApprovalStatus.java b/src/main/java/squier/john/reusingClasses/ATM/ApprovalStatus.java similarity index 78% rename from src/main/java/squier/john/reusingClasses/ApprovalStatus.java rename to src/main/java/squier/john/reusingClasses/ATM/ApprovalStatus.java index bb883be..858b829 100644 --- a/src/main/java/squier/john/reusingClasses/ApprovalStatus.java +++ b/src/main/java/squier/john/reusingClasses/ATM/ApprovalStatus.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/BankAccountStatus.java b/src/main/java/squier/john/reusingClasses/ATM/BankAccountStatus.java similarity index 72% rename from src/main/java/squier/john/reusingClasses/BankAccountStatus.java rename to src/main/java/squier/john/reusingClasses/ATM/BankAccountStatus.java index 86a52d1..84950e1 100644 --- a/src/main/java/squier/john/reusingClasses/BankAccountStatus.java +++ b/src/main/java/squier/john/reusingClasses/ATM/BankAccountStatus.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/BankAccountTransaction.java b/src/main/java/squier/john/reusingClasses/ATM/BankAccountTransaction.java similarity index 95% rename from src/main/java/squier/john/reusingClasses/BankAccountTransaction.java rename to src/main/java/squier/john/reusingClasses/ATM/BankAccountTransaction.java index 04f696f..57a46dd 100644 --- a/src/main/java/squier/john/reusingClasses/BankAccountTransaction.java +++ b/src/main/java/squier/john/reusingClasses/ATM/BankAccountTransaction.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/BankAccountType.java b/src/main/java/squier/john/reusingClasses/ATM/BankAccountType.java similarity index 72% rename from src/main/java/squier/john/reusingClasses/BankAccountType.java rename to src/main/java/squier/john/reusingClasses/ATM/BankAccountType.java index e545f6d..b62f5e2 100644 --- a/src/main/java/squier/john/reusingClasses/BankAccountType.java +++ b/src/main/java/squier/john/reusingClasses/ATM/BankAccountType.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/CheckingAccount.java b/src/main/java/squier/john/reusingClasses/ATM/CheckingAccount.java similarity index 81% rename from src/main/java/squier/john/reusingClasses/CheckingAccount.java rename to src/main/java/squier/john/reusingClasses/ATM/CheckingAccount.java index 63388ea..c8bdf1e 100644 --- a/src/main/java/squier/john/reusingClasses/CheckingAccount.java +++ b/src/main/java/squier/john/reusingClasses/ATM/CheckingAccount.java @@ -1,9 +1,9 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. */ -public class CheckingAccount extends Account { +public class CheckingAccount extends ATM.Account { public CheckingAccount(BankAccountType accountType, double balance, String accountHoldersName, double interestRate, BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { diff --git a/src/main/java/squier/john/reusingClasses/InvestmentAccount.java b/src/main/java/squier/john/reusingClasses/ATM/InvestmentAccount.java similarity index 59% rename from src/main/java/squier/john/reusingClasses/InvestmentAccount.java rename to src/main/java/squier/john/reusingClasses/ATM/InvestmentAccount.java index 09e8d62..577f1ac 100644 --- a/src/main/java/squier/john/reusingClasses/InvestmentAccount.java +++ b/src/main/java/squier/john/reusingClasses/ATM/InvestmentAccount.java @@ -1,12 +1,12 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. */ -public class InvestmentAccount extends Account { +public class InvestmentAccount extends ATM.Account { public InvestmentAccount(BankAccountType accountType, double balance, String accountHoldersName, double interestRate, - BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { + BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { super(accountType, balance, accountHoldersName, interestRate, accountStatus, overdraftProtection); } diff --git a/src/main/java/squier/john/reusingClasses/OverdraftProtection.java b/src/main/java/squier/john/reusingClasses/ATM/OverdraftProtection.java similarity index 75% rename from src/main/java/squier/john/reusingClasses/OverdraftProtection.java rename to src/main/java/squier/john/reusingClasses/ATM/OverdraftProtection.java index 8c8dd17..56804c3 100644 --- a/src/main/java/squier/john/reusingClasses/OverdraftProtection.java +++ b/src/main/java/squier/john/reusingClasses/ATM/OverdraftProtection.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/SavingsAccount.java b/src/main/java/squier/john/reusingClasses/ATM/SavingsAccount.java similarity index 55% rename from src/main/java/squier/john/reusingClasses/SavingsAccount.java rename to src/main/java/squier/john/reusingClasses/ATM/SavingsAccount.java index c502d8a..62ad4ca 100644 --- a/src/main/java/squier/john/reusingClasses/SavingsAccount.java +++ b/src/main/java/squier/john/reusingClasses/ATM/SavingsAccount.java @@ -1,9 +1,14 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; + +import squier.john.reusingClasses.ATM.ATM; +import squier.john.reusingClasses.ATM.BankAccountStatus; +import squier.john.reusingClasses.ATM.BankAccountType; +import squier.john.reusingClasses.ATM.OverdraftProtection; /** * Created by johnsquier on 1/18/17. */ -public class SavingsAccount extends Account { +public class SavingsAccount extends ATM.Account { public SavingsAccount(BankAccountType accountType, double balance, String accountHoldersName, double interestRate, BankAccountStatus accountStatus, OverdraftProtection overdraftProtection) { diff --git a/src/main/java/squier/john/reusingClasses/TransactionType.java b/src/main/java/squier/john/reusingClasses/ATM/TransactionType.java similarity index 79% rename from src/main/java/squier/john/reusingClasses/TransactionType.java rename to src/main/java/squier/john/reusingClasses/ATM/TransactionType.java index 51a3c07..2d160ae 100644 --- a/src/main/java/squier/john/reusingClasses/TransactionType.java +++ b/src/main/java/squier/john/reusingClasses/ATM/TransactionType.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.ATM; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/Main.java b/src/main/java/squier/john/reusingClasses/Main.java index 04cad4b..99adb16 100644 --- a/src/main/java/squier/john/reusingClasses/Main.java +++ b/src/main/java/squier/john/reusingClasses/Main.java @@ -1,6 +1,11 @@ package squier.john.reusingClasses; -import sun.print.SunMinMaxPage; +import squier.john.reusingClasses.humans.Genders; +import squier.john.reusingClasses.humans.Human; +import squier.john.reusingClasses.humans.SuperHuman; +import squier.john.reusingClasses.inventory.Inventory; +import squier.john.reusingClasses.inventory.Product; +import squier.john.reusingClasses.rotatableList.RotatableList; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/Genders.java b/src/main/java/squier/john/reusingClasses/humans/Genders.java similarity index 58% rename from src/main/java/squier/john/reusingClasses/Genders.java rename to src/main/java/squier/john/reusingClasses/humans/Genders.java index d84a465..db3048b 100644 --- a/src/main/java/squier/john/reusingClasses/Genders.java +++ b/src/main/java/squier/john/reusingClasses/humans/Genders.java @@ -1,6 +1,7 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.humans; /** * Created by johnsquier on 1/18/17. */ +// extensibile public enum Genders {MALE, FEMALE} diff --git a/src/main/java/squier/john/reusingClasses/Human.java b/src/main/java/squier/john/reusingClasses/humans/Human.java similarity index 97% rename from src/main/java/squier/john/reusingClasses/Human.java rename to src/main/java/squier/john/reusingClasses/humans/Human.java index 9d1aeaa..82cf980 100644 --- a/src/main/java/squier/john/reusingClasses/Human.java +++ b/src/main/java/squier/john/reusingClasses/humans/Human.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.humans; import com.sun.tools.javac.jvm.Gen; diff --git a/src/main/java/squier/john/reusingClasses/SuperHuman.java b/src/main/java/squier/john/reusingClasses/humans/SuperHuman.java similarity index 96% rename from src/main/java/squier/john/reusingClasses/SuperHuman.java rename to src/main/java/squier/john/reusingClasses/humans/SuperHuman.java index fe56bf1..58cf35b 100644 --- a/src/main/java/squier/john/reusingClasses/SuperHuman.java +++ b/src/main/java/squier/john/reusingClasses/humans/SuperHuman.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.humans; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/Inventory.java b/src/main/java/squier/john/reusingClasses/inventory/Inventory.java similarity index 94% rename from src/main/java/squier/john/reusingClasses/Inventory.java rename to src/main/java/squier/john/reusingClasses/inventory/Inventory.java index 51fda51..94727ff 100644 --- a/src/main/java/squier/john/reusingClasses/Inventory.java +++ b/src/main/java/squier/john/reusingClasses/inventory/Inventory.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.inventory; import java.util.ArrayList; diff --git a/src/main/java/squier/john/reusingClasses/Product.java b/src/main/java/squier/john/reusingClasses/inventory/Product.java similarity index 94% rename from src/main/java/squier/john/reusingClasses/Product.java rename to src/main/java/squier/john/reusingClasses/inventory/Product.java index d670d5c..6d86920 100644 --- a/src/main/java/squier/john/reusingClasses/Product.java +++ b/src/main/java/squier/john/reusingClasses/inventory/Product.java @@ -1,4 +1,4 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.inventory; /** * Created by johnsquier on 1/18/17. diff --git a/src/main/java/squier/john/reusingClasses/RotatableList.java b/src/main/java/squier/john/reusingClasses/rotatableList/RotatableList.java similarity index 95% rename from src/main/java/squier/john/reusingClasses/RotatableList.java rename to src/main/java/squier/john/reusingClasses/rotatableList/RotatableList.java index 08a04e9..035f0d8 100644 --- a/src/main/java/squier/john/reusingClasses/RotatableList.java +++ b/src/main/java/squier/john/reusingClasses/rotatableList/RotatableList.java @@ -1,6 +1,5 @@ -package squier.john.reusingClasses; +package squier.john.reusingClasses.rotatableList; -import java.lang.reflect.Array; import java.util.*; /** diff --git a/src/test/java/squier/john/reusingClasses/ATMTest.java b/src/test/java/squier/john/reusingClasses/ATMTest.java index 24bcfa2..ad9a559 100644 --- a/src/test/java/squier/john/reusingClasses/ATMTest.java +++ b/src/test/java/squier/john/reusingClasses/ATMTest.java @@ -3,6 +3,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import squier.john.reusingClasses.ATM.*; import java.util.ArrayList; @@ -12,21 +13,21 @@ public class ATMTest { ATM atm; - ArrayList accounts; + ArrayList accounts; @Before public void setup() { - accounts = new ArrayList(); + accounts = new ArrayList(); - Account account1 = new SavingsAccount( + ATM.Account account1 = new SavingsAccount( BankAccountType.SAVINGS, 100.0, "John", 10.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); - Account account2 = new CheckingAccount(BankAccountType.CHECKING, 50.0, "Alice", 0.0, + ATM.Account account2 = new CheckingAccount(BankAccountType.CHECKING, 50.0, "Alice", 0.0, BankAccountStatus.OPEN, OverdraftProtection.DISABLED); - Account account3 = new InvestmentAccount(BankAccountType.INVESTMENT, 10000.0, "Bob", 15.0, + ATM.Account account3 = new InvestmentAccount(BankAccountType.INVESTMENT, 10000.0, "Bob", 15.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); accounts.add(account1); @@ -38,8 +39,8 @@ public void setup() { @Test public void getAccountsTest() { - ArrayList expected = accounts; - ArrayList actual = atm.getAccounts(); + ArrayList expected = accounts; + ArrayList actual = atm.getAccounts(); Assert.assertEquals(expected, actual); } @@ -54,20 +55,20 @@ public void displayAccountNamesAndBalancesTest() { @Test public void addAccountToAccountsTest() { - Account expected = new SavingsAccount(BankAccountType.SAVINGS, 0.0, "John", 0.0, + ATM.Account expected = new SavingsAccount(BankAccountType.SAVINGS, 0.0, "John", 0.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); atm.addAccountToAccounts(expected); - Account actual = atm.getAccounts().get(3); + ATM.Account actual = atm.getAccounts().get(3); Assert.assertEquals(expected, actual); } @Test public void removeAccountWithNameAndBalanceTest() { // need to implement .equals in Account I believe - ArrayList expected = accounts; + ArrayList expected = accounts; atm.removeAccountWithNameAndBalance("John", 0.0); - ArrayList actual = atm.getAccounts(); + ArrayList actual = atm.getAccounts(); } } diff --git a/src/test/java/squier/john/reusingClasses/CheckingAccountTest.java b/src/test/java/squier/john/reusingClasses/CheckingAccountTest.java index f9fd180..bcfd424 100644 --- a/src/test/java/squier/john/reusingClasses/CheckingAccountTest.java +++ b/src/test/java/squier/john/reusingClasses/CheckingAccountTest.java @@ -2,12 +2,13 @@ import org.junit.Assert; import org.junit.Test; +import squier.john.reusingClasses.ATM.*; /** * Created by johnsquier on 1/18/17. */ public class CheckingAccountTest { - Account bankAccount; + ATM.Account bankAccount; double delta = 0.00001; @Test @@ -109,8 +110,8 @@ public void updateBalanceZeroTest() { "John", 10.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); - ApprovalStatus expected = ApprovalStatus.ZERO_TRANSACTION; - ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); + ATM.ApprovalStatus expected = ATM.ApprovalStatus.ZERO_TRANSACTION; + ATM.ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); Assert.assertEquals(expected, actual); } diff --git a/src/test/java/squier/john/reusingClasses/InventoryTest.java b/src/test/java/squier/john/reusingClasses/InventoryTest.java index 01fe6d4..e8220e2 100644 --- a/src/test/java/squier/john/reusingClasses/InventoryTest.java +++ b/src/test/java/squier/john/reusingClasses/InventoryTest.java @@ -3,8 +3,9 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import squier.john.reusingClasses.inventory.Inventory; +import squier.john.reusingClasses.inventory.Product; -import java.security.ProtectionDomain; import java.util.ArrayList; /** diff --git a/src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java b/src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java index 797af0b..442fa5b 100644 --- a/src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java +++ b/src/test/java/squier/john/reusingClasses/InvestmentAccountTest.java @@ -2,12 +2,13 @@ import org.junit.Assert; import org.junit.Test; +import squier.john.reusingClasses.ATM.*; /** * Created by johnsquier on 1/18/17. */ public class InvestmentAccountTest { - Account bankAccount; + ATM.Account bankAccount; double delta = 0.00001; @Test @@ -109,8 +110,8 @@ public void updateBalanceZeroTest() { "John", 10.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); - ApprovalStatus expected = ApprovalStatus.ZERO_TRANSACTION; - ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); + ATM.ApprovalStatus expected = ATM.ApprovalStatus.ZERO_TRANSACTION; + ATM.ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); Assert.assertEquals(expected, actual); } diff --git a/src/test/java/squier/john/reusingClasses/ListRotatorTest.java b/src/test/java/squier/john/reusingClasses/ListRotatorTest.java index ddb32db..8a179cd 100644 --- a/src/test/java/squier/john/reusingClasses/ListRotatorTest.java +++ b/src/test/java/squier/john/reusingClasses/ListRotatorTest.java @@ -3,6 +3,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import squier.john.reusingClasses.rotatableList.RotatableList; /** * Created by johnsquier on 1/18/17. diff --git a/src/test/java/squier/john/reusingClasses/ProductTest.java b/src/test/java/squier/john/reusingClasses/ProductTest.java index 246755f..a2a83f8 100644 --- a/src/test/java/squier/john/reusingClasses/ProductTest.java +++ b/src/test/java/squier/john/reusingClasses/ProductTest.java @@ -3,8 +3,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; - -import java.util.Date; +import squier.john.reusingClasses.inventory.Product; /** * Created by johnsquier on 1/18/17. diff --git a/src/test/java/squier/john/reusingClasses/SavingsAccountTest.java b/src/test/java/squier/john/reusingClasses/SavingsAccountTest.java index 1b4d3f6..73d93cb 100644 --- a/src/test/java/squier/john/reusingClasses/SavingsAccountTest.java +++ b/src/test/java/squier/john/reusingClasses/SavingsAccountTest.java @@ -1,9 +1,8 @@ package squier.john.reusingClasses; import org.junit.Assert; -import org.junit.Before; import org.junit.Test; -import squier.john.reusingClasses.*; +import squier.john.reusingClasses.ATM.*; /** @@ -11,7 +10,7 @@ */ public class SavingsAccountTest { - Account bankAccount; + ATM.Account bankAccount; double delta = 0.00001; @Test @@ -113,8 +112,8 @@ public void updateBalanceZeroTest() { "John", 10.0, BankAccountStatus.OPEN, OverdraftProtection.ENABLED); - ApprovalStatus expected = ApprovalStatus.ZERO_TRANSACTION; - ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); + ATM.ApprovalStatus expected = ATM.ApprovalStatus.ZERO_TRANSACTION; + ATM.ApprovalStatus actual = bankAccount.updateBalanceWithCreditOrDebit(0.0); Assert.assertEquals(expected, actual); }