public void StuckNetworkLengthsThrowsError() { var t1 = new PertTask { TimeEstimate = new Estimate(1) }; var t2 = new PertTask { TimeEstimate = new Estimate(1) }; var t3 = new PertTask { TimeEstimate = new Estimate(1) }; var t4 = new PertTask { TimeEstimate = new Estimate(2) }; t1.LinkToDescendant(t2); t2.LinkToDescendant(t3); t2.LinkToDescendant(t4); var tasks = new PertTask[] { t1, t2, t3 }; Assert.Throws <ArgumentException>(() => { PathTools.NetworkPathLengths(tasks, new EstimateModeReader()); }); }
public void ForkedNetworkLengths() { var t1 = new PertTask { TimeEstimate = new Estimate(1) }; var t2 = new PertTask { TimeEstimate = new Estimate(1) }; var t3 = new PertTask { TimeEstimate = new Estimate(1) }; var t4 = new PertTask { TimeEstimate = new Estimate(2) }; t1.LinkToDescendant(t2); t2.LinkToDescendant(t3); t2.LinkToDescendant(t4); var tasks = new PertTask[] { t1, t2, t3, t4 }; var result = PathTools.NetworkPathLengths(tasks, new EstimateModeReader()); Assert.AreEqual(1.0, result[t3.Id]); Assert.AreEqual(3.0, result[t2.Id]); Assert.AreEqual(4.0, result[t1.Id]); Assert.AreEqual(2.0, result[t4.Id]); }
public void PrepareProject() { this.project = new Project { Name = "Test Project", Description = "Test project for serialization and deserialization" }; task1 = new PertTask { Name = "Task 1" }; task2 = new PertTask { Name = "Task 2" }; task3 = new PertTask { Name = "Task 3" }; task4 = new PertTask { Name = "Task 4" }; task5 = new PertTask { Name = "Task 5" }; task6 = new PertTask { Name = "Task 6" }; task7 = new PertTask { Name = "Task 7" }; task8 = new PertTask { Name = "Task 8" }; task9 = new PertTask { Name = "Task 9" }; task10 = new PertTask { Name = "Task 10" }; task1.LinkToDescendant(task3); task2.LinkToDescendant(task3); task3.LinkToDescendant(task5); task4.LinkToDescendant(task5); task5.LinkToDescendant(task6); task5.LinkToDescendant(task7); task6.LinkToDescendant(task8); task6.LinkToDescendant(task9); task9.LinkToDescendant(task10); foreach (var pertTask in new PertTask[] { task1, task2, task3, task4, task5, task6, task7, task8, task9, task10 }) { project.AddTask(pertTask); } }
public void ComplexNetwork(string node, double expected) { var task1 = new PertTask { Name = "1", TimeEstimate = new Estimate(3) }; var task2 = new PertTask { Name = "2", TimeEstimate = new Estimate(2) }; var task3 = new PertTask { Name = "3", TimeEstimate = new Estimate(5) }; var task4 = new PertTask { Name = "4", TimeEstimate = new Estimate(4) }; var task5 = new PertTask { Name = "5", TimeEstimate = new Estimate(3) }; var task6 = new PertTask { Name = "6", TimeEstimate = new Estimate(2) }; var task7 = new PertTask { Name = "7", TimeEstimate = new Estimate(1) }; var task8 = new PertTask { Name = "8", TimeEstimate = new Estimate(4) }; var task9 = new PertTask { Name = "9", TimeEstimate = new Estimate(3) }; var task10 = new PertTask { Name = "10", TimeEstimate = new Estimate(2) }; task1.LinkToDescendant(task3); task2.LinkToDescendant(task3); task3.LinkToDescendant(task5); task4.LinkToDescendant(task5); task5.LinkToDescendant(task6); task5.LinkToDescendant(task7); task6.LinkToDescendant(task8); task6.LinkToDescendant(task9); task9.LinkToDescendant(task10); var tasks = new PertTask[] { task1, task2, task3, task4, task5, task6, task7, task8, task9, task10 }; var result = PathTools.NetworkPathLengths(tasks, new EstimateModeReader()); var checkTaskId = tasks.First(x => x.Name == node).Id; Assert.AreEqual(expected, result[checkTaskId]); }
public void SimpleSimulationNoResources2() { t3.LinkToDescendant(t7); var simulator = new ProjectSimulator(_simpleProject); var result = simulator.Simulate(); Assert.AreEqual(16, result.TotalCompletionDays); }
public void CreateNetworks() { task1 = new PertTask { Name = "Task 1" }; task2 = new PertTask { Name = "Task 2" }; task3 = new PertTask { Name = "Task 3" }; task4 = new PertTask { Name = "Task 4" }; task5 = new PertTask { Name = "Task 5" }; task6 = new PertTask { Name = "Task 6" }; task7 = new PertTask { Name = "Task 7" }; task8 = new PertTask { Name = "Task 8" }; task9 = new PertTask { Name = "Task 9" }; task10 = new PertTask { Name = "Task 10" }; task1.LinkToDescendant(task3); task2.LinkToDescendant(task3); task3.LinkToDescendant(task5); task4.LinkToDescendant(task5); task5.LinkToDescendant(task6); task5.LinkToDescendant(task7); task6.LinkToDescendant(task8); task6.LinkToDescendant(task9); task9.LinkToDescendant(task10); }
public void LinkDescendant() { var t1 = new PertTask { Name = "Task 1" }; var t2 = new PertTask { Name = "Task 2" }; t1.LinkToDescendant(t2); Assert.IsTrue(t1.Descendants.Contains(t2)); Assert.IsTrue(t2.Ancestors.Contains(t1)); }
public void NoDescendentOfSelf() { Assert.Throws <ArgumentException>(() => { task5.LinkToDescendant(task5); }); Assert.Throws <ArgumentException>(() => { task5.LinkToDescendant(task1); }); }
public void SetupProjectNetwork() { _org = new Organization(); var engineer = new ResourceGroup { Name = "Engineer", Rate = 100 }; var fabricator = new ResourceGroup { Name = "Fabricator", Rate = 50 }; _org.ResourceGroups.Add(engineer); _org.ResourceGroups.Add(fabricator); pete = new Employee { Name = "Pete", Group = engineer }; joe = new Employee { Name = "Joe", Group = fabricator }; _org.Employees.Add(pete); _org.Employees.Add(joe); t1 = new PertTask { Name = "t1", TimeEstimate = new Estimate(2) }; t2 = new PertTask { Name = "t2", TimeEstimate = new Estimate(3) }; t3 = new PertTask { Name = "t3", TimeEstimate = new Estimate(4) }; t4 = new PertTask { Name = "t4", TimeEstimate = new Estimate(2) }; t5 = new PertTask { Name = "t5", TimeEstimate = new Estimate(3) }; t6 = new PertTask { Name = "t6", TimeEstimate = new Estimate(4) }; t7 = new PertTask { Name = "t7", TimeEstimate = new Estimate(5) }; t8 = new PertTask { Name = "t8", TimeEstimate = new Estimate(2) }; t9 = new PertTask { Name = "t9", TimeEstimate = new Estimate(3) }; _simpleProject = new Project(); _simpleProject.AddTask(t1); _simpleProject.AddTask(t2); _simpleProject.AddTask(t3); _simpleProject.AddTask(t4); _simpleProject.AddTask(t5); _simpleProject.AddTask(t6); _simpleProject.AddTask(t7); _simpleProject.AddTask(t8); _simpleProject.AddTask(t9); t1.LinkToDescendant(t2); t2.LinkToDescendant(t3); t2.LinkToDescendant(t4); t2.LinkToDescendant(t5); t3.LinkToDescendant(t6); t4.LinkToDescendant(t7); t5.LinkToDescendant(t9); t6.LinkToDescendant(t8); t7.LinkToDescendant(t8); }