public void HasValidDayTimesAfterTaskHelperCreation()
        {
            var taskHelper = new WeekPlanHelper.TaskHelper(new Task());

            Assert.Equal(7, taskHelper.DayTimes.Length);
            Assert.All(taskHelper.DayTimes, x => Assert.True(x < 0));
        }
        public void PrioritizesTasksWithHigherPriority()
        {
            var highPriorityTask = new WeekPlanHelper.TaskHelper(new Task
            {
                Priority = 0, Time = 10, Split = 1
            })
            {
                DayTimes = new int[] { 1, 0, 0, 0, 0, 0, 0 }
            };
            var lowPriorityTask = new WeekPlanHelper.TaskHelper(new Task
            {
                Priority = 1, Time = 10, Split = 1
            })
            {
                DayTimes = new int[] { 1, 0, 0, 0, 0, 0, 0 }
            };
            var highPriorityGoodness = WeekPlanHelper.GetChromosomGoodness(new List <WeekPlanHelper.TaskHelper>()
            {
                highPriorityTask
            });
            var lowPriorityGoodness = WeekPlanHelper.GetChromosomGoodness(new List <WeekPlanHelper.TaskHelper>()
            {
                lowPriorityTask
            });

            Assert.True(highPriorityGoodness > lowPriorityGoodness);
        }
        public void DoesNotAddNotAssignedTask()
        {
            var taskHelper    = new WeekPlanHelper.TaskHelper(new Task());
            var assignedTasks = new List <(Task, int[])>();

            taskHelper.AddAssignedTask(assignedTasks);
            Assert.Empty(assignedTasks);
        }
        public void AddsAssignedTask()
        {
            var taskHelper = new WeekPlanHelper.TaskHelper(new Task())
            {
                DayTimes = new int[] { 2, 1, 0, 0, 0, 0, 0 }
            };
            var assignedTasks = new List <(Task, int[])>();

            taskHelper.AddAssignedTask(assignedTasks);
            Assert.Single(assignedTasks);
        }
        public void DeepCopiesDayTimesWhenCreatingNewTaskHelper()
        {
            var originalTaskHelper = new WeekPlanHelper.TaskHelper(new Task())
            {
                DayTimes = new int[] { 1, 2, 3, 4, 5, 6, 7 }
            };
            var copiedTaskHelper = new WeekPlanHelper.TaskHelper(originalTaskHelper);

            originalTaskHelper.DayTimes[0] = 7;
            Assert.Equal(1, copiedTaskHelper.DayTimes[0]);
        }
        public void FindsOnlyMissingDates()
        {
            int shouldSplitInto = 4;
            var taskHelper      = new WeekPlanHelper.TaskHelper(new Task()
            {
                Days = 255, Time = 4, Split = shouldSplitInto
            })
            {
                DayTimes = new int[] { 0, -1, -1, -1, -1, -1, -1 }
            };
            var freeTimes = new List <int>[7]
            {
                new List <int>()
                {
                    2
                },
                new List <int>()
                {
                    2
                },
                new List <int>()
                {
                    2
                },
                new List <int>()
                {
                    2
                },
                new List <int>()
                {
                    2
                },
                new List <int>()
                {
                    2
                },
                new List <int>()
                {
                    2
                }
            };

            taskHelper.FindPlaceIfAny(freeTimes);
            Assert.Equal(shouldSplitInto, taskHelper.DayTimes.Count(x => x >= 0));
        }