コード例 #1
0
        public void AdjustGroupDuringJoin()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var group = new Task();
            var split = new Task();
            var part1 = new Task();
            var part2 = new Task();
            var part3 = new Task();
            manager.Add(split);
            manager.Add(group);

            // setup: create a split under a group
            manager.Group(group, split);
            manager.Split(split, part1, part2, 1);
            manager.Split(part2, part3, 1);
            Assert.IsTrue(group.Duration == 5);
            Assert.IsTrue(group.Duration == split.Duration);
            Assert.IsTrue(group.End == part3.End);

            // test: join and make sure group duration is shortened
            manager.Join(part1, part3);
            Assert.IsTrue(!manager.IsPart(part3));
            Assert.IsTrue(group.Duration == 4);
            Assert.IsTrue(group.Duration == split.Duration);
            Assert.IsTrue(group.End == part2.End);
        }
コード例 #2
0
        public void JoinParts()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var split = new Task();
            var part1 = new Task();
            var part2 = new Task();
            var part3 = new Task();
            manager.Add(split);

            // setup: create a split task with 3 parts
            manager.Split(split, part1, part2, 1);
            manager.Split(part2, part3, 1);
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.IsPart(part1));
            Assert.IsTrue(manager.IsPart(part2));
            Assert.IsTrue(manager.IsPart(part3));
            Assert.IsTrue(manager.PartsOf(split).Count() == 3);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(0) == part1);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(1) == part2);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(2) == part3);

            // test: join part 1 and part2
            manager.Join(part1, part2);
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.IsPart(part1));
            Assert.IsTrue(!manager.IsPart(part2));
            Assert.IsTrue(manager.IsPart(part3));
            Assert.IsTrue(manager.PartsOf(split).Count() == 2);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(0) == part1);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(1) == part3);
        }
コード例 #3
0
        public void JoinPartsConfirmPackedSchedule()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var split = new Task();
            var part1 = new Task();
            var part2 = new Task();
            var part3 = new Task();
            var part4 = new Task();
            manager.Add(split);

            // setup: create a 4 part split task
            manager.SetDuration(split, 40);
            manager.Split(split, part1, part2, 5);
            manager.Split(part2, part3, 10);
            manager.Split(part3, part4, 20);
            Assert.IsTrue(part4.Duration == 5);
            Assert.IsTrue(part2.Duration == 10);
            Assert.IsTrue(manager.IsPart(part1));
            Assert.IsTrue(manager.IsPart(part2));
            Assert.IsTrue(manager.IsPart(part3));
            Assert.IsTrue(manager.IsPart(part4));
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.PartsOf(split).Count() == 4);

            Assert.IsTrue(part1.Start == 0);
            Assert.IsTrue(part1.End == 5);
            Assert.IsTrue(part2.Start == 6);
            Assert.IsTrue(part2.End == 16);
            Assert.IsTrue(part3.Start == 17);
            Assert.IsTrue(part3.End == 37);
            Assert.IsTrue(part4.Start == 38);
            Assert.IsTrue(part4.End == 43);

            // test: join part 2 and 4
            manager.Join(part2, part4);
            Assert.IsTrue(part2.Duration == 15);
            Assert.IsTrue(manager.IsPart(part1));
            Assert.IsTrue(manager.IsPart(part2));
            Assert.IsTrue(manager.IsPart(part3));
            Assert.IsTrue(!manager.IsPart(part4));
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.PartsOf(split).Count() == 3);

            Assert.IsTrue(part1.Start == 0);
            Assert.IsTrue(part1.End == 5);
            Assert.IsTrue(part2.Start == 6);
            Assert.IsTrue(part2.End == 21);
            Assert.IsTrue(part3.Start == 22);
            Assert.IsTrue(part3.End == 42);
        }
コード例 #4
0
        public void JoinPartRemainSinglePartBecomeRegularTask()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var split = new Task();
            var part1 = new Task();
            var part2 = new Task();
            manager.Add(split);

            // setup: create split task with only part1 and part2
            manager.Split(split, part1, part2, 1);
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.IsPart(part1));
            Assert.IsTrue(manager.IsPart(part2));
            Assert.IsTrue(manager.PartsOf(split).Count() == 2);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(0) == part1);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(1) == part2);

            // test: join the 2 parts, leave only a non-split task left
            manager.Join(part1, part2);
            Assert.IsTrue(!manager.IsSplit(split));
            Assert.IsTrue(!manager.IsPart(part1));
            Assert.IsTrue(!manager.IsPart(part2));
            Assert.IsTrue(split.Duration == 2);
        }
コード例 #5
0
        public void JoinPartFromDifferentSplitTask()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var split1 = new Task();
            var part1a = new Task();
            var part1b = new Task();
            var split2 = new Task();
            var part2a = new Task();
            var part2b = new Task();
            manager.Add(split1);
            manager.Add(split2);

            // setup: create 2 split tasks
            manager.Split(split1, part1a, part1b, 1);
            manager.Split(split2, part2a, part2b, 1);
            Assert.IsTrue(manager.IsSplit(split1));
            Assert.IsTrue(manager.IsSplit(split2));
            Assert.IsTrue(manager.IsPart(part1a));
            Assert.IsTrue(manager.IsPart(part1b));
            Assert.IsTrue(manager.IsPart(part2a));
            Assert.IsTrue(manager.IsPart(part2b));
            Assert.IsTrue(manager.PartsOf(split1).Count() == 2);
            Assert.IsTrue(manager.PartsOf(split1).Contains(part1a));
            Assert.IsTrue(manager.PartsOf(split1).Contains(part1b));
            Assert.IsTrue(manager.PartsOf(split2).Count() == 2);
            Assert.IsTrue(manager.PartsOf(split2).Contains(part2a));
            Assert.IsTrue(manager.PartsOf(split2).Contains(part2b));

            // test: join part1x with part2x (no effect)
            manager.Join(part1a, part2a);
            Assert.IsTrue(manager.IsSplit(split1));
            Assert.IsTrue(manager.IsSplit(split2));
            Assert.IsTrue(manager.IsPart(part1a));
            Assert.IsTrue(manager.IsPart(part1b));
            Assert.IsTrue(manager.IsPart(part2a));
            Assert.IsTrue(manager.IsPart(part2b));
            Assert.IsTrue(manager.PartsOf(split1).Count() == 2);
            Assert.IsTrue(manager.PartsOf(split1).Contains(part1a));
            Assert.IsTrue(manager.PartsOf(split1).Contains(part1b));
            Assert.IsTrue(manager.PartsOf(split2).Count() == 2);
            Assert.IsTrue(manager.PartsOf(split2).Contains(part2a));
            Assert.IsTrue(manager.PartsOf(split2).Contains(part2b));
        }
コード例 #6
0
        public void JoinPartConfirmSchedule()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var split = new Task();
            var part1 = new Task();
            var part2 = new Task();
            var part3 = new Task();
            manager.Add(split);

            // setup: create a 3 part split
            manager.SetStart(split, 16);
            manager.SetDuration(split, 24);
            manager.Split(split, part1, part2, 8);
            manager.Split(part2, part3, 8);
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.PartsOf(split).Count() == 3);
            Assert.IsTrue(part1.Duration == 8);
            Assert.IsTrue(part2.Duration == 8);
            Assert.IsTrue(part3.Duration == 8);
            Assert.IsTrue(split.Duration == 26);
            Assert.IsTrue(split.Start == 16);
            Assert.IsTrue(split.End == 42);

            // setup: join parts 1 and 2, intentionally in bad order, but should still work
            manager.Join(part2, part1);
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.PartsOf(split).Count() == 2);
            Assert.IsTrue(part2.Duration == 16);
            Assert.IsTrue(part3.Duration == 8);
            Assert.IsTrue(split.Duration == 26); // schedule of other parts not affected
            Assert.IsTrue(split.Start == 16);
            Assert.IsTrue(split.End == 42);
        }
コード例 #7
0
        public void JoinNullPart()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var task = new Task();

            // test: two nulls (no effect)
            manager.Join(null, null);
            Assert.IsTrue(manager.Tasks.Count() == 0);

            // test: null existing
            manager.Join(null, task);
            Assert.IsTrue(!manager.IsPart(task));
        }
コード例 #8
0
        public void JoinIntoMerge()
        {
            IProjectManager<Task, object> manager = new ProjectManager<Task, object>();
            var split = new Task();
            var part1 = new Task();
            var part2 = new Task();
            manager.Add(split);

            // setup: create a split task
            manager.Split(split, part1, part2, 7);
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.IsPart(part1));
            Assert.IsTrue(manager.IsPart(part2));

            // test: join the two parts, resulting in split becoming back ito regular task
            manager.Join(part1, part2);
            Assert.IsTrue(!manager.IsSplit(split));
            Assert.IsTrue(!manager.IsPart(part1));
            Assert.IsTrue(!manager.IsPart(part2));
        }