diff --git a/src/main/java/seedu/address/commons/util/StringUtil.java b/src/main/java/seedu/address/commons/util/StringUtil.java index c0f002173ad..58cae2624ad 100644 --- a/src/main/java/seedu/address/commons/util/StringUtil.java +++ b/src/main/java/seedu/address/commons/util/StringUtil.java @@ -76,15 +76,12 @@ public static String getDetails(Throwable t) { * Will return false for any other non-null string input * e.g. empty string, "-1", "0", "+1", and " 2 " (untrimmed), "3 0" (contains whitespace), "1 a" (contains letters) * @throws NullPointerException if {@code s} is null. + * @throws NumberFormatException if {@code s} is not a number. */ - public static boolean isNonZeroUnsignedInteger(String s) { + public static boolean isNonZeroUnsignedInteger(String s) throws NumberFormatException { requireNonNull(s); - try { - int value = Integer.parseInt(s); - return value > 0 && !s.startsWith("+"); // "+1" is successfully parsed by Integer#parseInt(String) - } catch (NumberFormatException nfe) { - return false; - } + int value = Integer.parseInt(s); + return value > 0 && !s.startsWith("+"); // "+1" is successfully parsed by Integer#parseInt(String) } } diff --git a/src/main/java/seedu/address/logic/Messages.java b/src/main/java/seedu/address/logic/Messages.java index a7d27616483..a37e9632605 100644 --- a/src/main/java/seedu/address/logic/Messages.java +++ b/src/main/java/seedu/address/logic/Messages.java @@ -12,9 +12,9 @@ */ public class Messages { - public static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command"; + public static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command."; public static final String MESSAGE_INVALID_COMMAND_FORMAT = "Invalid command format! \n%1$s"; - public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is invalid"; + public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is invalid."; public static final String MESSAGE_INVALID_NOTE_DISPLAYED_INDEX = "This note index is invalid!"; public static final String MESSAGE_PERSONS_LISTED_OVERVIEW = "%1$d persons listed!"; public static final String MESSAGE_DUPLICATE_FIELDS = diff --git a/src/main/java/seedu/address/logic/commands/AddNoteCommand.java b/src/main/java/seedu/address/logic/commands/AddNoteCommand.java index 1d9da3305df..68a20fdc061 100644 --- a/src/main/java/seedu/address/logic/commands/AddNoteCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddNoteCommand.java @@ -21,7 +21,7 @@ public class AddNoteCommand extends Command { + "identified by the index number used in the last person listing. " + "Parameters: INDEX (must be a positive integer) NOTE_CONTENT\n" + "Example: " + COMMAND_WORD + " 1 This is a sample note for the person."; - public static final String MESSAGE_NOTE_SUCCESS = "Added note to person."; + public static final String MESSAGE_NOTE_SUCCESS = "Added note to person: %s"; private final Index index; private final Note note; @@ -44,7 +44,7 @@ public CommandResult execute(Model model) throws CommandException { } Person p = lastShownList.get(index.getZeroBased()); p.addNote(note); - return new CommandResult(String.format(MESSAGE_NOTE_SUCCESS, Messages.format(p))); + return new CommandResult(String.format(MESSAGE_NOTE_SUCCESS, p.getName())); } @Override diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 158981edea7..926d924bfbd 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -27,6 +27,7 @@ import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; import seedu.address.model.person.Address; +import seedu.address.model.person.Avatar; import seedu.address.model.person.Balance; import seedu.address.model.person.Birthday; import seedu.address.model.person.Email; @@ -128,10 +129,11 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript Set updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags()); Optional id = personToEdit.getId(); ObservableList notes = personToEdit.getNotes(); + Avatar avatar = personToEdit.getAvatar(); Balance balance = personToEdit.getBalance(); Person updatedPerson = new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedBirthday, - updatedLinkedin, updatedSecondaryEmail, updatedTelegram, updatedTags, id, notes, balance); + updatedLinkedin, updatedSecondaryEmail, updatedTelegram, updatedTags, id, avatar, notes, balance); // Records down the alternative contact fields that are initially empty. ArrayList emptyAlternativeContactFields = new ArrayList<>(); diff --git a/src/main/java/seedu/address/logic/parser/AddAltCommandParser.java b/src/main/java/seedu/address/logic/parser/AddAltCommandParser.java index 8d154646008..94d8b6da96c 100644 --- a/src/main/java/seedu/address/logic/parser/AddAltCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddAltCommandParser.java @@ -35,12 +35,7 @@ public AddAltCommand parse(String args) throws ParseException { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddAltCommand.MESSAGE_USAGE)); } - try { - index = ParserUtil.parseIndex(preamble); - } catch (ParseException pe) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddAltCommand.MESSAGE_USAGE)); - } - + index = ParserUtil.parseIndex(preamble); argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_LINKEDIN, PREFIX_SECONDARY_EMAIL, PREFIX_TELEGRAM, PREFIX_BIRTHDAY); AddAltPersonDescriptor addAltPersonDescriptor = new AddAltPersonDescriptor(); diff --git a/src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java b/src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java index af38148c124..6a6132b466f 100644 --- a/src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java @@ -12,26 +12,33 @@ */ public class AddNoteCommandParser implements Parser { + public static final String MESSAGE_EMPTY_NOTE = "NOTE_CONTENT cannot be empty!"; + /** * Parses the given {@code String} of arguments in the context of the NoteCommand * and returns a NoteCommand object for execution. * @throws ParseException if the user input does not conform to the expected format */ public AddNoteCommand parse(String args) throws ParseException { - try { - // Split based on space - String[] splitArgs = args.trim().split("\\s", 2); - - if (splitArgs.length < 2) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE)); - } + // Split based on space + String[] splitArgs = args.trim().split("\\s", 2); - Index index = ParserUtil.parseIndex(splitArgs[0]); - Note note = new Note(splitArgs[1].trim()); + // Empty args + if (splitArgs[0].isEmpty()) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE)); + } - return new AddNoteCommand(index, note); - } catch (ParseException pe) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE), pe); + // Only 1 arg + if (splitArgs.length == 1) { + // Assume that user follows command format so first argument by default is index. + ParserUtil.parseIndex(splitArgs[0]); + // If user keys in valid index, will then subsequently throw exception; notes cannot be whitespace/empty. + throw new ParseException(MESSAGE_EMPTY_NOTE); } + + Index index = ParserUtil.parseIndex(splitArgs[0]); + Note note = new Note(splitArgs[1]); + + return new AddNoteCommand(index, note); } } diff --git a/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java b/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java index 3527fe76a3e..ae538654945 100644 --- a/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java @@ -1,7 +1,5 @@ package seedu.address.logic.parser; -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; - import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.DeleteCommand; import seedu.address.logic.parser.exceptions.ParseException; @@ -17,13 +15,8 @@ public class DeleteCommandParser implements Parser { * @throws ParseException if the user input does not conform the expected format */ public DeleteCommand parse(String args) throws ParseException { - try { - Index index = ParserUtil.parseIndex(args); - return new DeleteCommand(index); - } catch (ParseException pe) { - throw new ParseException( - String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe); - } + Index index = ParserUtil.parseIndex(args); + return new DeleteCommand(index); } } diff --git a/src/main/java/seedu/address/logic/parser/EditCommandParser.java b/src/main/java/seedu/address/logic/parser/EditCommandParser.java index aa77c44c0a0..fec08af20da 100644 --- a/src/main/java/seedu/address/logic/parser/EditCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/EditCommandParser.java @@ -49,12 +49,7 @@ public EditCommand parse(String args) throws ParseException { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE)); } - try { - index = ParserUtil.parseIndex(preamble); - } catch (ParseException pe) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE)); - } - + index = ParserUtil.parseIndex(preamble); argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_BIRTHDAY, PREFIX_SECONDARY_EMAIL, PREFIX_TELEGRAM, PREFIX_LINKEDIN); diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index 56d41e5a3bc..79f60c63fa0 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -28,6 +28,7 @@ public class ParserUtil { public static final String MESSAGE_INVALID_INDEX = "Index is not a non-zero unsigned integer."; + public static final String MESSAGE_NOT_A_INDEX = "Index should be an integer."; /** * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be @@ -36,10 +37,15 @@ public class ParserUtil { */ public static Index parseIndex(String oneBasedIndex) throws ParseException { String trimmedIndex = oneBasedIndex.trim(); - if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) { - throw new ParseException(MESSAGE_INVALID_INDEX); + try { + boolean isValidIndex = StringUtil.isNonZeroUnsignedInteger(trimmedIndex); + if (!isValidIndex) { + throw new ParseException(MESSAGE_INVALID_INDEX); + } + return Index.fromOneBased(Integer.parseInt(trimmedIndex)); + } catch (NumberFormatException e) { + throw new ParseException(MESSAGE_NOT_A_INDEX); } - return Index.fromOneBased(Integer.parseInt(trimmedIndex)); } /** @@ -170,7 +176,10 @@ public static Set parseTags(Collection tags) throws ParseException requireNonNull(tags); final Set tagSet = new HashSet<>(); for (String tagName : tags) { - tagSet.add(parseTag(tagName)); + Tag tagToAdd = parseTag(tagName); + if (!tagSet.contains(tagToAdd)) { + tagSet.add(tagToAdd); + } } return tagSet; } diff --git a/src/main/java/seedu/address/logic/parser/RemoveNoteCommandParser.java b/src/main/java/seedu/address/logic/parser/RemoveNoteCommandParser.java index e5c2035a639..7a09de7ea53 100644 --- a/src/main/java/seedu/address/logic/parser/RemoveNoteCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/RemoveNoteCommandParser.java @@ -17,22 +17,17 @@ public class RemoveNoteCommandParser implements Parser { * @throws ParseException if the user input does not conform to the expected format */ public RemoveNoteCommand parse(String args) throws ParseException { - try { - // Split based on space - String[] splitArgs = args.trim().split("\\s"); + // Split based on space + String[] splitArgs = args.trim().split("\\s"); - if (splitArgs.length != 2) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, - RemoveNoteCommand.MESSAGE_USAGE)); - } - - Index indexPerson = ParserUtil.parseIndex(splitArgs[0]); - Index indexNote = ParserUtil.parseIndex(splitArgs[1]); - - return new RemoveNoteCommand(indexPerson, indexNote); - } catch (ParseException pe) { + if (splitArgs.length != 2) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, - RemoveNoteCommand.MESSAGE_USAGE), pe); + RemoveNoteCommand.MESSAGE_USAGE)); } + + Index indexPerson = ParserUtil.parseIndex(splitArgs[0]); + Index indexNote = ParserUtil.parseIndex(splitArgs[1]); + + return new RemoveNoteCommand(indexPerson, indexNote); } } diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/address/model/tag/Tag.java index 37ea7e6c1fe..7ea4e422609 100644 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ b/src/main/java/seedu/address/model/tag/Tag.java @@ -26,7 +26,7 @@ public enum EmergencyTags { */ public static boolean isEmergencyTag(String tagName) { for (EmergencyTags tag : EmergencyTags.values()) { - if (tag.name().equals(tagName)) { + if (tag.name().equals(tagName.toUpperCase())) { return true; } } @@ -64,12 +64,12 @@ public boolean equals(Object other) { } Tag otherTag = (Tag) other; - return tagName.equals(otherTag.tagName); + return tagName.compareToIgnoreCase(otherTag.tagName) == 0; } @Override public int hashCode() { - return tagName.hashCode(); + return tagName.toUpperCase().hashCode(); } /** diff --git a/src/test/java/seedu/address/commons/util/StringUtilTest.java b/src/test/java/seedu/address/commons/util/StringUtilTest.java index f22f8dde6e4..b29ccac23f7 100644 --- a/src/test/java/seedu/address/commons/util/StringUtilTest.java +++ b/src/test/java/seedu/address/commons/util/StringUtilTest.java @@ -16,12 +16,12 @@ public class StringUtilTest { public void isNonZeroUnsignedInteger() { // EP: empty strings - assertFalse(StringUtil.isNonZeroUnsignedInteger("")); // Boundary value - assertFalse(StringUtil.isNonZeroUnsignedInteger(" ")); + assertThrows(NumberFormatException.class, () -> StringUtil.isNonZeroUnsignedInteger("")); // Boundary value + assertThrows(NumberFormatException.class, () -> StringUtil.isNonZeroUnsignedInteger(" ")); // EP: not a number - assertFalse(StringUtil.isNonZeroUnsignedInteger("a")); - assertFalse(StringUtil.isNonZeroUnsignedInteger("aaa")); + assertThrows(NumberFormatException.class, () -> StringUtil.isNonZeroUnsignedInteger("a")); + assertThrows(NumberFormatException.class, () -> StringUtil.isNonZeroUnsignedInteger("aaa")); // EP: zero assertFalse(StringUtil.isNonZeroUnsignedInteger("0")); @@ -34,8 +34,10 @@ public void isNonZeroUnsignedInteger() { assertFalse(StringUtil.isNonZeroUnsignedInteger("+1")); // EP: numbers with white space - assertFalse(StringUtil.isNonZeroUnsignedInteger(" 10 ")); // Leading/trailing spaces - assertFalse(StringUtil.isNonZeroUnsignedInteger("1 0")); // Spaces in the middle + assertThrows(NumberFormatException.class, () -> + StringUtil.isNonZeroUnsignedInteger(" 10 ")); // Leading/trailing spaces + assertThrows(NumberFormatException.class, () -> + StringUtil.isNonZeroUnsignedInteger("1 0")); // Spaces in the middle // EP: number larger than Integer.MAX_VALUE assertFalse(StringUtil.isNonZeroUnsignedInteger(Long.toString(Integer.MAX_VALUE + 1))); diff --git a/src/test/java/seedu/address/logic/commands/UpdatePhotoCommandTest.java b/src/test/java/seedu/address/logic/commands/UpdatePhotoCommandTest.java index b7996384717..17267d0f629 100644 --- a/src/test/java/seedu/address/logic/commands/UpdatePhotoCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/UpdatePhotoCommandTest.java @@ -113,7 +113,7 @@ public void execute_outOfBoundIndexInNonEmptyAddressBook_exceptionThrown() { } catch (ParseException e) { fail(); } catch (CommandException e) { - assertEquals(e.getMessage(), "The person index provided is invalid"); + assertEquals(e.getMessage(), "The person index provided is invalid."); } } diff --git a/src/test/java/seedu/address/logic/parser/AddAltCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AddAltCommandParserTest.java index 51628ad9f55..904a39c53e3 100644 --- a/src/test/java/seedu/address/logic/parser/AddAltCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddAltCommandParserTest.java @@ -86,7 +86,7 @@ public void parse_invalidFormat_failure() { assertParseFailure(parser, "1 b/24/07 b/25/07", Messages.MESSAGE_DUPLICATE_FIELDS + "b/"); // Invalid prefix - assertParseFailure(parser, "1 i/string b/24/07", MESSAGE_INVALID_FORMAT); + assertParseFailure(parser, "1 i/string b/24/07", ParserUtil.MESSAGE_NOT_A_INDEX); } @Test @@ -94,10 +94,10 @@ public void parse_invalidPreamble_failure() { // Heuristic: Boundary value analysis // One value below boundary - assertParseFailure(parser, "-1 b/24/07/01" , MESSAGE_INVALID_FORMAT); + assertParseFailure(parser, "-1 b/24/07/01" , ParserUtil.MESSAGE_INVALID_INDEX); // Value at boundary - assertParseFailure(parser, "0 b/24/07/01" , MESSAGE_INVALID_FORMAT); + assertParseFailure(parser, "0 b/24/07/01" , ParserUtil.MESSAGE_INVALID_INDEX); } } diff --git a/src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java index 8f4cf7be69e..6f083ad217f 100644 --- a/src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java @@ -1,12 +1,12 @@ package seedu.address.logic.parser; +import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; import org.junit.jupiter.api.Test; import seedu.address.commons.core.index.Index; -import seedu.address.logic.Messages; import seedu.address.logic.commands.AddNoteCommand; import seedu.address.model.person.Note; @@ -21,12 +21,14 @@ public void parse_allFieldsPresent_success() { @Test public void parse_missingDetails_failure() { + // No arguments + assertParseFailure(parser, "", + String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE)); + // Missing note details - assertParseFailure(parser, "1", - String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE)); + assertParseFailure(parser, "1", AddNoteCommandParser.MESSAGE_EMPTY_NOTE); // Missing index - assertParseFailure(parser, "Test note", - String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE)); + assertParseFailure(parser, "Test note", ParserUtil.MESSAGE_NOT_A_INDEX); } } diff --git a/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java b/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java index 6a40e14a649..37123fffa29 100644 --- a/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java @@ -1,6 +1,5 @@ package seedu.address.logic.parser; -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; @@ -27,6 +26,6 @@ public void parse_validArgs_returnsDeleteCommand() { @Test public void parse_invalidArgs_throwsParseException() { - assertParseFailure(parser, "a", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE)); + assertParseFailure(parser, "a", ParserUtil.MESSAGE_NOT_A_INDEX); } } diff --git a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java b/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java index 7c7757a27c5..5c814a43828 100644 --- a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java @@ -80,10 +80,10 @@ public void parse_missingParts_failure() { @Test public void parse_invalidPreamble_failure() { // negative index - assertParseFailure(parser, "-5" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT); + assertParseFailure(parser, "-5" + NAME_DESC_AMY, ParserUtil.MESSAGE_INVALID_INDEX); // zero index - assertParseFailure(parser, "0" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT); + assertParseFailure(parser, "0" + NAME_DESC_AMY, ParserUtil.MESSAGE_INVALID_INDEX); // invalid arguments being parsed as preamble assertParseFailure(parser, "1 some random string", MESSAGE_INVALID_FORMAT); diff --git a/src/test/java/seedu/address/logic/parser/OweCommandParserTest.java b/src/test/java/seedu/address/logic/parser/OweCommandParserTest.java index 58ba303e527..74a9ab0f374 100644 --- a/src/test/java/seedu/address/logic/parser/OweCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/OweCommandParserTest.java @@ -24,7 +24,7 @@ public void parse_validArgs_returnsOweCommand() { public void parse_invalidArgs_throwsParseException() { // Test with invalid index assertParseFailure(parser, "a 2.50", - ParserUtil.MESSAGE_INVALID_INDEX); + ParserUtil.MESSAGE_NOT_A_INDEX); // Test with invalid negative values assertParseFailure(parser, "1 -2.50", Balance.MESSAGE_CONSTRAINTS); diff --git a/src/test/java/seedu/address/logic/parser/PayCommandParserTest.java b/src/test/java/seedu/address/logic/parser/PayCommandParserTest.java index c30c8b4b0f5..baecf6620ec 100644 --- a/src/test/java/seedu/address/logic/parser/PayCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/PayCommandParserTest.java @@ -24,7 +24,7 @@ public void parse_validArgs_returnsPayCommand() { public void parse_invalidArgs_throwsParseException() { // Test with invalid index assertParseFailure(parser, "a 2.50", - ParserUtil.MESSAGE_INVALID_INDEX); + ParserUtil.MESSAGE_NOT_A_INDEX); // Test with invalid negative balance assertParseFailure(parser, "1 -2.50", Balance.MESSAGE_CONSTRAINTS); diff --git a/src/test/java/seedu/address/logic/parser/RemoveNoteCommandParserTest.java b/src/test/java/seedu/address/logic/parser/RemoveNoteCommandParserTest.java index c13e2568196..b9acc751c55 100644 --- a/src/test/java/seedu/address/logic/parser/RemoveNoteCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/RemoveNoteCommandParserTest.java @@ -34,8 +34,7 @@ public void parse_invalidArgs_throwsParseException() { String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemoveNoteCommand.MESSAGE_USAGE)); // non-numeric characters - assertParseFailure(parser, "a b", - String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemoveNoteCommand.MESSAGE_USAGE)); + assertParseFailure(parser, "a b", ParserUtil.MESSAGE_NOT_A_INDEX); // more than two numbers assertParseFailure(parser, "1 2 3", @@ -53,7 +52,6 @@ public void parse_invalidFormat_throwsParseException() { String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemoveNoteCommand.MESSAGE_USAGE)); // non-numeric characters - assertParseFailure(parser, "a b", - String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemoveNoteCommand.MESSAGE_USAGE)); + assertParseFailure(parser, "a b", ParserUtil.MESSAGE_NOT_A_INDEX); } } diff --git a/src/test/java/seedu/address/model/tag/TagTest.java b/src/test/java/seedu/address/model/tag/TagTest.java index 640055030d1..f9252c70567 100644 --- a/src/test/java/seedu/address/model/tag/TagTest.java +++ b/src/test/java/seedu/address/model/tag/TagTest.java @@ -1,5 +1,6 @@ package seedu.address.model.tag; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static seedu.address.testutil.Assert.assertThrows; @@ -36,4 +37,36 @@ public void isEmergencyTag() { assertFalse(Tag.EmergencyTags.isEmergencyTag("")); } + @Test + public void equals() { + Tag tag = new Tag("friends"); + + // same values (same case) -> returns true + assertTrue(tag.equals(new Tag("friends"))); + + // same values (i.e., when string is read, they are the same) -> returns true + assertTrue(tag.equals(new Tag("FRIENDS"))); + + // same object -> returns true + assertTrue(tag.equals(tag)); + + // null -> returns false + assertFalse(tag.equals(null)); + + // different types -> returns false + assertFalse(tag.equals(5.0f)); + + // different values -> returns false + assertFalse(tag.equals(new Tag("colleagues"))); + } + + @Test + public void testHashCode() { + Tag tag1 = new Tag("friends"); + Tag tag2 = new Tag("friends"); + Tag tag3 = new Tag("FRIENDS"); + assertEquals(tag1.hashCode(), tag2.hashCode()); + assertEquals(tag1.hashCode(), tag3.hashCode()); + } + }