public void Test() { var gen = new XmlResultsGenerator(null, null, null, null, null); var muSession = new MutationTestingSession(); var mutar = new MutationTarget(new MutationVariant()); var ass = new AssemblyNode("Assembly"); muSession.MutantsGrouped.Add(ass); var nodeNamespace = new TypeNamespaceNode(ass, "Namespace"); ass.Children.Add(nodeNamespace); var nodeType = new TypeNode(nodeNamespace, "Type"); nodeNamespace.Children.Add(nodeType); var nodeMethod = new MethodNode(nodeType, "Method", null, true); nodeType.Children.Add(nodeMethod); var nodeGroup = new MutantGroup("Gr1", nodeMethod); nodeMethod.Children.Add(nodeGroup); var nodeMutant = new Mutant("m1", nodeGroup, mutar); nodeGroup.Children.Add(nodeMutant); XDocument generateResults = gen.GenerateResults(muSession, false, false, ProgressCounter.Inactive(), CancellationToken.None).Result; Console.WriteLine(generateResults.ToString()); //gen. }
public void Test1() { System.Action<CheckedNode, ICollection<MutationTarget>> typeNodeCreator = (parent, targets) => { }; Func<MutationTarget, string> namespaceExtractor = target => target.NamespaceName; var mt1 = new MutationTarget(null); mt1.NamespaceName = "Root.NamespaceName1"; var mt2 = new MutationTarget(null); mt2.NamespaceName = "Root.NamespaceName2"; var mt3 = new MutationTarget(null); mt3.NamespaceName = "Another.NamespaceName3"; var mt4 = new MutationTarget(null); mt4.NamespaceName = "Another.NamespaceName3"; var ass = new AssemblyNode(""); NamespaceGrouper<MutationTarget, CheckedNode>. GroupTypes(ass, namespaceExtractor, (parent, name) => new TypeNamespaceNode(parent, name), typeNodeCreator, new List<MutationTarget> { mt1, mt2, mt3 }); ass.Children.Count.ShouldEqual(2); ass.Children.Single(c => c.Name == "Root").Children.Count.ShouldEqual(2); ass.Children.Single(c => c.Name == "Another.NamespaceName3").Children.Count.ShouldEqual(0); }
public void Test() { var gen = new XmlResultsGenerator(null,null,null, null, null); var muSession = new MutationTestingSession(); var mutar = new MutationTarget(new MutationVariant()); var ass = new AssemblyNode("Assembly"); muSession.MutantsGrouped.Add(ass); var nodeNamespace = new TypeNamespaceNode(ass, "Namespace"); ass.Children.Add(nodeNamespace); var nodeType = new TypeNode(nodeNamespace, "Type"); nodeNamespace.Children.Add(nodeType); var nodeMethod = new MethodNode(nodeType, "Method", null, true); nodeType.Children.Add(nodeMethod); var nodeGroup = new MutantGroup("Gr1", nodeMethod); nodeMethod.Children.Add(nodeGroup); var nodeMutant = new Mutant("m1", nodeGroup, mutar); nodeGroup.Children.Add(nodeMutant); XDocument generateResults = gen.GenerateResults(muSession, false, false, ProgressCounter.Inactive(), CancellationToken.None).Result; Console.WriteLine(generateResults.ToString()); //gen. }
public Mutant(string id, MutationTarget mutationTarget) : base("Mutant", false) { _id = id; _mutationTarget = mutationTarget; _mutantTestSession = new MutantTestSession(); UpdateDisplayedText(); }
public void MarkSharedTarget <T>(T o) { var mutationTarget = new MutationTarget( new MutationVariant("", new Dictionary <string, object>())) { Name = o.GetType().Name, ProcessingContext = _processor.CreateProcessingContext <T>(), }; _sharedTargets.Add(mutationTarget); }
public void PostProcess(MutationTarget mutationTarget) { //just unspecialize all stored objects mutationTarget.Variant.AstObjects = mutationTarget.Variant.AstObjects .ToDictionary(pair => pair.Key, pair => Unspecialize(pair.Value)); //translate objects to their indices that identify them mutationTarget.Variant.ObjectsIndices = mutationTarget.Variant .AstObjects.MapValues((key, val) => AllAstIndices[val]); mutationTarget.Variant.AstObjects = null; //TODO: refactor if (mutationTarget.ProcessingContext != null && mutationTarget.ProcessingContext.ModuleName == _traversedModule.Name.Value) { var type = (INamespaceTypeDefinition)AllAstObjects[ mutationTarget.ProcessingContext.Type.Context.Descriptor]; mutationTarget.NamespaceName = type.ContainingUnitNamespace.Name.Value; mutationTarget.TypeName = type.Name.Value; } }
public AstNode PostProcessBack(MutationTarget mutationTarget) { if (mutationTarget.ProcessingContext.ModuleName != _traversedModule.Name.Value) { return(null); } //Are we processing an object corresponding to any mutation target? // var target = _mutationTargets.SingleOrDefault(t => t.CounterValue == TreeObjectsCounter); AstNode node; if (mutationTarget.ProcessingContext != null) { if (!AllAstObjects.ContainsKey(mutationTarget.ProcessingContext.Descriptor)) { _log.Error("No object: " + mutationTarget.ProcessingContext.Descriptor); _log.Error("All objects: " + AllAstObjects.Keys.Select(_ => _.ToString()).Aggregate((a, b) => a + "\n" + b)); Debugger.Break(); } node = new AstNode(mutationTarget.ProcessingContext, AllAstObjects[mutationTarget.ProcessingContext.Descriptor]); } else { node = new AstNode(new ProcessingContext(), new AstDescriptor()); } if (mutationTarget.ProcessingContext != null && mutationTarget.ProcessingContext.ModuleName == _traversedModule.Name.Value) { //TODO: do better. now they can be null for changeless mutant if (mutationTarget.Variant.ObjectsIndices != null && AllAstObjects != null) { mutationTarget.Variant.AstObjects = mutationTarget.Variant.ObjectsIndices .MapValues((key, val) => AllAstObjects[val]); mutationTarget.MethodMutated = (IMethodDefinition)AllAstObjects[ mutationTarget.ProcessingContext.Method.Context.Descriptor]; } } return(node); }
public void MarkMutationTarget <T>(T obj, IList <MutationVariant> variants) { Func <int> genId = () => id[0]++; if (!_processor.IsCurrentlyProcessed(obj)) { throw new ArgumentException("MarkMutationTarget must be called on current Visit method argument"); } _log.Debug("MarkMutationTarget: " + _processor.GetDescriptorForCurrent() + " - " + Formatter.Format(obj) + " : " + obj.GetHashCode()); string groupname = "#" + (groupCounter++);//+" - "+_formatter.Format(obj); foreach (var mutationVariant in variants) { var mutationTarget = new MutationTarget(mutationVariant) { Id = _operatorId + "#" + genId(), Name = mutationVariant.Signature, ProcessingContext = _processor.CreateProcessingContext <T>(), GroupName = groupname, OperatorId = _operatorId, }; if (_conflicts.Contains(mutationTarget.Id)) { mutationTarget.Id = mutationTarget.Id + "-conflict:" + DateTime.Now; } else { _conflicts.Add(mutationTarget.Id); } if (mutationTarget.ProcessingContext.Method != null) { mutationTarget.MethodRaw = (IMethodDefinition)mutationTarget.ProcessingContext.Method.Object; } _mutationTargets.Add(mutationTarget); } }
public void Test1() { System.Action <CheckedNode, ICollection <MutationTarget> > typeNodeCreator = (parent, targets) => { }; Func <MutationTarget, string> namespaceExtractor = target => target.NamespaceName; var mt1 = new MutationTarget(null); mt1.NamespaceName = "Root.NamespaceName1"; var mt2 = new MutationTarget(null); mt2.NamespaceName = "Root.NamespaceName2"; var mt3 = new MutationTarget(null); mt3.NamespaceName = "Another.NamespaceName3"; var mt4 = new MutationTarget(null); mt4.NamespaceName = "Another.NamespaceName3"; var ass = new AssemblyNode(""); NamespaceGrouper <MutationTarget, CheckedNode> . GroupTypes(ass, namespaceExtractor, (parent, name) => new TypeNamespaceNode(parent, name), typeNodeCreator, new List <MutationTarget> { mt1, mt2, mt3 }); ass.Children.Count.ShouldEqual(2); ass.Children.Single(c => c.Name == "Root").Children.Count.ShouldEqual(2); ass.Children.Single(c => c.Name == "Another.NamespaceName3").Children.Count.ShouldEqual(0); }