private void InitializeModel(string includees) { model = new Model("Test Model"); model.AddService <ITaskManagementService>(new TaskManagementService()); t = new TestTask(model, "Top Task"); t1 = new TestTask(model, "Task 1"); t2 = new TestTask(model, "Task 2"); t3 = new TestTask(model, "Task 3"); t11 = new TestTask(model, "Task 1.1"); t12 = new TestTask(model, "Task 1.2"); t13 = new TestTask(model, "Task 1.3"); t21 = new TestTask(model, "Task 2.1"); t22 = new TestTask(model, "Task 2.2"); t23 = new TestTask(model, "Task 2.3"); t31 = new TestTask(model, "Task 3.1"); t32 = new TestTask(model, "Task 3.2"); t33 = new TestTask(model, "Task 3.3"); tp = new TaskProcessor(model, "TP1", Guid.NewGuid(), t); if (include("t1", includees)) { t.AddChildEdge(t1); } if (include("t2", includees)) { t.AddChildEdge(t2); } if (include("t3", includees)) { t.AddChildEdge(t3); } tL1 = new TaskList(model, "Task 1 Children", Guid.NewGuid(), t1); tL2 = new TaskList(model, "Task 2 Children", Guid.NewGuid(), t2); tL3 = new TaskList(model, "Task 3 Children", Guid.NewGuid(), t3); if (include("t11", includees)) { tL1.AppendTask(t11); } if (include("t12", includees)) { tL1.AppendTask(t12); } if (include("t13", includees)) { tL1.AppendTask(t13); } if (include("t21", includees)) { tL2.AppendTask(t21); } if (include("t22", includees)) { tL2.AppendTask(t22); } if (include("t23", includees)) { tL2.AppendTask(t23); } if (include("t31", includees)) { tL3.AppendTask(t31); } if (include("t32", includees)) { tL3.AppendTask(t32); } if (include("t33", includees)) { tL3.AppendTask(t33); } Highpoint.Sage.Graphs.Validity.ValidationService vm = new Highpoint.Sage.Graphs.Validity.ValidationService(t); // model.Start(); AEL: I want control in the tests over when the model is started/validated. }
public void TestSynchronizeTasks() { InitializeModel("t,t1,t2,t3,t11,t12,t13,t21,t22,t23,t31,t32"); Assert.IsTrue(!t11.ValidityState, "Task 11 is valid when it should be invalid"); Assert.IsTrue(!t12.ValidityState, "Task 12 is valid when it should be invalid"); Assert.IsTrue(!t13.ValidityState, "Task 13 is valid when it should be invalid"); Assert.IsTrue(!t21.ValidityState, "Task 21 is valid when it should be invalid"); Assert.IsTrue(!t22.ValidityState, "Task 22 is valid when it should be invalid"); Assert.IsTrue(!t23.ValidityState, "Task 23 is valid when it should be invalid"); Assert.IsTrue(!t31.ValidityState, "Task 31 is valid when it should be invalid"); Assert.IsTrue(!t32.ValidityState, "Task 32 is valid when it should be invalid"); model.Start(); Assert.IsTrue(t11.ValidityState, "Task 11 is invalid when it should be valid"); Assert.IsTrue(t12.ValidityState, "Task 12 is invalid when it should be valid"); Assert.IsTrue(t13.ValidityState, "Task 13 is invalid when it should be valid"); Assert.IsTrue(t21.ValidityState, "Task 21 is invalid when it should be valid"); Assert.IsTrue(t22.ValidityState, "Task 22 is invalid when it should be valid"); Assert.IsTrue(t23.ValidityState, "Task 23 is invalid when it should be valid"); Assert.IsTrue(t31.ValidityState, "Task 31 is invalid when it should be valid"); Assert.IsTrue(t32.ValidityState, "Task 32 is invalid when it should be valid"); // Synchronize two valid tasks from two different task lists Synchronize(t12, t32); Assert.IsTrue(!t12.ValidityState, "Task 12 is still valid even after being synchronized with Task 32"); Assert.IsTrue(!t32.ValidityState, "Task 32 is still valid even after being synchronized with Task 12"); // Create new tasks with task list TestTask nt = new TestTask(model, "New Task"); t.AddChildEdge(nt); TestTask nt1 = new TestTask(model, "New Task 1"); TestTask nt2 = new TestTask(model, "New Task 2"); TestTask nt3 = new TestTask(model, "New Task 3"); tLnew = new TaskList(model, "Task new 1 Children", Guid.NewGuid(), nt); tLnew.AppendTask(nt1); tLnew.AppendTask(nt2); tLnew.AppendTask(nt3); // Sychnronize a new task before a validated task - it should invalidate the following task. Assert.IsTrue(!nt3.ValidityState, "New Task is valid when it should be invalid"); Assert.IsTrue(t21.ValidityState, "Task 21 is invalid when it should be valid"); Synchronize(nt3, t21); Assert.IsTrue(!nt3.ValidityState, "New Task is valid when it should be invalid"); Assert.IsTrue(!t21.ValidityState, "Task 21 is valid when it should be invalid"); // Sychnronize a validated task with a new task Assert.IsTrue(t11.ValidityState, "Task 11 is invalid when it should be valid"); Assert.IsTrue(!nt2.ValidityState, "New Task is valid when it should be invalid"); Synchronize(t11, nt2); Assert.IsTrue(!t11.ValidityState, "Task 11 is valid when it should be invalid"); Assert.IsTrue(!nt2.ValidityState, "New Task is valid when it should be invalid"); // Sychnronize a new task after a validated task - it should NOT invalidate the preceding task. Assert.IsTrue(!nt1.ValidityState, "New Task is valid when it should be invalid"); Assert.IsTrue(t31.ValidityState, "Task 31 is invalid when it should be valid"); Synchronize(t31, nt1); Assert.IsTrue(!nt1.ValidityState, "New Task is valid when it should be invalid"); Assert.IsTrue(!t31.ValidityState, "Task 31 is valid when it should be invalid"); Validate("Test 2"); Assert.IsTrue(t12.ValidityState, "Task 12 is not valid after being validated"); Assert.IsTrue(t13.ValidityState, "Task 13 is not valid after being validated"); Assert.IsTrue(t21.ValidityState, "Task 21 is not valid after being validated"); Assert.IsTrue(t22.ValidityState, "Task 22 is not valid after being validated"); Assert.IsTrue(t23.ValidityState, "Task 23 is not valid after being validated"); Assert.IsTrue(t32.ValidityState, "Task 32 is not valid after being validated"); Assert.IsTrue(nt.ValidityState, "New Task is not valid after being validated"); Assert.IsTrue(nt1.ValidityState, "New Task 1 is not valid after being validated"); Assert.IsTrue(nt2.ValidityState, "New Task 2 is not valid after being validated"); }