package seedu.taskell.testutil;

import seedu.taskell.model.tag.Tag;
import seedu.taskell.model.tag.UniqueTagList;
import seedu.taskell.model.task.*;

/**
 * A mutable task object. For testing only.
 */
public class TestTask implements ReadOnlyTask {

    private Description description;
    private String taskType;
    private TaskPriority taskPriority;
    private TaskTime startTime;
    private TaskTime endTime;
    private TaskDate startDate;
    private TaskDate endDate;
    private TaskStatus taskStatus;
    private UniqueTagList tags;

    public TestTask() {
        tags = new UniqueTagList();
    }
    
    public TestTask(Description description, String taskType, TaskPriority taskPriority, TaskTime startTime, 
              TaskTime endTime, TaskDate startDate, TaskDate endDate, TaskStatus taskStatus, UniqueTagList tags) {
        this.description = description;
        this.taskType = taskType;
        this.startDate = startDate;
        this.endDate = endDate;
        this.endDate = endDate;
        this.startTime = startTime;
        this.endTime = endTime;
        this.taskPriority = taskPriority;
        this.taskStatus = taskStatus;
        this.tags = new UniqueTagList(tags);
    }

    public void setDescription(Description description) {
        this.description = description;
    }
    
    public void setTaskType(String taskType) {
        this.taskType = taskType;
    }

    public void setTaskPriority(TaskPriority taskPriority) {
        this.taskPriority = taskPriority;
    }

    public void setStartTime(TaskTime startTime) {
        this.startTime = startTime;
    }
    
    public void setEndTime(TaskTime endTime) {
        this.endTime = endTime;
    }

    public void setStartDate(TaskDate startDate) {
        this.startDate = startDate;
    }
    
    public void setEndDate(TaskDate endDate) {
        this.endDate = endDate;
    }
    

    public void setTaskComplete(TaskStatus taskStatus){
        this.taskStatus = taskStatus;
    }

    public void setTags(UniqueTagList tags) {
        this.tags = tags;
    }

    public void setTaskStatus(TaskStatus taskStatus) {
        this.taskStatus = taskStatus;
    }

    @Override
    public Description getDescription() {
        return description;
    }
    
    @Override
    public String getTaskType() {
        return taskType;
    }

    @Override
    public TaskDate getStartDate() {
        return startDate;
    }

    @Override
    public TaskDate getEndDate() {
        return startDate;
    }
    
    @Override
    public TaskTime getStartTime() {
        return startTime;
    }
    
    @Override
    public TaskTime getEndTime() {
        return endTime;
    }

    @Override
    public TaskPriority getTaskPriority() {
        return taskPriority;
    }
    
    @Override
    public TaskStatus getTaskStatus() {
        return taskStatus;
    }

    @Override
    public UniqueTagList getTags() {
        return tags;
    }

    @Override
    public String toString() {
        return getAsText();
    }

    public String getAddCommand() {
        StringBuilder sb = new StringBuilder();
        sb.append("add " + this.getDescription().description + " ");
        sb.append("from " + this.getStartDate().taskDate + " ");
        sb.append("to " + this.getEndDate().taskDate + " "); 
        sb.append("from " + this.getStartTime().taskTime + " ");
        sb.append("to " + this.getEndTime().taskTime + " ");
        sb.append(TaskPriority.PREFIX + this.getTaskPriority().taskPriority + " ");
        this.getTags().getInternalList().stream().forEach(s -> sb.append(Tag.PREFIX + s.tagName + " "));
        return sb.toString();
    }
    
    public String getAddFloatingCommand() {
        StringBuilder sb = new StringBuilder();
        sb.append("add " + this.getDescription().description + " ");
        sb.append(TaskPriority.PREFIX + this.getTaskPriority().taskPriority + " ");
        this.getTags().getInternalList().stream().forEach(s -> sb.append(Tag.PREFIX + s.tagName + " "));
        return sb.toString();
    }
}

@@ -600,36 +600,32 @@
 agList();%0A    %7D%0A
-    
 %0A    public Test
@@ -717,20 +717,17 @@
 artTime,
- %0A  
+%0A
         
@@ -1301,36 +1301,32 @@
 cription;%0A    %7D%0A
-    
 %0A    public void
@@ -1593,36 +1593,32 @@
 tartTime;%0A    %7D%0A
-    
 %0A    public void
@@ -1773,36 +1773,32 @@
 tartDate;%0A    %7D%0A
-    
 %0A    public void
@@ -1866,21 +1866,16 @@
 e;%0A    %7D
-%0A    
 %0A%0A    pu
@@ -1922,16 +1922,17 @@
 kStatus)
+ 
 %7B%0A      
@@ -2231,36 +2231,32 @@
 cription;%0A    %7D%0A
-    
 %0A    @Override%0A 
@@ -2477,36 +2477,32 @@
 tartDate;%0A    %7D%0A
-    
 %0A    @Override%0A 
@@ -2561,36 +2561,32 @@
 tartTime;%0A    %7D%0A
-    
 %0A    @Override%0A 
@@ -2739,28 +2739,24 @@
 rity;%0A    %7D%0A
-    
 %0A    @Overri
@@ -3269,17 +3269,16 @@
  + %22 %22);
- 
 %0A       
@@ -3621,20 +3621,16 @@
 ;%0A    %7D%0A
-    
 %0A    pub

Add whitespaces