public void CreateRelationThatAlreadyExist() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var one = new Task(); var two = new Task(); manager.Add(one); manager.Add(two); // setup: create a relationship manager.Relate(one, two); Assert.IsTrue(manager.DependantsOf(one).Contains(two)); Assert.IsTrue(manager.PrecedentsOf(two).Contains(one)); // test: re-create the relationship (no effect) manager.Relate(one, two); Assert.IsTrue(manager.DependantsOf(one).Contains(two)); Assert.IsTrue(manager.PrecedentsOf(two).Contains(one)); }
public void EnumerationShouldReturnEmptySet() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var alien = new Task(); // test: Enumerators should at least return empty sets Assert.IsNotNull(manager.ChildrenOf(alien), "ChildrenOf is null"); Assert.IsNotNull(manager.AncestorsOf(alien), "AncestorsOf is null"); Assert.IsNotNull(manager.DecendantsOf(alien), "DecendantsOf is null"); Assert.IsNotNull(manager.DependantsOf(alien), "DependantsOf is null"); Assert.IsNotNull(manager.PrecedentsOf(alien), "PrecedentsOf is null"); Assert.IsNotNull(manager.DirectDependantsOf(alien), "DirectDependantsOf is null"); Assert.IsNotNull(manager.DirectPrecedentsOf(alien), "DirectPrecedentsOf is null"); Assert.IsNotNull(manager.ResourcesOf(alien), "ResourcesOf is null"); Assert.IsNotNull(manager.TasksOf(alien), "TasksOf is null"); }
public void Create3LevelRelations() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var one = new Task(); var two = new Task(); var three = new Task(); manager.Add(one); manager.Add(two); manager.Add(three); // setup: one before two before three manager.Relate(one, two); manager.Relate(two, three); // test: check enumerations are established Assert.IsTrue(manager.DependantsOf(one).Count() == 2); Assert.IsTrue(manager.DependantsOf(two).Count() == 1); Assert.IsTrue(manager.DependantsOf(three).Count() == 0); Assert.IsTrue(manager.DirectDependantsOf(one).Count() == 1); Assert.IsTrue(manager.DirectDependantsOf(two).Count() == 1); Assert.IsTrue(manager.DirectDependantsOf(three).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(one).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(two).Count() == 1, string.Format("expected {0} != {1}", 1, manager.PrecedentsOf(two).Count())); Assert.IsTrue(manager.PrecedentsOf(three).Count() == 2); Assert.IsTrue(manager.DirectPrecedentsOf(one).Count() == 0); Assert.IsTrue(manager.DirectPrecedentsOf(two).Count() == 1); Assert.IsTrue(manager.DirectPrecedentsOf(three).Count() == 1); }
public void CreateRelation() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var one = new Task(); var two = new Task(); manager.Add(one); manager.Add(two); // setup: confirms no relations Assert.IsTrue(manager.DependantsOf(one).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(two).Count() == 0); // test: create a relationship manager.Relate(one, two); Assert.IsTrue(manager.DependantsOf(one).Contains(two)); Assert.IsTrue(manager.PrecedentsOf(two).Contains(one)); Assert.IsTrue(manager.HasRelations(one)); Assert.IsTrue(manager.HasRelations(two)); }
public void CircularRelationLevel1() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var one = new Task(); var two = new Task(); manager.Add(one); manager.Add(two); // setup: create a relationship manager.Relate(one, two); Assert.IsTrue(manager.DependantsOf(one).Contains(two)); Assert.IsTrue(manager.DependantsOf(one).Count() == 1); Assert.IsTrue(manager.PrecedentsOf(one).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(two).Contains(one)); Assert.IsTrue(manager.PrecedentsOf(two).Count() == 1); Assert.IsTrue(manager.DependantsOf(two).Count() == 0); // test: cycle the relationship (no effect) manager.Relate(two, one); Assert.IsTrue(manager.DependantsOf(one).Contains(two)); Assert.IsTrue(manager.DependantsOf(one).Count() == 1); Assert.IsTrue(manager.PrecedentsOf(one).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(two).Contains(one)); Assert.IsTrue(manager.PrecedentsOf(two).Count() == 1); Assert.IsTrue(manager.DependantsOf(two).Count() == 0); }
public void RemoveExistingRelation() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var one = new Task(); var two = new Task(); manager.Add(one); manager.Add(two); // setup: create a relationship manager.Relate(one, two); Assert.IsTrue(manager.DependantsOf(one).Contains(two)); Assert.IsTrue(manager.PrecedentsOf(two).Contains(one)); // test: remove relation manager.Unrelate(one, two); Assert.IsTrue(manager.DependantsOf(one).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(two).Count() == 0); }
public void RemoveAllDependantsRelation() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var one = new Task(); var two = new Task(); var three = new Task(); var four = new Task(); manager.Add(one); manager.Add(two); manager.Add(three); manager.Add(four); // setup: create a relationship manager.Relate(four, one); manager.Relate(one, two); manager.Relate(one, three); Assert.IsTrue(manager.DependantsOf(one).Contains(three)); Assert.IsTrue(manager.PrecedentsOf(two).Contains(one)); Assert.IsTrue(manager.PrecedentsOf(three).Contains(one)); Assert.IsTrue(manager.DependantsOf(four).Contains(one)); Assert.IsTrue(manager.PrecedentsOf(one).Contains(four)); // test: remove dependants manager.Unrelate(one); Assert.IsTrue(manager.DependantsOf(one).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(two).Count() == 0); Assert.IsTrue(manager.PrecedentsOf(three).Count() == 0); Assert.IsTrue(manager.DependantsOf(four).Contains(one)); Assert.IsTrue(manager.PrecedentsOf(one).Contains(four)); }
public void RelatedTaskCannotBecomeParts() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var split = new Task(); var part1 = new Task(); var part2 = new Task(); manager.Add(split); manager.Add(part1); manager.Add(part2); // setup: relate part1 and part2 manager.Relate(part1, part2); Assert.IsTrue(manager.HasRelations(part1)); Assert.IsTrue(manager.HasRelations(part2)); Assert.IsTrue(manager.DependantsOf(part1).Contains(part2)); // test: split task using part1 and part2 manager.Split(split, part1, part2, 1); Assert.IsTrue(manager.HasRelations(part1)); Assert.IsTrue(manager.HasRelations(part2)); Assert.IsTrue(manager.DependantsOf(part1).Contains(part2)); Assert.IsTrue(!manager.IsSplit(split)); Assert.IsTrue(!manager.IsPart(part1)); Assert.IsTrue(!manager.IsPart(part2)); }
public void KnownTasksEnumeration() { IProjectManager<Task, object> manager = new ProjectManager<Task, object>(); var local = new Task(); manager.Add(local); Assert.IsNotNull(manager.ChildrenOf(local)); Assert.IsNotNull(manager.AncestorsOf(local)); Assert.IsNotNull(manager.DecendantsOf(local)); Assert.IsNotNull(manager.DependantsOf(local)); Assert.IsNotNull(manager.PrecedentsOf(local)); Assert.IsNotNull(manager.DirectDependantsOf(local)); Assert.IsNotNull(manager.DirectPrecedentsOf(local)); Assert.IsNotNull(manager.ResourcesOf(local)); Assert.IsNotNull(manager.TasksOf(local)); }