diff --git a/src/main/java/budgetbuddy/parser/Parser.java b/src/main/java/budgetbuddy/parser/Parser.java index c3c5b37582..7f45c01aac 100644 --- a/src/main/java/budgetbuddy/parser/Parser.java +++ b/src/main/java/budgetbuddy/parser/Parser.java @@ -3,11 +3,7 @@ import budgetbuddy.account.Account; import budgetbuddy.categories.Category; -import budgetbuddy.exceptions.EmptyArgumentException; -import budgetbuddy.exceptions.InvalidArgumentSyntaxException; -import budgetbuddy.exceptions.InvalidCategoryException; -import budgetbuddy.exceptions.InvalidEditTransactionData; -import budgetbuddy.exceptions.InvalidTransactionTypeException; +import budgetbuddy.exceptions.*; import budgetbuddy.transaction.TransactionList; import budgetbuddy.transaction.type.Expense; import budgetbuddy.transaction.type.Income; @@ -33,7 +29,7 @@ public static int parseAccountNumber(String input) throws InvalidArgumentSyntaxE public Transaction parseUserInputToTransaction(String input, Account account) throws InvalidTransactionTypeException, NumberFormatException, - EmptyArgumentException, InvalidCategoryException { + EmptyArgumentException, InvalidCategoryException, InvalidAddTransactionSyntax { String data = input.substring(ADD_COMMAND_INDEX + 1); String[] parseData = data.split("/"); String type = null; @@ -78,6 +74,9 @@ public Transaction parseUserInputToTransaction(String input, Account account) throw new InvalidCategoryException("Category Index out of bounds"); } + if (Double.parseDouble(amount) < 0) { + throw new InvalidAddTransactionSyntax("Amount cannot be negative"); + } if (description.trim().isEmpty() || type.trim().isEmpty()) { throw new EmptyArgumentException("data for the arguments "); diff --git a/src/test/java/budgetbuddy/parser/ParserTest.java b/src/test/java/budgetbuddy/parser/ParserTest.java index 63476d5911..41ba6e8b78 100644 --- a/src/test/java/budgetbuddy/parser/ParserTest.java +++ b/src/test/java/budgetbuddy/parser/ParserTest.java @@ -1,9 +1,6 @@ package budgetbuddy.parser; import budgetbuddy.account.Account; -import budgetbuddy.exceptions.EmptyArgumentException; -import budgetbuddy.exceptions.InvalidCategoryException; -import budgetbuddy.exceptions.InvalidEditTransactionData; -import budgetbuddy.exceptions.InvalidTransactionTypeException; +import budgetbuddy.exceptions.*; import org.junit.jupiter.api.Test; import budgetbuddy.transaction.type.Transaction; @@ -16,7 +13,7 @@ public class ParserTest { @Test public void testParseTransaction() throws InvalidTransactionTypeException, EmptyArgumentException, - InvalidCategoryException { + InvalidCategoryException, InvalidAddTransactionSyntax { Parser parser = new Parser(); Account account = new Account(1); String input = "add /t/Income /n/Shopping /$/50 /d/14-03-2024 /c/1";