public void MergeSplittedTask()
        {
            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.Split(split, part1, part2, 1);
            manager.Split(part1, part3, 1);
            manager.Split(part3, part4, 1);
            Assert.IsTrue(manager.IsSplit(split));
            Assert.IsTrue(manager.IsPart(part1));
            Assert.IsTrue(manager.IsPart(part2));
            Assert.IsTrue(manager.IsPart(part3));
            Assert.IsTrue(manager.IsPart(part4));
            Assert.IsTrue(manager.PartsOf(split).Count() == 4);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(0) == part1);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(1) == part3);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(2) == part4);
            Assert.IsTrue(manager.PartsOf(split).ElementAt(3) == part2);
            Assert.IsTrue(manager.Tasks.Count() == 1);

            // test: merge the split task
            manager.Merge(split);
            Assert.IsTrue(!manager.IsSplit(split));
            Assert.IsTrue(!manager.IsPart(part1));
            Assert.IsTrue(!manager.IsPart(part2));
            Assert.IsTrue(!manager.IsPart(part3));
            Assert.IsTrue(!manager.IsPart(part4));
            Assert.IsTrue(manager.Tasks.Count() == 1);
            Assert.IsTrue(split.Duration == 4);
        }