Ejemplo n.º 1
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 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.
        }
Ejemplo n.º 4
0
 public Mutant(string id, MutationTarget mutationTarget)
     : base("Mutant", false)
 {
     _id                = id;
     _mutationTarget    = mutationTarget;
     _mutantTestSession = new MutantTestSession();
     UpdateDisplayedText();
 }
Ejemplo n.º 5
0
 public Mutant(string id, MutationTarget mutationTarget)
    : base("Mutant", false)
 {
     _id = id;
     _mutationTarget = mutationTarget;
     _mutantTestSession = new MutantTestSession();
     UpdateDisplayedText();
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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;
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
        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);
        }