public void AddTest()
        {
            var first = new TimeSlot();

            Assert.Equal(0, first.Duration);
            Assert.Equal(0, first.TaskCount);
            Assert.Null(first.Next);

            var next = first.AddTask(50);

            Assert.Equal(50, first.Duration);
            Assert.Equal(1, first.TaskCount);
            Assert.Equal(next, first.Next);

            Assert.Equal(10.0, first.GetTaskProgress(10));

            Assert.Equal(0, next.Duration);
            Assert.Equal(0, next.TaskCount);
            Assert.Null(next.Next);

            var next2 = first.AddTask(50);

            Assert.Equal(50, first.Duration);
            Assert.Equal(2, first.TaskCount);
            Assert.Equal(next2, first.Next);
            Assert.Equal(next, first.Next);

            Assert.Equal(20.0, first.GetTaskProgress(40));

            Assert.Equal(0, next2.Duration);
            Assert.Equal(0, next2.TaskCount);
            Assert.Null(next2.Next);

            var next3 = first.AddTask(30);

            Assert.Equal(30, first.Duration);
            Assert.Equal(3, first.TaskCount);
            Assert.Equal(next3, first.Next);

            Assert.Equal(3.0, first.GetTaskProgress(9));

            Assert.Equal(20, next3.Duration);
            Assert.Equal(2, next3.TaskCount);
            Assert.Equal(next2, next3.Next);
            Assert.Equal(next, next3.Next);

            Assert.Equal(10.0 + 5, first.GetTaskProgress(40));

            Assert.Equal(0, next2.Duration);
            Assert.Equal(0, next2.TaskCount);
            Assert.Null(next2.Next);

            var next4 = first.AddTask(75);

            Assert.Equal(25, next2.Duration);
            Assert.Equal(1, next2.TaskCount);
            Assert.Equal(next4, next2.Next);

            Assert.Equal((30.0 / 4) + (20.0 / 3) + 20, first.GetTaskProgress(70));

            Assert.Equal(0, next4.Duration);
            Assert.Equal(0, next4.TaskCount);
            Assert.Null(next4.Next);
        }