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); }