Skip to content

Commit

Permalink
Refactor LogicManagerTest and EditCommand
Browse files Browse the repository at this point in the history
  • Loading branch information
annabeleng committed Nov 1, 2016
1 parent 876370d commit 83407dd
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 70 deletions.
80 changes: 37 additions & 43 deletions src/main/java/seedu/malitio/logic/commands/EditCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,48 +63,25 @@ public class EditCommand extends Command{

private UniqueTagList tags;

//@@author A0129595N
public EditCommand(char taskType, int targetIndex, String name, String due, String start, String end, Set<String> newTags)
throws IllegalValueException {
assert validArgTask(taskType, name, due, start, end, newTags) ;
this.taskType = taskType;
this.targetIndex = targetIndex;
if (!name.equals("")) {
if (notEmptyString(name)) {
this.name = new Name(name);
}
if (!due.equals("")) {
if (notEmptyString(due)) {
this.due = new DateTime(due);
}
if (!start.equals("")) {
if (notEmptyString(start)) {
this.start = new DateTime(start);
}
if (!end.equals("")) {
if (notEmptyString(end)) {
this.end = new DateTime(end);
}
this.tags = processTags(newTags);
}

/**
* processTags return a UniqueTagList of tags but returns null if no tags were entered.
* @param newTags
* @return UniqueTagList or Null
* @throws IllegalValueException
*/
private UniqueTagList processTags(Set<String> newTags) throws IllegalValueException {
if (!newTags.isEmpty() && newTags.toArray()[0].equals("null") && newTags.size()==1) {
return new UniqueTagList();
}
else if (!newTags.isEmpty()){
final Set<Tag> tagSet = new HashSet<>();
for (String tagName : newTags) {
tagSet.add(new Tag(tagName));
}
return new UniqueTagList(tagSet);
}
else {
return null;
}
}

@Override
public CommandResult execute() {
Expand Down Expand Up @@ -185,25 +162,16 @@ private void fillInTheGaps(Object taskToEdit) {
}

/**
* @param taskType
* can be f/d/e
* @param name
* @param due
* @param start
* @param end
* @param newTags
* @return true if at least one of the arguments to be edited (for the
* corresponding task) is non-empty and non-relevant argument is
* empty (String).
* Method to check for valid (at least one non-empty) arguments for the corresponding task type
*/
private boolean validArgTask(char taskType, String name, String due, String start, String end,
Set<String> newTags) {
if (taskType == 'f') {
return (!name.equals("") || !newTags.isEmpty()) && start.equals("") && end.equals("") && due.equals("");
return (notEmptyString(name) || !newTags.isEmpty()) && start.equals("") && end.equals("") && due.equals("");
} else if (taskType == 'd') {
return (!name.equals("") || !due.equals("") || !newTags.isEmpty()) && start.equals("") && end.equals("");
return (notEmptyString(name) || notEmptyString(due) || !newTags.isEmpty()) && start.equals("") && end.equals("");
} else {
return (!name.equals("") || !start.equals("") || !end.equals("") || !newTags.isEmpty()) && due.equals("");
return (notEmptyString(name) || notEmptyString(start) || notEmptyString(end) || !newTags.isEmpty()) && due.equals("");
}
}

Expand All @@ -214,9 +182,35 @@ private boolean isDeadline(Object taskToEdit) {
private boolean isFloatingTask(Object taskToEdit) {
return taskToEdit instanceof ReadOnlyFloatingTask;
}

private boolean notEmptyString(String name) {
return !name.equals("");
}

/**
* processTags return a UniqueTagList of tags or returns null if no tags were entered.
* @param newTags
* @return UniqueTagList or Null
* @throws IllegalValueException
*/
private UniqueTagList processTags(Set<String> newTags) throws IllegalValueException {
if (!newTags.isEmpty() && newTags.toArray()[0].equals("null") && newTags.size()==1) {
return new UniqueTagList();
}
else if (!newTags.isEmpty()){
final Set<Tag> tagSet = new HashSet<>();
for (String tagName : newTags) {
tagSet.add(new Tag(tagName));
}
return new UniqueTagList(tagSet);
}
else {
return null;
}
}

/**
* Replace the (Event)editedTask details if they are empty
* Replace the editedTask, type casted to Event, details if they are empty
* @param taskToEdit
*/
private void getEventDetails(Object taskToEdit) {
Expand All @@ -235,7 +229,7 @@ private void getEventDetails(Object taskToEdit) {
}

/**
* Replace the (Deadline)editedTask details if they are empty
* Replace the editedTask, type casted to Deadline, details if they are empty
* @param taskToEdit
*/
private void getDeadlineDetails(Object taskToEdit) {
Expand All @@ -251,7 +245,7 @@ private void getDeadlineDetails(Object taskToEdit) {
}

/**
* Replace the (FloatingTask) editedTask details if they are empty
* Replace the editedTask, type casted to Floating Task, details if they are empty
* @param taskToEdit
*/
private void getFloatingTaskDetails(Object taskToEdit) {
Expand Down
54 changes: 27 additions & 27 deletions src/test/java/seedu/malitio/logic/LogicManagerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ public class LogicManagerTest {
//These are for checking the correctness of the events raised
private ReadOnlyMalitio latestSavedMalitio;
private boolean helpShown;
private int targetedJumpIndex;

@Subscribe
private void handleLocalModelChangedEvent(MalitioChangedEvent abce) {
Expand All @@ -68,7 +67,6 @@ public void setup() {

latestSavedMalitio = new Malitio(model.getMalitio()); // last saved assumed to be up to date before.
helpShown = false;
targetedJumpIndex = -1; // non yet
}

@After
Expand Down Expand Up @@ -357,16 +355,16 @@ public void execute_deleteIndexNotFound_errorMessageShown() throws Exception {
@Test
public void execute_delete_removesCorrectTask() throws Exception {
TestDataHelper helper = new TestDataHelper();
List<FloatingTask> threeTasks = helper.generateFloatingTaskList(3);
List<FloatingTask> threeFloatingTasks = helper.generateFloatingTaskList(3);
List<Deadline> fiveDeadlines = helper.generateDeadlineList(5);
List<Event> fourEvents = helper.generateEventList(4);
Malitio expectedAB = helper.generateMalitio(threeTasks, fiveDeadlines, fourEvents);
expectedAB.removeTask(threeTasks.get(1));
helper.addToModel(model, threeTasks, fiveDeadlines, fourEvents);
Malitio expectedAB = helper.generateMalitio(threeFloatingTasks, fiveDeadlines, fourEvents);
expectedAB.removeTask(threeFloatingTasks.get(1));
helper.addToModel(model, threeFloatingTasks, fiveDeadlines, fourEvents);

// execute command and verify result for floating task
assertCommandBehavior("delete f2",
String.format(DeleteCommand.MESSAGE_DELETE_TASK_SUCCESS, threeTasks.get(1)),
String.format(DeleteCommand.MESSAGE_DELETE_TASK_SUCCESS, threeFloatingTasks.get(1)),
expectedAB,
expectedAB.getFloatingTaskList(),
expectedAB.getDeadlineList(),
Expand Down Expand Up @@ -402,10 +400,10 @@ public void execute_find_invalidArgsFormat() throws Exception {
@Test
public void execute_find_onlyMatchesFullWordsInNames() throws Exception {
TestDataHelper helper = new TestDataHelper();
FloatingTask pTarget1 = helper.generateTaskWithName("bla bla KEY bla");
FloatingTask pTarget2 = helper.generateTaskWithName("bla KEY bla bceofeia");
FloatingTask p1 = helper.generateTaskWithName("KE Y");
FloatingTask p2 = helper.generateTaskWithName("KEYKEYKEY sduauo");
FloatingTask fTarget1 = helper.generateTaskWithName("bla bla KEY bla");
FloatingTask fTarget2 = helper.generateTaskWithName("bla KEY bla bceofeia");
FloatingTask f1 = helper.generateTaskWithName("KE Y");
FloatingTask f2 = helper.generateTaskWithName("KEYKEYKEY sduauo");

Deadline dTarget1 = helper.generateDeadlineWithName("bla hey KEY bla");
Deadline dTarget2 = helper.generateDeadlineWithName("KEY asdalksjdjas");
Expand All @@ -414,11 +412,11 @@ public void execute_find_onlyMatchesFullWordsInNames() throws Exception {
Event eTarget1 = helper.generateEventWithName("askldj KEY");
Event e1 = helper.generateEventWithName("LOL KLEY");

List<FloatingTask> fourTasks = helper.generateFloatingTaskList(p1, pTarget1, p2, pTarget2);
List<FloatingTask> fourTasks = helper.generateFloatingTaskList(f1, fTarget1, f2, fTarget2);
List<Deadline> threeDeadlines = helper.generateDeadlineList(dTarget1, dTarget2, d1);
List<Event> twoEvents = helper.generateEventList(eTarget1, e1);
Malitio expectedAB = helper.generateMalitio(fourTasks, threeDeadlines, twoEvents);
List<FloatingTask> expectedFloatingTaskList = helper.generateFloatingTaskList(pTarget1, pTarget2);
List<FloatingTask> expectedFloatingTaskList = helper.generateFloatingTaskList(fTarget1, fTarget2);
List<Deadline> expectedDeadlineList = helper.generateDeadlineList(dTarget1, dTarget2);
List<Event> expectedEventList = helper.generateEventList(eTarget1);
helper.addToModel(model, fourTasks, threeDeadlines, twoEvents);
Expand Down Expand Up @@ -466,10 +464,10 @@ public void execute_find_isNotCaseSensitive() throws Exception {
@Test
public void execute_find_matchesIfAnyKeywordPresent() throws Exception {
TestDataHelper helper = new TestDataHelper();
FloatingTask pTarget1 = helper.generateTaskWithName("bla bla KEY bla");
FloatingTask pTarget2 = helper.generateTaskWithName("bla rAnDoM bla bceofeia");
FloatingTask pTarget3 = helper.generateTaskWithName("key key");
FloatingTask p1 = helper.generateTaskWithName("sduauo");
FloatingTask fTarget1 = helper.generateTaskWithName("bla bla KEY bla");
FloatingTask fTarget2 = helper.generateTaskWithName("bla rAnDoM bla bceofeia");
FloatingTask fTarget3 = helper.generateTaskWithName("key key");
FloatingTask f1 = helper.generateTaskWithName("sduauo");

Deadline dTarget1 = helper.generateDeadlineWithName("bla bla KEY");
Deadline dTarget2 = helper.generateDeadlineWithName("hehe rAnDoM");
Expand All @@ -479,11 +477,11 @@ public void execute_find_matchesIfAnyKeywordPresent() throws Exception {
Event eTarget2 = helper.generateEventWithName("rAnDoM lol");
Event e1 = helper.generateEventWithName("i want to sleep");

List<FloatingTask> fourTasks = helper.generateFloatingTaskList(pTarget1, p1, pTarget2, pTarget3);
List<FloatingTask> fourTasks = helper.generateFloatingTaskList(fTarget1, f1, fTarget2, fTarget3);
List<Deadline> threeDeadlines = helper.generateDeadlineList(dTarget1, dTarget2, d1);
List<Event> threeEvents = helper.generateEventList(eTarget1, eTarget2, e1);
Malitio expectedAB = helper.generateMalitio(fourTasks, threeDeadlines, threeEvents);
List<FloatingTask> expectedFloatingTaskList = helper.generateFloatingTaskList(pTarget1, pTarget2, pTarget3);
List<FloatingTask> expectedFloatingTaskList = helper.generateFloatingTaskList(fTarget1, fTarget2, fTarget3);
List<Deadline> expectedDeadlineList = helper.generateDeadlineList(dTarget1, dTarget2);
List<Event> expectedEventList = helper.generateEventList(eTarget1, eTarget2);
helper.addToModel(model, fourTasks, threeDeadlines, threeEvents);
Expand All @@ -499,10 +497,10 @@ public void execute_find_matchesIfAnyKeywordPresent() throws Exception {
@Test
public void execute_find_withinEachTask() throws Exception {
TestDataHelper helper = new TestDataHelper();
FloatingTask pTarget1 = helper.generateTaskWithName("bla bla KEY bla");
FloatingTask pTarget2 = helper.generateTaskWithName("bla rAnDoM bla bceofeia");
FloatingTask pTarget3 = helper.generateTaskWithName("key key");
FloatingTask p1 = helper.generateTaskWithName("sduauo");
FloatingTask fTarget1 = helper.generateTaskWithName("bla bla KEY bla");
FloatingTask fTarget2 = helper.generateTaskWithName("bla rAnDoM bla bceofeia");
FloatingTask fTarget3 = helper.generateTaskWithName("key key");
FloatingTask f1 = helper.generateTaskWithName("sduauo");

Deadline dTarget1 = helper.generateDeadlineWithName("bla bla KEY");
Deadline dTarget2 = helper.generateDeadlineWithName("hehe rAnDoM");
Expand All @@ -513,13 +511,13 @@ public void execute_find_withinEachTask() throws Exception {
Event e1 = helper.generateEventWithName("i want to sleep");

//Setup Malitio to have 4 floating tasks, 3 deadlines and 3 events.
List<FloatingTask> fourTasks = helper.generateFloatingTaskList(pTarget1, p1, pTarget2, pTarget3);
List<FloatingTask> fourTasks = helper.generateFloatingTaskList(fTarget1, f1, fTarget2, fTarget3);
List<Deadline> threeDeadlines = helper.generateDeadlineList(dTarget1, dTarget2, d1);
List<Event> threeEvents = helper.generateEventList(eTarget1, eTarget2, e1);
Malitio expectedAB = helper.generateMalitio(fourTasks, threeDeadlines, threeEvents);

//Find within floating tasks
List<FloatingTask> expectedFloatingTaskList = helper.generateFloatingTaskList(pTarget1, pTarget2, pTarget3);
List<FloatingTask> expectedFloatingTaskList = helper.generateFloatingTaskList(fTarget1, fTarget2, fTarget3);
List<Deadline> expectedDeadlineList = helper.generateDeadlineList(dTarget1, dTarget2, d1); // deadline list is unchanged when finding other task
List<Event> expectedEventList = helper.generateEventList(eTarget1, eTarget2, e1); // event list is unchanged when finding other task
helper.addToModel(model, fourTasks, threeDeadlines, threeEvents);
Expand Down Expand Up @@ -693,6 +691,7 @@ public void execute_undoThenRedo_afterEdit() throws Exception {
expectedAB.getFloatingTaskList(), expectedAB.getDeadlineList(), expectedAB.getEventList());

}
//@@author


/**
Expand Down Expand Up @@ -762,7 +761,8 @@ Event generateEvent(int seed) throws Exception {
return new Event(new Name("Deadline " + seed), new DateTime("tomorrow 3pm"), new DateTime("next week 4pm"),
new UniqueTagList(new Tag("tag" + Math.abs(seed)), new Tag("tag" + Math.abs(seed + 1))));
}


//@@author A0129595N
/** Generates the correct add command based on the task given */
String generateAddCommand(Object p) {
StringBuffer cmd = new StringBuffer();
Expand Down Expand Up @@ -832,7 +832,7 @@ boolean isFloatingTask(Object p) {
boolean isDeadline(Object p) {
return p instanceof Deadline;
}
//@@author
//@@author
/**
* Generates Malitio with auto-generated tasks.
*/
Expand Down

0 comments on commit 83407dd

Please sign in to comment.