public void GetAllTasksTest() { var taskController = new TaskController() { Request = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(ServiceBaseURL) } }; taskController.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration()); _response = taskController.Get(); var responseResultSearch = JsonConvert.DeserializeObject <List <vw_TaskSearch> >(_response.Content.ReadAsStringAsync().Result); var taskList = responseResultSearch.Select( taskEntity => new Task { Task_ID = taskEntity.Task_ID, Parent_ID = taskEntity.TaskParentID, Project_ID = taskEntity.TaskProjectID, Task1 = taskEntity.TaskName, Start_Date = taskEntity.Start_Date, End_Date = taskEntity.End_Date, Priority = taskEntity.TaskPriority, Status = taskEntity.TaskStatus }).ToList(); Assert.AreEqual(_response.StatusCode, HttpStatusCode.OK); Assert.AreEqual(taskList.Any(), true); var comparer = new TaskComparer(); CollectionAssert.AreEqual(taskList.OrderBy(user => user, comparer), _tasks.OrderBy(user => user, comparer), comparer); }
private static void CheckTestCase(SortTestCase testCase) { var folder = new Folder(); var settings = CreateSettings(testCase); var t1 = new Task() { Title = "t1", Priority = TaskPriority.Low, Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 10) }; var t2 = new Task() { Title = "t2", Priority = TaskPriority.Low, Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 20) }; var t3 = new Task() { Title = "t3", Priority = TaskPriority.Medium, Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 30) }; var t4 = new Task() { Title = "t4", Priority = TaskPriority.High, Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 40) }; var t5 = new Task() { Title = "t5", Priority = TaskPriority.High, Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 50) }; var tasks = new List <ITask> { t1, t2, t3, t4, t5 }; var comparer = new TaskComparer(settings); tasks.Sort(comparer); tasks.AssertOrderIs(testCase.Titles); // sort 2 times to make sure sort is stable tasks.Sort(comparer); tasks.AssertOrderIs(testCase.Titles); }
public void ExecuteTasks(List <System.Type> taskOrder) { var comparer = new TaskComparer(taskOrder); ICollection <System.Type> tasksTodoKeys = _tasksTodo.Keys; var prioritizedTodoKeys = tasksTodoKeys.OrderBy(taskType => taskType, comparer); prioritizedTodoKeys.ForEach(taskKey => { if (!_tasksTodo.TryGetValue(taskKey, out var queueOfTasks)) { return; } while (queueOfTasks.Count > 0) { var nextTask = queueOfTasks.Peek(); nextTask.Execute(); queueOfTasks.Dequeue(); } }); }
public void GetAllTaskTest() { var tasks = _taskService.GetAllTasks(); var taskList = tasks.Select( taskEntity => new Task { Task_ID = taskEntity.Task_ID, Parent_ID = taskEntity.Parent_ID, Project_ID = taskEntity.Project_ID, Task1 = taskEntity.Task1, Start_Date = taskEntity.Start_Date, End_Date = taskEntity.End_Date, Priority = taskEntity.Priority, Status = taskEntity.Status }).ToList(); var comparer = new TaskComparer(); CollectionAssert.AreEqual( taskList.OrderBy(task => task, comparer), _task.OrderBy(task => task, comparer), comparer); }
public Tuple <List <Task>, List <string> > Update(IEnumerable <Task> tasks) { var result = MakeResultTuple(tasks); //validate before connecting to DB bool allTasksOk = result.Item2.Count == 0 && ValidateTasks(tasks, result.Item2); if (!allTasksOk) { return(result); } using (var db = new ToDoListContext()) { //get all tasks in one trip int[] taskIds = tasks.Select(t => t.Id).ToArray(); List <Task> dbTasks = null; try { //order by Id so we can use binary search dbTasks = db.Tasks .Where(t => taskIds.Contains(t.Id)) .OrderBy(t => t.Id) .ToList(); } catch (Exception ex) { result.Item2.Add("Failed to retrieve tasks from DB. Error: " + ex.Message); allTasksOk = false; } if (allTasksOk && dbTasks != null) { TaskComparer comparer = new TaskComparer(); foreach (var task in tasks) { //ensure all passed in tasks exist in DB int index = dbTasks.BinarySearch(new Task() { Id = task.Id }, comparer); if (index >= 0) { var dbTask = dbTasks[index]; dbTask.Description = task.Description; dbTask.Title = task.Title; dbTask.Status = task.Status; dbTask.DueDate = task.DueDate; result.Item1.Add(dbTask); } else { result.Item2.Add(String.Format("Unable to update task: {0}. Task does not exist in DB", task.Id)); allTasksOk = false; } } if (allTasksOk) { try { db.SaveChanges(); } catch (Exception ex) { result.Item1.Clear(); result.Item2.Add("Failed to update tasks" + ex.Message); } } } } return(result); }
public void Compare_Completed_DoesNotChangeOrder() { var folder = new Folder(); var settings = CreateSettings(); var t1 = new Task() { Title = "t1", Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 10) }; var t2 = new Task() { Title = "t2", Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 20) }; var t3 = new Task() { Title = "t3", Folder = folder, Added = new DateTime(2011, 1, 1, 9, 0, 30) }; var c = new TaskComparer(settings); var l = new List <ITask> { t1, t2, t3 }; l.Sort(c); l.AssertOrderIs(t3, t2, t1); Assert.AreEqual(t3, l[0]); Assert.AreEqual(t2, l[1]); Assert.AreEqual(t1, l[2]); l.Sort(c); l.AssertOrderIs(t3, t2, t1); Assert.AreEqual(t3, l[0]); Assert.AreEqual(t2, l[1]); Assert.AreEqual(t1, l[2]); t1.IsCompleted = true; l.Sort(c); l.AssertOrderIs(t3, t2, t1); Assert.AreEqual(t3, l[0]); Assert.AreEqual(t2, l[1]); Assert.AreEqual(t1, l[2]); t1.IsCompleted = false; l.Sort(c); l.AssertOrderIs(t3, t2, t1); Assert.AreEqual(t3, l[0]); Assert.AreEqual(t2, l[1]); Assert.AreEqual(t1, l[2]); t3.IsCompleted = true; t2.IsCompleted = true; l.Sort(c); l.AssertOrderIs(t3, t2, t1); Assert.AreEqual(t3, l[0]); Assert.AreEqual(t2, l[1]); Assert.AreEqual(t1, l[2]); }
public void Execute(Instance ins, IStopStatus status) { this.status = status; if (ins is IntegrationInstance instance && instance.ActualTasks.Length > 0) { // 构建待汇集任务清单:lst[0] = 独立任务,lst[1+] = 依赖树 List <List <IntegrationTask> > lst = new List <List <IntegrationTask> > { new List <IntegrationTask>(instance.ActualTasks[0]), new List <IntegrationTask>() }; for (int i = 1; i < instance.ActualTasks.Length; i++) { for (int j = 0; j < instance.ActualTasks[i].Length; j++) { IntegrationTask ta = instance.ActualTasks[i][j]; for (int k = 0; k < ta.Table.References.Length; k++) { for (int l = 0; l < lst[0].Count; l++) { if (ta.Table.References[k].Equals(lst[0][l].Table.DestName)) { lst[1].Add(lst[0][l]); lst[0].RemoveAt(l); break; } } } } lst.Add(new List <IntegrationTask>(instance.ActualTasks[i])); } TaskComparer comparer = new TaskComparer(); foreach (List <IntegrationTask> tasks in lst) { tasks.Sort(comparer); } List <IntegrationTask> runList = new List <IntegrationTask>(); // 开始汇集 Parallel.ForEach(CreateThreadAction((int)instance.Threads), i => { IntegrationTask task = GetTask(lst, runList); while (task != null) { try { Logger.WriteLog($"{task.Dest.Server}/{task.Dest.DB}.{task.Table.DestName}", "汇集开始..."); task.StartTick = WinAPI.GetTickCount(); task.Status = DataStates.Running; IntegrateTask(task, out string reason); if (task.Status == DataStates.Done) { Logger.WriteLog($"{task.Dest.Server}/{task.Dest.DB}.{task.Table.DestName}", "汇集成功。"); Logger.WriteRpt(task.Dest.Server, task.Dest.DB, task.Table.DestName, "成功", task.Table.Progress.ToString("#,##0")); } else { task.Progress -= task.Table.Progress; task.ErrorMsg = reason; Logger.WriteLog($"{task.Dest.Server}/{task.Dest.DB}.{task.Table.DestName}", $"汇集失败!{reason}"); Logger.WriteRpt(task.Dest.Server, task.Dest.DB, task.Table.DestName, "失败", reason); } task.StartTick = WinAPI.GetTickCount() - task.StartTick; lock (runList) { runList.Remove(task); } task = GetTask(lst, runList); } catch (Exception ex) { task.Status = DataStates.Error; task.ErrorMsg = ex.Message; Logger.WriteLog($"{task.Dest.Server}/{task.Dest.DB}", $"汇集失败!{ex.Message}"); } } }); foreach (Common.Task task in instance.Tasks) { if (task.Status != DataStates.Done) { Logger.WriteLog(instance.Name, "汇集失败!"); return; } } Logger.WriteLog(instance.Name, "汇集成功。"); } }
public TaskSequencer(List <Task> tasks) { this.m_Tasks = tasks; this.m_IsNeedSequence = true; this.m_Comparer = new TaskComparer(); }
static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.White; Console.SetBufferSize(1024, 720); //fjern kommentar når database test er færdig domain.MachineData md = new domain.MachineData(); md.allocateData(); //IComparer Console.Clear(); domain.Task a = new domain.Task(Machine.MachineType.bendingMachine,5); domain.Task b = new domain.Task(Machine.MachineType.DrawingTool, 2); domain.Task[] tasks = new domain.Task[2]; tasks[0] = a; tasks[1] = b; Console.WriteLine(); Console.WriteLine("Displaying tasks before sorting"); Console.WriteLine("a : " + a.ToString()); Console.WriteLine("b : " + b.ToString()); Console.WriteLine(); TaskComparer tc = new TaskComparer(); Console.WriteLine("Sorting on machine"); tc.sortBy = TaskComparer.compareField.machine; Array.Sort(tasks, tc); foreach (var item in tasks) { Console.WriteLine(item.ToString()); } Console.WriteLine(); Console.WriteLine("Sorting on varighed"); tc.sortBy = TaskComparer.compareField.varighed; Array.Sort(tasks, tc); foreach (var item in tasks) { Console.WriteLine(item.ToString()); } Console.WriteLine(); Console.WriteLine("Sorting on taskID"); tc.sortBy = TaskComparer.compareField.taskID; Array.Sort(tasks, tc); foreach (var item in tasks) { Console.WriteLine(item.ToString()); } Console.WriteLine(); Console.Read(); //Iequatable Console.Clear(); domain.Task c = new domain.Task(Machine.MachineType.DrawingTool, 3); domain.Task d = new domain.Task(Machine.MachineType.DrawingTool, 2); if (c.Equals(d)) { Console.WriteLine("De er sande!"); } else { Console.WriteLine("De er falske!"); } c = new domain.Task(Machine.MachineType.DrawingTool, 2); d = new domain.Task(Machine.MachineType.DrawingTool, 2); if (c.Equals(d)) { Console.WriteLine("De er sande!"); } else { Console.WriteLine("De er falske!"); } Console.Read(); //ICloneable Console.Clear(); c = new domain.Task(Machine.MachineType.DrawingTool, 2); object e = c.Clone(); Console.WriteLine(); Console.WriteLine("This is c"); Console.WriteLine(c.ToString()); Console.WriteLine(); Console.WriteLine("This is c's clone"); Console.WriteLine(e.ToString()); Console.WriteLine(); Console.WriteLine("I will now change c"); c.MachineType = Machine.MachineType.PC; c.Varighed = 5; c.test = "test2"; Console.WriteLine("This is c"); Console.WriteLine(c.ToString()); Console.WriteLine(); Console.WriteLine("This is c's clone"); Console.WriteLine(e.ToString()); Console.Read(); // /* UI pm = new UI(); pm.run();*/ }