diff --git a/src/main/java/seedu/address/logic/commands/GroupRemarkCommand.java b/src/main/java/seedu/address/logic/commands/GroupRemarkCommand.java index d54110499d3..d88ba29e5c6 100644 --- a/src/main/java/seedu/address/logic/commands/GroupRemarkCommand.java +++ b/src/main/java/seedu/address/logic/commands/GroupRemarkCommand.java @@ -66,6 +66,6 @@ public boolean equals(Object other) { // state check GroupRemarkCommand e = (GroupRemarkCommand) other; return groupRemark.equals(e.groupRemark) - && groupName.equals(e.groupName); + && groupRemark.equals(e.groupName); } } diff --git a/src/main/java/seedu/address/logic/commands/ListTimeGroupCommand.java b/src/main/java/seedu/address/logic/commands/ListTimeGroupCommand.java index fad15a76e45..ff39b081637 100644 --- a/src/main/java/seedu/address/logic/commands/ListTimeGroupCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListTimeGroupCommand.java @@ -17,13 +17,7 @@ public class ListTimeGroupCommand extends ListTimeCommand { + "Please provide the group's full name as in the existing contactlist."; private final Group group; - /** - * Constructor of ListTimeGroupCommand - * - * @param group Group to list time for. - */ public ListTimeGroupCommand(Group group) { - requireNonNull(group); this.group = group; } @Override diff --git a/src/main/java/seedu/address/logic/commands/ListTimePersonCommand.java b/src/main/java/seedu/address/logic/commands/ListTimePersonCommand.java index 55fea38c331..970ad8b2b2d 100644 --- a/src/main/java/seedu/address/logic/commands/ListTimePersonCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListTimePersonCommand.java @@ -17,13 +17,7 @@ public class ListTimePersonCommand extends ListTimeCommand { + "Please provide the person's full name as in the existing contactlist."; private final Name personName; - /** - * Constructor of ListTimePersonCommand - * - * @param personName Name of person to list time for. - */ public ListTimePersonCommand(Name personName) { - requireNonNull(personName); this.personName = personName; } diff --git a/src/main/java/seedu/address/logic/commands/UngroupPersonCommand.java b/src/main/java/seedu/address/logic/commands/UngroupPersonCommand.java index 37c32dac4ca..6fe6bdaec88 100644 --- a/src/main/java/seedu/address/logic/commands/UngroupPersonCommand.java +++ b/src/main/java/seedu/address/logic/commands/UngroupPersonCommand.java @@ -55,13 +55,12 @@ public boolean equals(Object other) { return true; } - if (!(other instanceof UngroupPersonCommand)) { + if (!(other instanceof GroupPersonCommand)) { return false; } UngroupPersonCommand otherUngroupPersonCommand = (UngroupPersonCommand) other; - return this.personName.equals(otherUngroupPersonCommand.personName) - && this.groupName.equals(otherUngroupPersonCommand.groupName); + return this.equals(otherUngroupPersonCommand); } diff --git a/src/test/java/seedu/address/logic/commands/AddGroupMeetingTimeCommandTest.java b/src/test/java/seedu/address/logic/commands/AddGroupMeetingTimeCommandTest.java deleted file mode 100644 index 7e9a785f7d4..00000000000 --- a/src/test/java/seedu/address/logic/commands/AddGroupMeetingTimeCommandTest.java +++ /dev/null @@ -1,322 +0,0 @@ -package seedu.address.logic.commands; - -import javafx.collections.ObservableList; -import javafx.util.Pair; -import org.junit.jupiter.api.Test; -import seedu.address.commons.core.GuiSettings; -import seedu.address.logic.Messages; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.ParserUtil; -import seedu.address.model.*; -import seedu.address.model.group.Group; -import seedu.address.model.group.GroupRemark; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.testutil.GroupBuilder; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.function.Predicate; - -import static java.util.Objects.requireNonNull; -import static org.junit.jupiter.api.Assertions.*; -import static seedu.address.logic.commands.AddGroupMeetingTimeCommand.MESSAGE_SUCCESS; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.testutil.Assert.assertThrows; - -public class AddGroupMeetingTimeCommandTest { - Group validGroupWithMeeting = new GroupBuilder().withTimeIntervalList(VALID_TIME_MON).build(); - Group validGroup = new GroupBuilder().build(); - - @Test - public void constructor_nullGroup_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> new AddGroupMeetingTimeCommand(null, null)); - } - - @Test - public void execute_groupWithNoMeeting_groupTimeIntervalAdditionSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroup); - - ArrayList validTimeInterval = new ArrayList<>(); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_TUE)); - - assertFalse(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_TUE))); - - CommandResult commandResult = new AddGroupMeetingTimeCommand(validGroup, validTimeInterval).execute(modelStub); - - // Time interval has been added - assertTrue(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_TUE))); - } - - @Test - public void execute_groupWithMeeting_groupTimeIntervalAdditionSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroupWithMeeting); - - ArrayList validTimeInterval = new ArrayList<>(); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_TUE)); - - assertTrue(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_MON))); - assertFalse(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_TUE))); - - CommandResult commandResult = new AddGroupMeetingTimeCommand(validGroupWithMeeting, validTimeInterval).execute(modelStub); - - // Time interval has been added - assertTrue(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_MON))); - assertTrue(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_TUE))); - } - - @Test - public void execute_multipleGroupTimeIntervals_additionSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroup); - - ArrayList validTimeInterval = new ArrayList<>(); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_MON)); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_TUE)); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_WED)); - - - assertFalse(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_MON))); - assertFalse(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_TUE))); - assertFalse(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_WED))); - - CommandResult commandResult = new AddGroupMeetingTimeCommand(validGroupWithMeeting, validTimeInterval).execute(modelStub); - - // Time interval has been added - assertTrue(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_MON))); - assertTrue(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_TUE))); - assertTrue(modelStub.hasTime(ParserUtil.parseEachInterval(VALID_TIME_WED))); - - } - - @Test - public void execute_duplicateTimeInterval_groupTimeIntervalAdditionFail() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroupWithMeeting); - - ArrayList invalidTimeInterval = new ArrayList<>(); - invalidTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_MON)); - - CommandResult expectedOutput = new CommandResult(String.format(MESSAGE_SUCCESS - + "There is a clash in these input timings with your existing timings:\n" - + "MON 1300 - MON 1400 " + "\n", Messages.format(validGroupWithMeeting))); - AddGroupMeetingTimeCommand actualOutput = new AddGroupMeetingTimeCommand(validGroupWithMeeting, invalidTimeInterval); - - assertEquals(expectedOutput, actualOutput.execute(modelStub)); - } - - @Test - public void execute_overlappingTimeInterval_groupTimeIntervalAdditionFail() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroupWithMeeting); - - ArrayList invalidTimeInterval = new ArrayList<>(); - invalidTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_MON_2)); - - CommandResult expectedOutput = new CommandResult(String.format(MESSAGE_SUCCESS - + "There is a clash in these input timings with your existing timings:\n" - + "MON 1330 - MON 1430 " + "\n", Messages.format(validGroupWithMeeting))); - AddGroupMeetingTimeCommand actualOutput = new AddGroupMeetingTimeCommand(validGroupWithMeeting, invalidTimeInterval); - - assertEquals(expectedOutput, actualOutput.execute(modelStub)); - } - - - /** - * A default model stub that has all methods failing. - */ - private class ModelStub implements Model { - @Override - public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyUserPrefs getUserPrefs() { - throw new AssertionError("This method should not be called."); - } - - @Override - public GuiSettings getGuiSettings() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Path getAddressBookFilePath() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBookFilePath(Path addressBookFilePath) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBook(ReadOnlyAddressBook newData) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Name personName) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Person deletePerson(String personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredPersonList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredGroupList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredPersonList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredGroupList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addGroup(Group g) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group deleteGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair groupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair ungroupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group addGroupRemark(String groupName, GroupRemark groupRemark) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToPerson(Name toAddPerson, ArrayList toAddFreeTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasGroup(Group group) { - throw new AssertionError("This method should not be called."); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromPerson(Name personName, ArrayList listOfTimesToDelete) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group findGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToGroup(Group toAdd, ArrayList toAddTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromGroup(Group group, - ArrayList toDeleteTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - public TimeIntervalList getTimeFromGroup(Group group) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPhone(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasEmail(Person person) { - throw new AssertionError("This method should not be called."); - } - } - - /** - * A Model stub that contains a single person and a time interval. - */ - private class ModelStubWithGroup extends ModelStub { - private final Group group; - - ModelStubWithGroup(Group group) { - requireNonNull(group); - this.group = group; - } - - public boolean hasGroup(Group group) { - requireNonNull(group); - return this.group.equals(group); - } - - public boolean hasTime(TimeInterval timeInterval) { - requireNonNull(timeInterval); - return this.group.hasTime(timeInterval); - } - - /** - * Adds meeting time to a group. - * - * @param toAdd The group to be modified. - * @param toAddTime ArrayList of Time Intervals to be added. - * @return String showing added meeting times and clashes (if any). - * @throws CommandException if the times cannot be added. - */ - @Override - public String addTimeToGroup(Group toAdd, ArrayList toAddTime) throws CommandException { - requireNonNull(toAdd); - Group groupInModel = this.group; - try { - return groupInModel.addTime(toAddTime); - } catch (CommandException e) { - throw new CommandException(e.getMessage()); - } - } - } -} diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index 375ea243438..cba39ca2cf2 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -2,7 +2,12 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.parser.CliSyntax.*; +import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.address.logic.parser.CliSyntax.PREFIX_FREETIME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUPTAG; +import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; import static seedu.address.testutil.Assert.assertThrows; import java.util.ArrayList; @@ -51,7 +56,6 @@ public class CommandTestUtil { + "CS2103T&"; // '&' not allowed in group names public static final String VALID_TIME_MON = "mon 1300 - mon 1400"; - public static final String VALID_TIME_MON_2 = "mon 1330 - mon 1430"; public static final String VALID_TIME_TUE = "tue 1300 - tue 1400"; public static final String VALID_TIME_WED = "wed 1300 - wed 1400"; public static final String VALID_TIME_MON_CAPS = "MON 1300 - mOn 1400"; @@ -61,7 +65,6 @@ public class CommandTestUtil { public static final String VALID_TIME_DESC_MON = " " + PREFIX_FREETIME + VALID_TIME_MON; public static final String VALID_TIME_DESC_TUE = " " + PREFIX_FREETIME + VALID_TIME_TUE; - public static final String VALID_TIME_DESC_WED = " " + PREFIX_FREETIME + VALID_TIME_WED; public static final String VALID_TIME_DESC_MON_2 = " " + PREFIX_FREETIME + VALID_TIME_MON_CAPS; public static final String INVALID_TIME_DESC_MON = " " + PREFIX_FREETIME + INVALID_TIME_MON; @@ -75,16 +78,6 @@ public class CommandTestUtil { public static final String PREAMBLE_WHITESPACE = "\t \r \n"; public static final String PREAMBLE_NON_EMPTY = "NonEmptyPreamble"; - public static final String VALID_GROUP_REMARK = "quiz tomorrow"; - public static final String GROUP_REMARK_DESC = " " + PREFIX_GROUPREMARK + VALID_GROUP_REMARK; - public static final String VALID_GROUP_REMARK_SPECIAL = "sdd&IFUDH%f*89fd*(F!899#$#%\"'`"; - public static final String GROUP_REMARK_SPECIAL_DESC = " " + PREFIX_GROUPREMARK + VALID_GROUP_REMARK_SPECIAL; - public static final String VALID_GROUP_REMARK_UNICODE = "我要吃面包"; - public static final String GROUP_REMARK_UNICODE_DESC = " " + PREFIX_GROUPREMARK + VALID_GROUP_REMARK_UNICODE; - public static final String VALID_GROUP_REMARK_OTHERS = "gU4&😊!"; - public static final String GROUP_REMARK_OTHERS_DESC = " " + PREFIX_GROUPREMARK + VALID_GROUP_REMARK_OTHERS; - - /** * Executes the given {@code command}, confirms that
diff --git a/src/test/java/seedu/address/logic/commands/GroupRemarkCommandTest.java b/src/test/java/seedu/address/logic/commands/GroupRemarkCommandTest.java deleted file mode 100644 index d852a6c8ca5..00000000000 --- a/src/test/java/seedu/address/logic/commands/GroupRemarkCommandTest.java +++ /dev/null @@ -1,293 +0,0 @@ -package seedu.address.logic.commands; - -import javafx.collections.ObservableList; -import javafx.util.Pair; -import org.junit.jupiter.api.Test; -import seedu.address.commons.core.GuiSettings; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.*; -import seedu.address.model.group.Group; -import seedu.address.model.group.GroupRemark; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.testutil.GroupBuilder; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.function.Predicate; - -import static java.util.Objects.requireNonNull; -import static org.junit.jupiter.api.Assertions.*; -import static seedu.address.logic.commands.AddGroupMeetingTimeCommand.MESSAGE_SUCCESS; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.testutil.Assert.assertThrows; - -public class GroupRemarkCommandTest { - Group validGroupWithMeeting = new GroupBuilder().withTimeIntervalList(VALID_TIME_MON).build(); - Group validGroup = new GroupBuilder().build(); - - @Test - public void constructor_nullGroup_nullRemark_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> new GroupRemarkCommand(null, null)); - } - - @Test - public void constructor_nullGroup_throwsNullPointerException() { - GroupRemark groupRemark = new GroupRemark(VALID_GROUP_REMARK); - assertThrows(NullPointerException.class, () -> new GroupRemarkCommand(null, groupRemark)); - } - - @Test - public void constructor_nullRemark_throwsNullPointerException() { - GroupRemark groupRemark = new GroupRemark(VALID_GROUP_REMARK); - assertThrows(NullPointerException.class, () -> new GroupRemarkCommand(validGroup.getGroupName(), null)); - } - - @Test - public void execute_addGroupRemarkSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroup); - assertEquals(" ", validGroup.getGroupRemark().toString()); - GroupRemark groupRemark = new GroupRemark(VALID_GROUP_REMARK); - CommandResult commandResult = new GroupRemarkCommand(validGroup.getGroupName(), groupRemark).execute(modelStub); - - // Group remark has been added - assertEquals(VALID_GROUP_REMARK, validGroup.getGroupRemark().toString()); - } - - @Test - public void execute_groupWithMeeting_addGroupRemarkSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroupWithMeeting); - assertEquals(" ", validGroupWithMeeting.getGroupRemark().toString()); - GroupRemark groupRemark = new GroupRemark(VALID_GROUP_REMARK); - CommandResult commandResult = new GroupRemarkCommand(validGroupWithMeeting.getGroupName(), groupRemark).execute(modelStub); - - // Group remark has been added - assertEquals(VALID_GROUP_REMARK, validGroupWithMeeting.getGroupRemark().toString()); - } - - @Test - public void execute_alphanumericSpecialCharacters_addGroupRemarkSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroup); - assertEquals(" ", validGroup.getGroupRemark().toString()); - GroupRemark groupRemark = new GroupRemark(VALID_GROUP_REMARK_SPECIAL); - CommandResult commandResult = new GroupRemarkCommand(validGroup.getGroupName(), groupRemark).execute(modelStub); - - // Group remark has been added - assertEquals(VALID_GROUP_REMARK_SPECIAL, validGroup.getGroupRemark().toString()); - } - - @Test - public void execute_unicodeCharacters_addGroupRemarkSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroup); - assertEquals(" ", validGroup.getGroupRemark().toString()); - GroupRemark groupRemark = new GroupRemark(VALID_GROUP_REMARK_UNICODE); - CommandResult commandResult = new GroupRemarkCommand(validGroup.getGroupName(), groupRemark).execute(modelStub); - - // Group remark has been added - assertEquals(VALID_GROUP_REMARK_UNICODE, validGroup.getGroupRemark().toString()); - } - - @Test - public void execute_validCharacters_addGroupRemarkSuccess() throws CommandException { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroup); - GroupRemark groupRemark = new GroupRemark(VALID_GROUP_REMARK_OTHERS); - CommandResult commandResult = new GroupRemarkCommand(validGroup.getGroupName(), groupRemark).execute(modelStub); - assertEquals(VALID_GROUP_REMARK_OTHERS, validGroup.getGroupRemark().toString()); - } - - /** - * A default model stub that has all methods failing. - */ - private class ModelStub implements Model { - @Override - public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyUserPrefs getUserPrefs() { - throw new AssertionError("This method should not be called."); - } - - @Override - public GuiSettings getGuiSettings() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Path getAddressBookFilePath() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBookFilePath(Path addressBookFilePath) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBook(ReadOnlyAddressBook newData) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Name personName) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Person deletePerson(String personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredPersonList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredGroupList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredPersonList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredGroupList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addGroup(Group g) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group deleteGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair groupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair ungroupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group addGroupRemark(String groupName, GroupRemark groupRemark) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToPerson(Name toAddPerson, ArrayList toAddFreeTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasGroup(Group group) { - throw new AssertionError("This method should not be called."); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromPerson(Name personName, ArrayList listOfTimesToDelete) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group findGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToGroup(Group toAdd, ArrayList toAddTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromGroup(Group group, - ArrayList toDeleteTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - public TimeIntervalList getTimeFromGroup(Group group) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPhone(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasEmail(Person person) { - throw new AssertionError("This method should not be called."); - } - } - - /** - * A Model stub that contains a single person and a time interval. - */ - private class ModelStubWithGroup extends ModelStub { - private final Group group; - - ModelStubWithGroup(Group group) { - requireNonNull(group); - this.group = group; - } - - public boolean hasGroup(Group group) { - requireNonNull(group); - return this.group.equals(group); - } - - public boolean hasTime(TimeInterval timeInterval) { - requireNonNull(timeInterval); - return this.group.hasTime(timeInterval); - } - - /** - * Adds remarks to a group. - * - * @param groupName Group to be modified. - * @param groupRemark Remark to be added. - * @return The modified group. - * @throws CommandException if the remark cannot be added. - */ - public Group addGroupRemark(String groupName, GroupRemark groupRemark) throws CommandException { - Group group = this.group; - group.setGroupRemark(groupRemark); - return group; - } - } -} diff --git a/src/test/java/seedu/address/logic/commands/ListTimeGroupCommandTest.java b/src/test/java/seedu/address/logic/commands/ListTimeGroupCommandTest.java deleted file mode 100644 index 8732f963df4..00000000000 --- a/src/test/java/seedu/address/logic/commands/ListTimeGroupCommandTest.java +++ /dev/null @@ -1,330 +0,0 @@ -package seedu.address.logic.commands; - -import javafx.collections.ObservableList; -import javafx.util.Pair; -import org.junit.jupiter.api.Test; -import seedu.address.commons.core.GuiSettings; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.ParserUtil; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.*; -import seedu.address.model.group.Group; -import seedu.address.model.group.GroupRemark; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.testutil.GroupBuilder; -import seedu.address.testutil.PersonBuilder; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.function.Predicate; - -import static java.util.Objects.requireNonNull; -import static org.junit.jupiter.api.Assertions.*; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.logic.commands.ListTimeGroupCommand.MESSAGE_LISTTIME_GROUP_SUCCESS; -import static seedu.address.logic.commands.ListTimePersonCommand.MESSAGE_LISTTIME_PERSON_SUCCESS; -import static seedu.address.testutil.Assert.assertThrows; - -public class ListTimeGroupCommandTest { - - Group validGroup = new GroupBuilder().build(); - - @Test - public void constructor_nullPerson_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> new ListTimeGroupCommand(null)); - } - - @Test - public void execute_groupWithNoTimeInterval_ListSuccess() throws Exception { - ModelStubWithGroup modelStub = new ModelStubWithGroup(validGroup); - - // Person has time interval to be listed - CommandResult commandResult = - new ListTimeGroupCommand(validGroup).execute(modelStub); - CommandResult expectedResult = - new CommandResult(String.format(MESSAGE_LISTTIME_GROUP_SUCCESS, - validGroup.getGroupName())); - - // Time interval has been deleted - assertEquals(expectedResult, commandResult); - } - - @Test - public void execute_personWithSingleTimeInterval_ListSuccess() throws Exception { - ModelStubGroupWithSingleTiming modelStub = new ModelStubGroupWithSingleTiming(validGroup); - - // Person has time interval to be listed - ArrayList validTimeInterval = new ArrayList<>(); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_MON)); - CommandResult commandResult = - new ListTimeGroupCommand(validGroup).execute(modelStub); - CommandResult expectedResult = - new CommandResult(String.format(MESSAGE_LISTTIME_GROUP_SUCCESS, - validGroup.getGroupName()) + "\nMON 1300 - MON 1400 "); - - // Time interval has been deleted - assertEquals(expectedResult, commandResult); - } - - @Test - public void execute_personWithMultipleTimeIntervals_ListSuccess() throws Exception { - ModelStubGroupWithMultipleTimings modelStub = new ModelStubGroupWithMultipleTimings(validGroup); - - // Person has time interval to be listed - ArrayList validTimeInterval = new ArrayList<>(); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_MON)); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_TUE)); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_WED)); - - CommandResult commandResult = - new ListTimeGroupCommand(validGroup).execute(modelStub); - CommandResult expectedResult = - new CommandResult(String.format(MESSAGE_LISTTIME_GROUP_SUCCESS, - validGroup.getGroupName()) + "\nMON 1300 - MON 1400 \nTUE 1300 - TUE 1400 \nWED 1300 - WED 1400 "); - - assertEquals(expectedResult, commandResult); - } - - @Test - public void execute_nonExistentPerson_ListFail() throws Exception { - ModelStubGroupWithMultipleTimings modelStub = new ModelStubGroupWithMultipleTimings(validGroup); - Group invalidGroup = new Group("CS2100"); - assertThrows(CommandException.class, () -> new ListTimeGroupCommand(invalidGroup).execute(modelStub)); - } - - /** - * A default model stub that have all of the methods failing. - */ - private class ModelStub implements Model { - @Override - public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyUserPrefs getUserPrefs() { - throw new AssertionError("This method should not be called."); - } - - @Override - public GuiSettings getGuiSettings() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Path getAddressBookFilePath() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBookFilePath(Path addressBookFilePath) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBook(ReadOnlyAddressBook newData) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Name personName) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Person deletePerson(String personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredPersonList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredGroupList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredPersonList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredGroupList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addGroup(Group g) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group deleteGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair groupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair ungroupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group addGroupRemark(String groupName, GroupRemark groupRemark) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToPerson(Name toAddPerson, ArrayList toAddFreeTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasGroup(Group group) { - throw new AssertionError("This method should not be called."); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromPerson(Name personName, ArrayList listOfTimesToDelete) - throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group findGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToGroup(Group toAdd, ArrayList toAddTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromGroup(Group group, - ArrayList toDeleteTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - public TimeIntervalList getTimeFromGroup(Group group) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPhone(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasEmail(Person person) { - throw new AssertionError("This method should not be called."); - } - } - - /** - * A Model stub that contains a single group with no time interval. - */ - private class ModelStubWithGroup extends ModelStub { - private final Group group; - - ModelStubWithGroup(Group group) throws ParseException { - requireNonNull(group); - this.group = group; - } - - public boolean hasGroup(Group group) { - requireNonNull(group); - return this.group.equals(group); - } - - @Override - public TimeIntervalList getTimeFromGroup(Group group) throws CommandException { - requireNonNull(group); - return group.getTime(); - } - } - - /** - * A Model stub that contains a single group and a time interval. - */ - private class ModelStubGroupWithSingleTiming extends ModelStub { - private final Group group; - - ModelStubGroupWithSingleTiming(Group group) throws ParseException, CommandException { - requireNonNull(group); - this.group = group; - this.group.addTime(ParserUtil.parseEachInterval(VALID_TIME_MON)); - } - - public boolean hasGroup(Group group) { - requireNonNull(group); - return this.group.equals(group); - } - - @Override - public TimeIntervalList getTimeFromGroup(Group group) { - requireNonNull(group); - return group.getTime(); - } - } - - /** - * A Model stub that always accept the person being added. - */ - private class ModelStubGroupWithMultipleTimings extends ModelStub { - private final Group group; - - ModelStubGroupWithMultipleTimings(Group group) throws ParseException, CommandException { - requireNonNull(group); - this.group = group; - this.group.addTime(ParserUtil.parseEachInterval(VALID_TIME_MON)); - this.group.addTime(ParserUtil.parseEachInterval(VALID_TIME_TUE)); - this.group.addTime(ParserUtil.parseEachInterval(VALID_TIME_WED)); - } - - public boolean hasGroup(Group group) { - requireNonNull(group); - return this.group.equals(group); - } - - @Override - public TimeIntervalList getTimeFromGroup(Group group) { - requireNonNull(group); - return group.getTime(); - } - } - -} diff --git a/src/test/java/seedu/address/logic/commands/ListTimePersonCommandTest.java b/src/test/java/seedu/address/logic/commands/ListTimePersonCommandTest.java deleted file mode 100644 index b7c76f7c689..00000000000 --- a/src/test/java/seedu/address/logic/commands/ListTimePersonCommandTest.java +++ /dev/null @@ -1,346 +0,0 @@ -package seedu.address.logic.commands; - -import javafx.collections.ObservableList; -import javafx.util.Pair; -import org.junit.jupiter.api.Test; -import seedu.address.commons.core.GuiSettings; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.ParserUtil; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.*; -import seedu.address.model.group.Group; -import seedu.address.model.group.GroupRemark; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.testutil.PersonBuilder; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.function.Predicate; - -import static java.util.Objects.requireNonNull; -import static org.junit.jupiter.api.Assertions.*; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.logic.commands.ListTimePersonCommand.MESSAGE_LISTTIME_PERSON_SUCCESS; -import static seedu.address.testutil.Assert.assertThrows; - -public class ListTimePersonCommandTest { - - Person validPerson = new PersonBuilder().build(); - - @Test - public void constructor_nullPerson_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> new ListTimePersonCommand(null)); - } - - @Test - public void execute_personWithNoTimeInterval_ListSuccess() throws Exception { - ModelStubWithPerson modelStub = new ModelStubWithPerson(validPerson); - - // Person has time interval to be listed - CommandResult commandResult = - new ListTimePersonCommand(validPerson.getName()).execute(modelStub); - CommandResult expectedResult = - new CommandResult(String.format(MESSAGE_LISTTIME_PERSON_SUCCESS, - validPerson.getName())); - - // Time interval has been deleted - assertEquals(expectedResult, commandResult); - } - - @Test - public void execute_personWithSingleTimeInterval_ListSuccess() throws Exception { - ModelStubPersonWithSingleTiming modelStub = new ModelStubPersonWithSingleTiming(validPerson); - - // Person has time interval to be listed - ArrayList validTimeInterval = new ArrayList<>(); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_MON)); - CommandResult commandResult = - new ListTimePersonCommand(validPerson.getName()).execute(modelStub); - CommandResult expectedResult = - new CommandResult(String.format(MESSAGE_LISTTIME_PERSON_SUCCESS, - validPerson.getName()) + "\nMON 1300 - MON 1400 "); - - // Time interval has been deleted - assertEquals(expectedResult, commandResult); - } - - @Test - public void execute_personWithMultipleTimeIntervals_ListSuccess() throws Exception { - ModelStubPersonWithMultipleTimings modelStub = new ModelStubPersonWithMultipleTimings(validPerson); - - // Person has time interval to be listed - ArrayList validTimeInterval = new ArrayList<>(); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_MON)); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_TUE)); - validTimeInterval.add(ParserUtil.parseEachInterval(VALID_TIME_WED)); - - CommandResult commandResult = - new ListTimePersonCommand(validPerson.getName()).execute(modelStub); - CommandResult expectedResult = - new CommandResult(String.format(MESSAGE_LISTTIME_PERSON_SUCCESS, - validPerson.getName()) + "\nMON 1300 - MON 1400 \nTUE 1300 - TUE 1400 \nWED 1300 - WED 1400 "); - - assertEquals(expectedResult, commandResult); - } - - @Test - public void execute_nonExistentPerson_ListFail() throws Exception { - ModelStubPersonWithMultipleTimings modelStub = new ModelStubPersonWithMultipleTimings(validPerson); - Name invalidName = new Name("John"); - assertThrows(CommandException.class, () -> new ListTimePersonCommand(invalidName).execute(modelStub)); - } - - /** - * A default model stub that have all of the methods failing. - */ - private class ModelStub implements Model { - @Override - public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyUserPrefs getUserPrefs() { - throw new AssertionError("This method should not be called."); - } - - @Override - public GuiSettings getGuiSettings() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Path getAddressBookFilePath() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBookFilePath(Path addressBookFilePath) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBook(ReadOnlyAddressBook newData) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Name personName) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Person deletePerson(String personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredPersonList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public ObservableList getFilteredGroupList() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredPersonList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void updateFilteredGroupList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addGroup(Group g) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group deleteGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair groupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair ungroupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group addGroupRemark(String groupName, GroupRemark groupRemark) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToPerson(Name toAddPerson, ArrayList toAddFreeTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasGroup(Group group) { - throw new AssertionError("This method should not be called."); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromPerson(Name personName, ArrayList listOfTimesToDelete) - throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group findGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToGroup(Group toAdd, ArrayList toAddTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromGroup(Group group, - ArrayList toDeleteTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - public TimeIntervalList getTimeFromGroup(Group group) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPhone(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasEmail(Person person) { - throw new AssertionError("This method should not be called."); - } - } - - /** - * A Model stub that contains a single person with no time interval. - */ - private class ModelStubWithPerson extends ModelStub { - private final Person person; - - ModelStubWithPerson(Person person) throws ParseException { - requireNonNull(person); - this.person = person; - } - - public boolean hasPerson(Name person) { - requireNonNull(person); - return this.person.getName().equals(person); - } - - public boolean hasTime(TimeInterval timeInterval) { - requireNonNull(timeInterval); - return this.person.hasFreeTime(timeInterval); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - requireNonNull(personName); - Person person = this.person; - return person.getTime(); - } - } - - /** - * A Model stub that contains a single person and a time interval. - */ - private class ModelStubPersonWithSingleTiming extends ModelStub { - private final Person person; - - ModelStubPersonWithSingleTiming(Person person) throws ParseException { - requireNonNull(person); - this.person = person; - this.person.addFreeTime(ParserUtil.parseEachInterval(VALID_TIME_MON)); - } - - public boolean hasPerson(Name person) { - requireNonNull(person); - return this.person.getName().equals(person); - } - - public boolean hasTime(TimeInterval timeInterval) { - requireNonNull(timeInterval); - return this.person.hasFreeTime(timeInterval); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - requireNonNull(personName); - Person person = this.person; - return person.getTime(); - } - } - - /** - * A Model stub that always accept the person being added. - */ - private class ModelStubPersonWithMultipleTimings extends ModelStub { - private final Person person; - - ModelStubPersonWithMultipleTimings(Person person) throws ParseException { - requireNonNull(person); - this.person = person; - this.person.addFreeTime(ParserUtil.parseEachInterval(VALID_TIME_MON)); - this.person.addFreeTime(ParserUtil.parseEachInterval(VALID_TIME_TUE)); - this.person.addFreeTime(ParserUtil.parseEachInterval(VALID_TIME_WED)); - } - - public boolean hasPerson(Name person) { - requireNonNull(person); - return this.person.getName().equals(person); - } - - public boolean hasTime(TimeInterval timeInterval) { - requireNonNull(timeInterval); - return this.person.hasFreeTime(timeInterval); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - requireNonNull(personName); - Person person = this.person; - return person.getTime(); - } - } - -} diff --git a/src/test/java/seedu/address/logic/commands/UngroupPersonCommandTest.java b/src/test/java/seedu/address/logic/commands/UngroupPersonCommandTest.java index 9c5d466db87..1b0ad07e46e 100644 --- a/src/test/java/seedu/address/logic/commands/UngroupPersonCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/UngroupPersonCommandTest.java @@ -1,315 +1,95 @@ package seedu.address.logic.commands; -import javafx.collections.ObservableList; -import javafx.util.Pair; -import org.junit.jupiter.api.Test; -import seedu.address.commons.core.GuiSettings; - 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.logic.commands.CommandTestUtil.assertCommandFailure; +import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import org.junit.jupiter.api.Test; + +import javafx.util.Pair; +import seedu.address.logic.Messages; import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.*; +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; import seedu.address.model.group.Group; -import seedu.address.model.group.GroupRemark; -import seedu.address.model.person.Name; import seedu.address.model.person.Person; -import seedu.address.testutil.GroupBuilder; -import seedu.address.testutil.PersonBuilder; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.function.Predicate; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; -import static seedu.address.testutil.Assert.assertThrows; public class UngroupPersonCommandTest { - Group validGroup = new GroupBuilder().build(); - Person validPerson = new PersonBuilder().build(); + private static final String PERSON_NAME_ALEX_YEOH_EXAMPLE = "Alex Yeoh"; + private static final String PERSON_NAME_BERNICE_EXAMPLE = "Bernice Yu"; + private static final String GROUP_NAME_CS2103T_EXAMPLE = "CS2103T"; + private static final String GROUP_NAME_ST2334_EXAMPLE = "ST2334"; + private static final String PERSON_NAME_INCOMPLETE_EXAMPLE = "Alex"; + private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); @Test - public void constructor_nullPerson_nullGroup_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> new UngroupPersonCommand(null, null)); + public void validName_validGroup_success() throws CommandException { + Pair pairToUngroup = model.ungroupPerson(PERSON_NAME_ALEX_YEOH_EXAMPLE, + GROUP_NAME_CS2103T_EXAMPLE); + Person personToUngroup = pairToUngroup.getKey(); + Group groupToUngroup = pairToUngroup.getValue(); + String expectedMessage = String.format(UngroupPersonCommand.MESSAGE_SUCCESS, + personToUngroup.getName().fullName); + ModelManager expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + expectedModel.ungroupPerson(personToUngroup.getName().fullName, groupToUngroup.getGroupName()); + + UngroupPersonCommand ungroupPersonCommand = new UngroupPersonCommand(PERSON_NAME_ALEX_YEOH_EXAMPLE, + GROUP_NAME_CS2103T_EXAMPLE); + + assertCommandSuccess(ungroupPersonCommand, model, expectedMessage, expectedModel); } @Test - public void execute_ungroupPersonSuccess() throws CommandException { - ModelStubWithGroupAndSingleMember modelStub = new ModelStubWithGroupAndSingleMember(validGroup, validPerson); - assertTrue(validGroup.contains(validPerson)); - - CommandResult commandResult = new UngroupPersonCommand(validGroup.getGroupName(), - validPerson.getName().toString()).execute(modelStub); + public void invalidName_throwsCommandException() throws CommandException { + UngroupPersonCommand ungroupPersonCommand = + new UngroupPersonCommand(PERSON_NAME_INCOMPLETE_EXAMPLE, GROUP_NAME_CS2103T_EXAMPLE); - assertFalse(validGroup.contains(validPerson)); + assertCommandFailure(ungroupPersonCommand, model, Messages.MESSAGE_NO_PERSON_WITH_NAME_FOUND); } @Test - public void execute_personNotInGroup_ungroupPersonFailure() throws CommandException { - ModelStubWithEmptyGroup modelStub = new ModelStubWithEmptyGroup(validGroup, validPerson); - assertFalse(validGroup.contains(validPerson)); - - assertThrows(CommandException.class, () -> new UngroupPersonCommand(validGroup.getGroupName(), - validPerson.getName().toString()).execute(modelStub)); - } - - /** - * A default model stub that has all methods failing. - */ - private class ModelStub implements Model { - @Override - public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyUserPrefs getUserPrefs() { - throw new AssertionError("This method should not be called."); - } - - @Override - public GuiSettings getGuiSettings() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Path getAddressBookFilePath() { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBookFilePath(Path addressBookFilePath) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void addPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public void setAddressBook(ReadOnlyAddressBook newData) { - throw new AssertionError("This method should not be called."); - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPerson(Name personName) { - throw new AssertionError("This method should not be called."); - } - - @Override - public Person deletePerson(String personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } + public void equals() { + UngroupPersonCommand ungroupPersonFirstCommand = + new UngroupPersonCommand(PERSON_NAME_ALEX_YEOH_EXAMPLE, GROUP_NAME_CS2103T_EXAMPLE); + UngroupPersonCommand ungroupPersonSecondCommand = + new UngroupPersonCommand(PERSON_NAME_BERNICE_EXAMPLE, GROUP_NAME_CS2103T_EXAMPLE); + UngroupPersonCommand ungroupPersonThirdCommand = + new UngroupPersonCommand(PERSON_NAME_ALEX_YEOH_EXAMPLE, GROUP_NAME_ST2334_EXAMPLE); - @Override - public ObservableList getFilteredPersonList() { - throw new AssertionError("This method should not be called."); - } - @Override - public ObservableList getFilteredGroupList() { - throw new AssertionError("This method should not be called."); - } + // same object -> returns true + assertTrue(ungroupPersonFirstCommand.equals(ungroupPersonFirstCommand)); - @Override - public void updateFilteredPersonList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } + // same values -> returns true + UngroupPersonCommand ungroupPersonFirstCommandCopy = + new UngroupPersonCommand(PERSON_NAME_ALEX_YEOH_EXAMPLE, GROUP_NAME_CS2103T_EXAMPLE); + assertTrue(ungroupPersonFirstCommand.equals(ungroupPersonFirstCommandCopy)); - @Override - public void updateFilteredGroupList(Predicate predicate) { - throw new AssertionError("This method should not be called."); - } + // different types -> returns false + assertFalse(ungroupPersonFirstCommand.equals(1)); - @Override - public void addGroup(Group g) { - throw new AssertionError("This method should not be called."); - } + // null -> returns false + assertFalse(ungroupPersonFirstCommand.equals(null)); - @Override - public Group deleteGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } + // different person -> returns false + assertFalse(ungroupPersonFirstCommand.equals(ungroupPersonSecondCommand)); - @Override - public Pair groupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Pair ungroupPerson(String personName, String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group addGroupRemark(String groupName, GroupRemark groupRemark) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToPerson(Name toAddPerson, ArrayList toAddFreeTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasGroup(Group group) { - throw new AssertionError("This method should not be called."); - } - - @Override - public TimeIntervalList getTimeFromPerson(Name personName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromPerson(Name personName, ArrayList listOfTimesToDelete) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public Group findGroup(String groupName) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String addTimeToGroup(Group toAdd, ArrayList toAddTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public String deleteTimeFromGroup(Group group, - ArrayList toDeleteTime) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - public TimeIntervalList getTimeFromGroup(Group group) throws CommandException { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasPhone(Person person) { - throw new AssertionError("This method should not be called."); - } - - @Override - public boolean hasEmail(Person person) { - throw new AssertionError("This method should not be called."); - } - } - - /** - * A Model stub that contains a single person in a group. - */ - private class ModelStubWithGroupAndSingleMember extends ModelStub { - private final Group group; - private final Person person; - ModelStubWithGroupAndSingleMember(Group group, Person person) throws CommandException { - requireAllNonNull(group, person); - this.group = group; - this.person = person; - group.addPerson(person); - person.addGroup(group); - } - - public boolean hasGroup(Group group) { - requireNonNull(group); - return this.group.equals(group); - } - - /** - * Unassigns person to group. - * - * @param person Person to be grouped. - * @param group Group in consideration. - * @throws CommandException if person has already been assigned to group. - */ - private void unassignGroup(Person person, Group group) throws CommandException { - group.removePerson(person); - person.removeGroup(group); - } - - /** - * Removes person from group. - * - * @param personName String representing person name. - * @param groupName String representing group name. - * @return Pair containing the Person and the Group. - * @throws CommandException if the person cannot be removed from the group. - */ - @Override - public Pair ungroupPerson(String personName, String groupName) throws CommandException { - Person person = this.person; - Group group = this.group; - this.unassignGroup(person, group); - Pair output = new Pair<>(person, group); - return output; - } + // different group -> returns false + assertFalse(ungroupPersonFirstCommand.equals(ungroupPersonThirdCommand)); } - /** - * A Model stub that contains a single person in a group. - */ - private class ModelStubWithEmptyGroup extends ModelStub { - private final Group group; - private final Person person; - - ModelStubWithEmptyGroup(Group group, Person person) { - requireAllNonNull(group, person); - this.group = group; - this.person = person; - } - - public boolean hasGroup(Group group) { - requireNonNull(group); - return this.group.equals(group); - } - - /** - * Unassigns person to group. - * - * @param person Person to be grouped. - * @param group Group in consideration. - * @throws CommandException if person has already been assigned to group. - */ - private void unassignGroup(Person person, Group group) throws CommandException { - group.removePerson(person); - person.removeGroup(group); - } - - /** - * Removes person from group. - * - * @param personName String representing person name. - * @param groupName String representing group name. - * @return Pair containing the Person and the Group. - * @throws CommandException if the person cannot be removed from the group. - */ - @Override - public Pair ungroupPerson(String personName, String groupName) throws CommandException { - Person person = this.person; - Group group = this.group; - this.unassignGroup(person, group); - Pair output = new Pair<>(person, group); - return output; - } + @Test + public void toStringMethod() { + UngroupPersonCommand ungroupPersonCommand = new UngroupPersonCommand(PERSON_NAME_ALEX_YEOH_EXAMPLE, + GROUP_NAME_CS2103T_EXAMPLE); + String expected = UngroupPersonCommand.class.getCanonicalName() + + "{personName=" + PERSON_NAME_ALEX_YEOH_EXAMPLE + ", " + + "groupName=" + GROUP_NAME_CS2103T_EXAMPLE + "}"; + assertEquals(expected, ungroupPersonCommand.toString()); } } diff --git a/src/test/java/seedu/address/logic/parser/AddGroupMeetingTimeCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AddGroupMeetingTimeCommandParserTest.java deleted file mode 100644 index 494b29047d8..00000000000 --- a/src/test/java/seedu/address/logic/parser/AddGroupMeetingTimeCommandParserTest.java +++ /dev/null @@ -1,75 +0,0 @@ -package seedu.address.logic.parser; - -import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.AddGroupMeetingTimeCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.TimeInterval; -import seedu.address.model.group.Group; - -import java.util.ArrayList; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_CS2103T; -import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUPTAG; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; - -public class AddGroupMeetingTimeCommandParserTest { - AddGroupMeetingTimeCommandParser parser = new AddGroupMeetingTimeCommandParser(); - - @Test - public void parse_addGroupMeetingTime_success() throws ParseException { - ArrayList list = new ArrayList<>(); - TimeInterval validTimeMon = ParserUtil.parseEachInterval(VALID_TIME_MON); - list.add(validTimeMon); - - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + VALID_TIME_DESC_MON, - new AddGroupMeetingTimeCommand(new Group(VALID_GROUP_CS2103T), list)); - } - - @Test - public void parse_addMultipleGroupMeetingTime_success() throws ParseException { - ArrayList list = new ArrayList<>(); - TimeInterval validTimeMon = ParserUtil.parseEachInterval(VALID_TIME_MON); - TimeInterval validTimeTue = ParserUtil.parseEachInterval(VALID_TIME_TUE); - TimeInterval validTimeWed = ParserUtil.parseEachInterval(VALID_TIME_WED); - list.add(validTimeMon); - list.add(validTimeTue); - list.add(validTimeWed); - - assertParseSuccess(parser, - PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + VALID_TIME_DESC_MON - + VALID_TIME_DESC_TUE + VALID_TIME_DESC_WED, - new AddGroupMeetingTimeCommand(new Group(VALID_GROUP_CS2103T), list)); - } - - @Test - public void parse_addClashingGroupMeetingTime_failure() throws ParseException { - ArrayList list = new ArrayList<>(); - TimeInterval validTimeMon = ParserUtil.parseEachInterval(VALID_TIME_MON); - TimeInterval validTimeMon2 = ParserUtil.parseEachInterval(VALID_TIME_MON_2); - list.add(validTimeMon); - list.add(validTimeMon2); - - assertParseFailure(parser, - PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + VALID_TIME_DESC_MON + VALID_TIME_DESC_MON_2, - "No overlap is allowed in your interval. \n" + - " t/mon 1200 - mon 1600 t/mon 1400 - mon 1800 is not allowed. Write it as mon 1200 - mon 1800"); - } - - @Test - public void parse_compulsoryFieldsMissing_failure() { - assertParseFailure(parser, PREAMBLE_WHITESPACE + VALID_GROUP_CS2103T + VALID_TIME_DESC_MON, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupMeetingTimeCommand.MESSAGE_USAGE)); - - assertParseFailure(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + VALID_TIME_MON, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupMeetingTimeCommand.MESSAGE_USAGE)); - } - - @Test - public void parse_duplicateFields_failure() { - assertParseFailure(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + NAME_DESC_CS + VALID_TIME_DESC_MON, - "Multiple values specified for the following single-valued field(s): " + PREFIX_GROUPTAG); - } -} diff --git a/src/test/java/seedu/address/logic/parser/GroupRemarkCommandParserTest.java b/src/test/java/seedu/address/logic/parser/GroupRemarkCommandParserTest.java deleted file mode 100644 index d8a41ec1d5d..00000000000 --- a/src/test/java/seedu/address/logic/parser/GroupRemarkCommandParserTest.java +++ /dev/null @@ -1,65 +0,0 @@ -package seedu.address.logic.parser; - -import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.GroupRemarkCommand; -import seedu.address.model.group.Group; -import seedu.address.model.group.GroupRemark; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUPREMARK; -import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUPTAG; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; - -public class GroupRemarkCommandParserTest { - - private GroupRemarkCommandParser parser = new GroupRemarkCommandParser(); - - @Test - public void parse_validArgs_returnsGroupRemarkCommand() { - Group expectedGroup = new Group("CS2103T"); - - // valid group and remark - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + GROUP_REMARK_DESC, - new GroupRemarkCommand(expectedGroup.getGroupName(), new GroupRemark(VALID_GROUP_REMARK))); - - // valid group and alphanumeric remark - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + GROUP_REMARK_SPECIAL_DESC, - new GroupRemarkCommand(expectedGroup.getGroupName(), new GroupRemark(VALID_GROUP_REMARK_SPECIAL))); - - // valid group and unicode remark - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + GROUP_REMARK_UNICODE_DESC, - new GroupRemarkCommand(expectedGroup.getGroupName(), new GroupRemark(VALID_GROUP_REMARK_UNICODE))); - - // valid group and other remark - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + GROUP_REMARK_OTHERS_DESC, - new GroupRemarkCommand(expectedGroup.getGroupName(), new GroupRemark(VALID_GROUP_REMARK_OTHERS))); - } - - @Test - public void parse_compulsoryFieldMissingPrefix_failure() { - // missing name prefix - assertParseFailure(parser, VALID_GROUP_CS + GROUP_REMARK_DESC, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, GroupRemarkCommand.MESSAGE_USAGE)); - - // missing group prefix - assertParseFailure(parser, NAME_DESC_CS + VALID_GROUP_REMARK, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, GroupRemarkCommand.MESSAGE_USAGE)); - - // missing time prefix - assertParseFailure(parser, VALID_GROUP_CS + VALID_GROUP_REMARK, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, GroupRemarkCommand.MESSAGE_USAGE)); - } - - @Test - public void parse_duplicatePrefix_failure() { - // duplicate remark prefix - assertParseFailure(parser, NAME_DESC_CS + GROUP_REMARK_DESC + GROUP_REMARK_DESC, - "Multiple values specified for the following single-valued field(s): " + PREFIX_GROUPREMARK); - - // duplicate group prefix - assertParseFailure(parser, NAME_DESC_CS + NAME_DESC_CS + GROUP_REMARK_DESC, - "Multiple values specified for the following single-valued field(s): " + PREFIX_GROUPTAG); - } -} diff --git a/src/test/java/seedu/address/logic/parser/ListTimeCommandParserTest.java b/src/test/java/seedu/address/logic/parser/ListTimeCommandParserTest.java deleted file mode 100644 index a63518bbfb0..00000000000 --- a/src/test/java/seedu/address/logic/parser/ListTimeCommandParserTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package seedu.address.logic.parser; - -import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.ListTimeGroupCommand; -import seedu.address.logic.commands.ListTimePersonCommand; -import seedu.address.model.group.Group; -import seedu.address.model.person.Name; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUPTAG; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; - -public class ListTimeCommandParserTest { - ListTimeCommandParser parser = new ListTimeCommandParser(); - - @Test - public void parse_listTimePerson_success() { - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_AMY, - new ListTimePersonCommand(new Name(VALID_NAME_AMY))); - } - - @Test - public void parse_listTimeGroup_success() { - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T, - new ListTimeGroupCommand(new Group(VALID_GROUP_CS2103T))); - } - - @Test - public void parse_compulsoryFieldsMissing_failure() { - assertParseFailure(parser, PREAMBLE_WHITESPACE + VALID_NAME_AMY, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListTimePersonCommand.MESSAGE_USAGE)); - - assertParseFailure(parser, PREAMBLE_WHITESPACE + VALID_GROUP_CS2103T, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListTimeGroupCommand.MESSAGE_USAGE)); - } - - @Test - public void parse_duplicateFields_failure() { - assertParseFailure(parser, PREAMBLE_WHITESPACE + NAME_DESC_AMY + NAME_DESC_AMY, - "Multiple values specified for the following single-valued field(s): " + PREFIX_NAME); - - assertParseFailure(parser, PREAMBLE_WHITESPACE + NAME_DESC_CS2103T + NAME_DESC_CS2103T, - "Multiple values specified for the following single-valued field(s): " + PREFIX_GROUPTAG); - } -} diff --git a/src/test/java/seedu/address/logic/parser/UngroupPersonCommandParserTest.java b/src/test/java/seedu/address/logic/parser/UngroupPersonCommandParserTest.java index f66c165c809..e75d5477c20 100644 --- a/src/test/java/seedu/address/logic/parser/UngroupPersonCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/UngroupPersonCommandParserTest.java @@ -1,43 +1,56 @@ package seedu.address.logic.parser; -import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.UngroupPersonCommand; - import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.commands.CommandTestUtil.*; -import static seedu.address.logic.parser.CliSyntax.*; +import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY; +import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE; +import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUPTAG; +import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; 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.logic.commands.UngroupPersonCommand; + public class UngroupPersonCommandParserTest { + private static final String PERSON_NAME_BOB = "Bob Lee"; + private static final String GROUP_NAME_CS2100 = "CS2100"; + + private static final String PERSON_NAME_DESC_BOB = " " + PREFIX_NAME + PERSON_NAME_BOB; + private static final String GROUP_NAME_DESC_CS2100 = " " + PREFIX_GROUPTAG + GROUP_NAME_CS2100; + private UngroupPersonCommandParser parser = new UngroupPersonCommandParser(); @Test public void parse_allFieldsPresent_success() { - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_AMY + NAME_DESC_CS2103T, - new UngroupPersonCommand(VALID_NAME_AMY, VALID_GROUP_CS2103T)); + assertParseSuccess(parser, PERSON_NAME_DESC_BOB + GROUP_NAME_DESC_CS2100, + new UngroupPersonCommand(PERSON_NAME_BOB, GROUP_NAME_CS2100)); + + // empty preamble + assertParseSuccess(parser, PREAMBLE_WHITESPACE + PERSON_NAME_DESC_BOB + GROUP_NAME_DESC_CS2100, + new UngroupPersonCommand(PERSON_NAME_BOB, GROUP_NAME_CS2100)); } @Test - public void parse_compulsoryFieldsMissing_failure() { - assertParseFailure(parser, PREAMBLE_WHITESPACE + VALID_NAME_AMY + VALID_GROUP_CS2103T, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, UngroupPersonCommand.MESSAGE_USAGE)); + public void parse_personNameMissing_failure() { + String expectedMessage = String.format(MESSAGE_INVALID_COMMAND_FORMAT, UngroupPersonCommand.MESSAGE_USAGE); - assertParseFailure(parser, PREAMBLE_WHITESPACE + NAME_DESC_AMY + VALID_GROUP_CS2103T, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, UngroupPersonCommand.MESSAGE_USAGE)); + // missing person name prefix + assertParseFailure(parser, PERSON_NAME_BOB + GROUP_NAME_DESC_CS2100, expectedMessage); - assertParseFailure(parser, PREAMBLE_WHITESPACE + VALID_NAME_AMY + NAME_DESC_CS2103T, - String.format(MESSAGE_INVALID_COMMAND_FORMAT, UngroupPersonCommand.MESSAGE_USAGE)); + // missing group name prefix + assertParseFailure(parser, PERSON_NAME_DESC_BOB + GROUP_NAME_CS2100, expectedMessage); + + // missing both prefixes + assertParseFailure(parser, PERSON_NAME_BOB + GROUP_NAME_CS2100, expectedMessage); } @Test - public void parse_duplicatePrefix_failure() { - // duplicate remark prefix - assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + NAME_DESC_CS2103T, - "Multiple values specified for the following single-valued field(s): " + PREFIX_NAME); - - // duplicate group prefix - assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_CS2103T + NAME_DESC_CS2103T, - "Multiple values specified for the following single-valued field(s): " + PREFIX_GROUPTAG); + public void parse_nonEmptyPreamble_failure() { + String expectedMessage = String.format(MESSAGE_INVALID_COMMAND_FORMAT, UngroupPersonCommand.MESSAGE_USAGE); + + assertParseFailure(parser, PREAMBLE_NON_EMPTY + PERSON_NAME_DESC_BOB + GROUP_NAME_DESC_CS2100, + expectedMessage); } + }