diff --git a/src/main/java/budgetbuddy/parser/Parser.java b/src/main/java/budgetbuddy/parser/Parser.java index c3c5b37582..3e94f8b803 100644 --- a/src/main/java/budgetbuddy/parser/Parser.java +++ b/src/main/java/budgetbuddy/parser/Parser.java @@ -4,6 +4,7 @@ import budgetbuddy.categories.Category; import budgetbuddy.exceptions.EmptyArgumentException; +import budgetbuddy.exceptions.InvalidAddTransactionSyntax; import budgetbuddy.exceptions.InvalidArgumentSyntaxException; import budgetbuddy.exceptions.InvalidCategoryException; import budgetbuddy.exceptions.InvalidEditTransactionData; @@ -33,7 +34,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 +79,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..d55e57ffcc 100644 --- a/src/test/java/budgetbuddy/parser/ParserTest.java +++ b/src/test/java/budgetbuddy/parser/ParserTest.java @@ -1,6 +1,7 @@ package budgetbuddy.parser; import budgetbuddy.account.Account; import budgetbuddy.exceptions.EmptyArgumentException; +import budgetbuddy.exceptions.InvalidAddTransactionSyntax; import budgetbuddy.exceptions.InvalidCategoryException; import budgetbuddy.exceptions.InvalidEditTransactionData; import budgetbuddy.exceptions.InvalidTransactionTypeException; @@ -16,7 +17,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";