public void RedundantRemoverWithNested() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = true }; var activityB = new Activity("B", "somename2") { Included = true }; var activityC = new Activity("C", "somename3") { Included = true }; var activityD = new Activity("D", "somename4") { Included = false }; var activityE = new Activity("E", "somename5") { Included = true }; var activityF = new Activity("F", "somename6") { Included = true }; dcrGraph.AddActivities(activityA, activityB, activityC, activityD, activityE, activityF); dcrGraph.AddIncludeExclude(true, activityC.Id,activityD.Id); dcrGraph.AddIncludeExclude(true, activityC.Id, activityE.Id); //Redundant include dcrGraph.AddCondition(activityE.Id,activityF.Id); //outgoing relation //ingoing relation dcrGraph.AddCondition(activityA.Id,activityC.Id); dcrGraph.AddCondition(activityA.Id, activityD.Id); dcrGraph.AddCondition(activityA.Id, activityE.Id); dcrGraph.MakeNestedGraph(new HashSet<Activity>() {activityC, activityD, activityE}); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); //we check that the Nested graph has had the redundant relation removed. Assert.IsFalse(newGraph.InRelation(activityE,newGraph.IncludeExcludes)); }
public void RedundancyTestCase7() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = false, Pending = true }; var activityB = new Activity("B", "somename2") { Included = true }; var activityC = new Activity("C", "somename3") { Included = true }; dcrGraph.Activities.Add(activityA); dcrGraph.Activities.Add(activityB); dcrGraph.Activities.Add(activityC); dcrGraph.AddResponse(activityB.Id, activityA.Id); dcrGraph.AddIncludeExclude(true, activityC.Id, activityA.Id); dcrGraph.AddIncludeExclude(true, activityB.Id, activityA.Id); dcrGraph.AddIncludeExclude(false, activityA.Id, activityB.Id); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); //Now either the redundant response relation or A's initial pending state should be removed:"); Assert.IsFalse(newGraph.InRelation(activityA, newGraph.Responses) && newGraph.GetActivity(activityA.Id).Pending); }
public void TestResponseAndExcludeRedundantIfNoTargetInclude() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = true }; var activityB = new Activity("B", "somename2") { Included = true }; dcrGraph.Activities.Add(activityA); dcrGraph.Activities.Add(activityB); dcrGraph.AddResponse(activityA.Id, activityB.Id); dcrGraph.AddIncludeExclude(false, activityA.Id, activityB.Id); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); //Now the redundant response relation should be removed: Assert.IsFalse(newGraph.InRelation(activityB, newGraph.Responses)); }
public void TestNonRedundantResponseIsNotRemoved2() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = true }; var activityB = new Activity("B", "somename2") { Included = false }; dcrGraph.Activities.Add(activityA); dcrGraph.Activities.Add(activityB); dcrGraph.AddResponse(activityA.Id, activityB.Id); dcrGraph.AddIncludeExclude(true, activityA.Id, activityB.Id); dcrGraph.AddIncludeExclude(false, activityA.Id, activityA.Id); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); Assert.IsTrue(newGraph.InRelation(activityA, newGraph.Responses)); }
public void TestIncludesToIncludedRedundant() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = true }; var activityB = new Activity("B", "somename2") { Included = true }; dcrGraph.Activities.Add(activityA); dcrGraph.Activities.Add(activityB); dcrGraph.AddIncludeExclude(true, activityA.Id, activityB.Id); //Now the redundant include relation should be removed:"); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); Assert.IsFalse(newGraph.InRelation(activityA, newGraph.IncludeExcludes)); }
public void TestIncludeConditionRedundancy() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = true }; var activityB = new Activity("B", "somename2") { Included = false }; dcrGraph.Activities.Add(activityA); dcrGraph.Activities.Add(activityB); dcrGraph.AddCondition(activityA.Id, activityB.Id); dcrGraph.AddIncludeExclude(true, activityA.Id, activityB.Id); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); //Now the redundant condition relation from A to B should be removed: Assert.IsFalse(newGraph.InRelation(activityB, newGraph.Conditions)); }
public void TestConditionMilestoneRedundancy() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = false }; var activityB = new Activity("B", "somename2") { Included = true }; var activityC = new Activity("C", "somename3") { Included = true }; dcrGraph.Activities.Add(activityA); dcrGraph.Activities.Add(activityB); dcrGraph.Activities.Add(activityC); dcrGraph.AddCondition(activityA.Id, activityB.Id); dcrGraph.AddMileStone(activityA.Id, activityB.Id); dcrGraph.AddIncludeExclude(true, activityC.Id, activityA.Id); dcrGraph.AddResponse(activityC.Id, activityA.Id); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); //Now either the redundant Condition or Milestone relation should be removed:"); Assert.IsFalse(newGraph.InRelation(activityA, newGraph.Conditions) && newGraph.InRelation(activityA, newGraph.Milestones)); }
public void TestActivityAlwaysExcludedRedundant() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = false }; var activityB = new Activity("B", "somename2") { Included = true }; var activityC = new Activity("C", "somename3") { Included = true }; dcrGraph.Activities.Add(activityA); dcrGraph.Activities.Add(activityB); dcrGraph.Activities.Add(activityC); dcrGraph.AddCondition(activityA.Id, activityB.Id); dcrGraph.AddMileStone(activityA.Id, activityB.Id); dcrGraph.AddIncludeExclude(false, activityA.Id, activityC.Id); dcrGraph.AddResponse(activityA.Id, activityB.Id); dcrGraph.AddResponse(activityB.Id, activityA.Id); var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); //Now all the relations from or to A should be removed:"); Assert.IsTrue(!newGraph.InRelation(activityA, newGraph.Conditions) && !newGraph.InRelation(activityA, newGraph.IncludeExcludes) && !newGraph.InRelation(activityA, newGraph.Responses) && !newGraph.InRelation(activityA, newGraph.Milestones)); }
public void RedundantRemoverWithNestedRedundantIncludes() { var dcrGraph = new DcrGraph(); var activityA = new Activity("A", "somename1") { Included = false }; var activityB = new Activity("B", "somename2") { Included = true }; var activityC = new Activity("C", "somename3") { Included = true }; var activityD = new Activity("D", "somename4") { Included = false }; dcrGraph.AddActivities(activityA, activityB, activityC, activityD); dcrGraph.AddIncludeExclude(true, activityA.Id, activityB.Id); dcrGraph.AddIncludeExclude(true, activityA.Id, activityC.Id); dcrGraph.AddIncludeExclude(true, activityA.Id, activityD.Id); dcrGraph.MakeNestedGraph(new HashSet<Activity>() { activityB, activityC, activityD }); dcrGraph.AddIncludeExclude(true, activityA.Id, activityB.Id); // redundant include var newGraph = new RedundancyRemover().RemoveRedundancy(dcrGraph); //we check that the (redundant) include to an activity within an included nested graph was removed Assert.IsFalse(newGraph.InRelation(activityB, newGraph.IncludeExcludes)); }