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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
 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);
        }