/// <summary> /// This operation generates an operation based on how this generator has been configured. /// </summary> /// <returns>The generated operation.</returns> public Operation CreateOperation() { Task task; Operation newOperation = null; switch (commandType) { case CommandType.ADD: task = Task.CreateNewTask(taskName, startDateTime, endDateTime, isSpecific); newOperation = new OperationAdd(task, sortType); break; case CommandType.DELETE: newOperation = new OperationDelete(taskName, taskRangeIndex, startDateTime, endDateTime, isSpecific, rangeIsAll, searchType, sortType); break; case CommandType.DISPLAY: newOperation = new OperationDisplayDefault(sortType); break; case CommandType.MODIFY: newOperation = new OperationModify(taskName, taskRangeIndex, startDateTime, endDateTime, isSpecific, rangeIsAll, searchType, sortType); break; case CommandType.SEARCH: newOperation = new OperationSearch(taskName, startDateTime, endDateTime, isSpecific, searchType, sortType); break; case CommandType.SORT: newOperation = new OperationSort(sortType); break; case CommandType.REDO: newOperation = new OperationRedo(sortType); break; case CommandType.UNDO: newOperation = new OperationUndo(sortType); break; case CommandType.DONE: newOperation = new OperationMarkAsDone(taskName, taskRangeIndex, startDateTime, endDateTime, isSpecific, rangeIsAll, searchType, sortType); break; case CommandType.UNDONE: newOperation = new OperationMarkAsUndone(taskName, taskRangeIndex, startDateTime, endDateTime, isSpecific, rangeIsAll, searchType, sortType); break; case CommandType.POSTPONE: TimeSpan postponeDuration = new TimeSpan(); if (timeRangeType == TimeRangeType.DEFAULT) { timeRangeType = CustomDictionary.defaultPostponeDurationType; timeRangeIndex = CustomDictionary.defaultPostponeDurationLength; } switch (timeRangeType) { case TimeRangeType.HOUR: postponeDuration = new TimeSpan(timeRangeIndex, 0, 0); break; case TimeRangeType.DAY: postponeDuration = new TimeSpan(timeRangeIndex, 0, 0, 0); break; case TimeRangeType.WEEK: postponeDuration = new TimeSpan(timeRangeIndex * CustomDictionary.DAYS_IN_WEEK, 0, 0, 0); break; case TimeRangeType.MONTH: postponeDuration = new TimeSpan(timeRangeIndex * CustomDictionary.DAYS_IN_MONTH, 0, 0, 0); break; } newOperation = new OperationPostpone(taskName, taskRangeIndex, startDateTime, endDateTime, isSpecific, rangeIsAll, searchType, postponeDuration, sortType); break; case CommandType.SCHEDULE: newOperation = new OperationSchedule(taskName, (DateTime)startDateTime, endDateTime, isSpecific, timeRangeIndex, timeRangeType, sortType); break; case CommandType.EXIT: System.Environment.Exit(0); break; } return newOperation; }
public void OperationSortTest() { testStorage = new Storage("OpUnittest.xml", "OpUnittestsettings.xml"); testTaskList = testStorage.LoadTasksFromFile(); OperationSort Op = new OperationSort(SortType.NAME); result = Op.Execute(testTaskList, testStorage); Assert.AreEqual("Sorting by name.", result.FeedbackString); return; }