コード例 #1
0
        public void ManagerHandlingTask()
        {
            //Arrange
            var config = new TechServiceConfig
            {
                TimeRange = new TimeRange(TimeSpan.FromSeconds(2)),
                Tm        = TimeSpan.FromSeconds(0),
            };

            var service = new TechService(config);

            //Act
            service.CreateTask("Запрос в службу поддержки №1");
            service.CreateTask("Запрос в службу поддержки №2 (для менеджера)");

            Employee operator1 = service.CreateOperator("Оператор");
            Employee manager   = service.CreateManager("Менеджер");

            //Assert
            var task = Task.Run(async() => {
                //Ждем выполнения всех заявок
                while (!service.TaskManager.AllDone)
                {
                    await Task.Delay(500);
                }

                Assert.AreEqual(0, service.TaskManager.InQueue.Count());
                Assert.AreEqual(0, service.TaskManager.InWork.Count());
                Assert.AreEqual(2, service.TaskManager.Done.Count());
                Assert.AreEqual(operator1, service.TaskManager.Done.First(t => t.Description == "Запрос в службу поддержки №1").Handler);
                Assert.AreEqual(manager, service.TaskManager.Done.First(t => t.Description == "Запрос в службу поддержки №2 (для менеджера)").Handler);
            });

            task.Wait();
        }
コード例 #2
0
        public void CreateTasks()
        {
            //Arrange
            var service = new TechService();

            //Act
            service.CreateTask("Запрос в службу поддержки №1");
            service.CreateTask("Запрос в службу поддержки №2");
            service.CreateTask("Запрос в службу поддержки №3");
            //Assert
            Assert.AreEqual(3, service.TaskManager.InQueue.Count());
            Assert.AreEqual(0, service.TaskManager.InWork.Count());
            Assert.AreEqual(0, service.TaskManager.Done.Count());
        }
コード例 #3
0
        public void DeleteEmployee()
        {
            //Arrange
            var service = new TechService();

            //Act
            service.CreateTask("Запрос в службу поддержки №1");
            var operator1 = service.CreateEmployee("Operator", "Оператор");

            //Assert
            var task = Task.Run(async() =>
            {
                //Ждем пока оператор не получит задачу
                while (service.TaskManager.InWork.Count() != 1)
                {
                    await Task.Delay(500);
                }

                service.DeleteEmployee(operator1);

                //Ждем пока оператор не вернет задачу
                while (service.TaskManager.InQueue.Count() != 1)
                {
                    Assert.AreEqual(0, service.TaskManager.Done.Count());
                    await Task.Delay(500);
                }

                Assert.AreEqual(0, service.TaskManager.InWork.Count());
            });

            task.Wait();
        }
コード例 #4
0
        public void OperatorHandlingTask()
        {
            //Arrange
            var config = new TechServiceConfig
            {
                TimeRange = new TimeRange(TimeSpan.FromSeconds(1))
            };

            var service = new TechService(config);

            //Act
            service.CreateTask("Запрос в службу поддержки");

            Employee operator1 = service.CreateOperator("Оператор");

            //Assert
            var task = Task.Run(async() => {
                //Ждем выполнения всех заявок
                while (!service.TaskManager.AllDone)
                {
                    await Task.Delay(500);
                }

                Assert.AreEqual(0, service.TaskManager.InQueue.Count());
                Assert.AreEqual(0, service.TaskManager.InWork.Count());
                Assert.AreEqual(1, service.TaskManager.Done.Count());
                Assert.AreEqual(operator1, service.TaskManager.Done.First().Handler);
                Assert.AreEqual(TechTaskStatus.Done, service.TaskManager.Done.First().Status);
                Assert.IsFalse(operator1.IsBusy);
            });

            task.Wait();
        }
コード例 #5
0
        public void DeleteTask()
        {
            //Arrange
            var service = new TechService();
            //Act
            TechTask task = service.CreateTask("Запрос в службу поддержки №1");

            service.DeleteTask(task);
            //Assert
            Assert.AreEqual(TechTaskStatus.Canceled, task.Status);
        }
コード例 #6
0
        public void ChangeTimeRange()
        {
            //Arrange
            var config = new TechServiceConfig
            {
                TimeRange = new TimeRange(TimeSpan.FromSeconds(0))
            };

            var service = new TechService(config);

            //Act
            service.CreateTask("Запрос в службу поддержки №1");

            service.CreateOperator("Оператор");

            service.MinTime = TimeSpan.FromSeconds(3);
            service.MaxTime = TimeSpan.FromSeconds(3);

            service.CreateTask("Запрос в службу поддержки №2");

            //Assert
            var task = Task.Run(async() => {
                //Ждем выполнения всех заявок
                while (!service.TaskManager.AllDone)
                {
                    await Task.Delay(500);
                }

                var firstTask  = service.TaskManager.Done.First();
                var secondTask = service.TaskManager.Done.Skip(1).First();

                var firstTime  = (int)firstTask.TimeSpent.TotalSeconds + (int)service.MaxTime.TotalSeconds;
                var secondTime = (int)secondTask.TimeSpent.TotalSeconds;

                Assert.IsTrue(firstTime == secondTime);
            });

            task.Wait();
        }
コード例 #7
0
        public void ChangeTd()
        {
            //Arrange
            var config = new TechServiceConfig
            {
                TimeRange = new TimeRange(TimeSpan.FromSeconds(0)),
                Td        = TimeSpan.FromSeconds(0)
            };

            var service = new TechService(config);

            //Act
            var newTd = TimeSpan.FromSeconds(3);

            service.Td = newTd;

            service.CreateTask("Запрос в службу поддержки №2");

            //Assert
            Assert.AreEqual(service.TaskManager.Config.Td, newTd);
        }