Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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]);
        }
Пример #7
0
        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, "汇集成功。");
            }
        }
Пример #8
0
 public TaskSequencer(List <Task> tasks)
 {
     this.m_Tasks          = tasks;
     this.m_IsNeedSequence = true;
     this.m_Comparer       = new TaskComparer();
 }
Пример #9
0
    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();*/

    }