diff --git a/build.gradle b/build.gradle index 08e9d80a46..b5763d7db6 100644 --- a/build.gradle +++ b/build.gradle @@ -42,5 +42,6 @@ checkstyle { } run{ +// enableAssertions = true standardInput = System.in } diff --git a/src/main/java/budgetbuddy/BudgetBuddy.java b/src/main/java/budgetbuddy/BudgetBuddy.java index f7ece6c633..79d57211bf 100644 --- a/src/main/java/budgetbuddy/BudgetBuddy.java +++ b/src/main/java/budgetbuddy/BudgetBuddy.java @@ -18,11 +18,8 @@ public class BudgetBuddy { public static void main(String[] args) { String logo = "BUDGET BUDDY"; System.out.println("Hello from\n" + logo); - System.out.println("What is your name?"); - + System.out.println("What can I do for you?"); Scanner in = new Scanner(System.in); - System.out.println("Hello " + in.nextLine()); - TransactionList transactions = null; try { diff --git a/src/main/java/budgetbuddy/parser/Parser.java b/src/main/java/budgetbuddy/parser/Parser.java index c0c85fbd15..6b75a99408 100644 --- a/src/main/java/budgetbuddy/parser/Parser.java +++ b/src/main/java/budgetbuddy/parser/Parser.java @@ -29,8 +29,7 @@ public Transaction parseTransaction(String input, Account account) description = parseData[i + 1].trim(); break; case "$": - // Checks that input is an Integer - if (!TransactionList.isInteger(parseData[i+1].trim())) { + if (TransactionList.isNotDouble(parseData[i + 1].trim())) { throw new NumberFormatException(parseData[i+1].trim()); } else { amount = parseData[i + 1].trim(); diff --git a/src/main/java/budgetbuddy/storage/DataStorage.java b/src/main/java/budgetbuddy/storage/DataStorage.java index 59eb8a4605..88f55a588f 100644 --- a/src/main/java/budgetbuddy/storage/DataStorage.java +++ b/src/main/java/budgetbuddy/storage/DataStorage.java @@ -61,7 +61,7 @@ private Transaction processData(String s, Account account) { return new Income(transactionInfo[0], Double.parseDouble(transactionInfo[4]), transactionInfo[1], transactionInfo[3], account); case "Expense": - return new Expense(transactionInfo[0], Double.parseDouble(transactionInfo[4]), + return new Expense(transactionInfo[0], -Double.parseDouble(transactionInfo[4]), transactionInfo[1], transactionInfo[3], account); default: return null; diff --git a/src/main/java/budgetbuddy/transaction/TransactionList.java b/src/main/java/budgetbuddy/transaction/TransactionList.java index 92e03cb2bd..2e0ad9cab4 100644 --- a/src/main/java/budgetbuddy/transaction/TransactionList.java +++ b/src/main/java/budgetbuddy/transaction/TransactionList.java @@ -43,7 +43,7 @@ public void removeTransaction(String input, Account account) throws EmptyArgumen throw new EmptyArgumentException("delete index"); } String data = input.substring(DELETE_BEGIN_INDEX).trim(); - if (!isInteger(data)) { + if (isNotInteger(data)) { throw new NumberFormatException(data); } int id = Integer.parseInt(data) - INDEX_OFFSET; @@ -60,13 +60,21 @@ public void removeTransaction(String input, Account account) throws EmptyArgumen } } - // Checks whether the input index is an Integer - public static boolean isInteger(String data) { + public static boolean isNotInteger(String data) { try { Integer.parseInt(data); - return true; + return false; } catch (NumberFormatException e) { + return true; + } + } + + public static boolean isNotDouble(String data) { + try { + Double.parseDouble(data); return false; + } catch (NumberFormatException e) { + return true; } } diff --git a/src/main/java/budgetbuddy/transaction/type/Expense.java b/src/main/java/budgetbuddy/transaction/type/Expense.java index 095e586565..8d8fa36583 100644 --- a/src/main/java/budgetbuddy/transaction/type/Expense.java +++ b/src/main/java/budgetbuddy/transaction/type/Expense.java @@ -7,6 +7,12 @@ public class Expense extends Transaction { public Expense(String description, double amount, String category, String date, Account account) { super(description, -amount, category, date); + assert this.getAmount() < 0: "Expense amount must be positive"; + assert description != null && !description.isEmpty() : "Description cannot be null or empty"; + assert category != null && !category.isEmpty() : "Category cannot be null or empty"; + assert date != null : "Date cannot be null"; + assert account != null : "Account cannot be null"; + account.setBalance(account.getBalance() + this.getAmount()); } diff --git a/src/main/java/budgetbuddy/transaction/type/Income.java b/src/main/java/budgetbuddy/transaction/type/Income.java index d705394dd7..684dcb271f 100644 --- a/src/main/java/budgetbuddy/transaction/type/Income.java +++ b/src/main/java/budgetbuddy/transaction/type/Income.java @@ -7,6 +7,12 @@ public class Income extends Transaction { public Income(String description, double amount, String category, String date, Account account) { super(description, amount, category, date); + assert this.getAmount() > 0: "Income amount must be positive"; + assert description != null && !description.isEmpty() : "Description cannot be null or empty"; + assert category != null && !category.isEmpty() : "Category cannot be null or empty"; + assert date != null : "Date cannot be null"; + assert account != null : "Account cannot be null"; + account.setBalance(account.getBalance() + this.getAmount()); } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 471c6f5580..61619e10e3 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,7 +1,6 @@ Hello from BUDGET BUDDY -What is your name? -Hello James Gosling +What can I do for you? ---------------------------------------------------------------------------------------------------------------------------------------- Bye... Don't forget to keep track of your future transactions ---------------------------------------------------------------------------------------------------------------------------------------- diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 1329553ca2..b023018cab 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,2 +1 @@ -James Gosling -bye \ No newline at end of file +bye