Exemplo n.º 1
0
        public void ShouldMutate(LinqExpression original, LinqExpression expected)
        {
            var target = new LinqMutator();

            var expressions = GenerateExpressions(original.ToString());

            foreach (var expression in expressions)
            {
                var result = target.ApplyMutations(expression).ToList();

                result.ShouldHaveSingleItem();

                var first = result.First();

                first.ReplacementNode.ShouldBeOfType <MemberAccessExpressionSyntax>();

                var replacement = first.ReplacementNode as MemberAccessExpressionSyntax;
                var identifier  = replacement.Name.Identifier;

                if (expected.Equals(LinqExpression.None))
                {
                    string.IsNullOrEmpty(identifier.ValueText).ShouldBeTrue();
                }
                else
                {
                    identifier.ValueText.ShouldBe(expected.ToString());
                }
            }
        }
Exemplo n.º 2
0
        public void ShouldMutateProperlyConditionalExpression()
        {
            var tree = CSharpSyntaxTree.ParseText(@"
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace TestApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            IEnumerable<string> Test = new[] {};

            Test?.First.Second.Third.All(_ => _!=null);
        }
    }
}");
            var memberAccessExpression = tree.GetRoot()
                                         .DescendantNodes()
                                         .OfType <ConditionalAccessExpressionSyntax>()
                                         .Single();
            var target = new LinqMutator();

            var result = target.ApplyMutations(memberAccessExpression);

            result.ShouldNotBeEmpty();
            result.First().OriginalNode.Parent.Parent.ShouldBeOfType <BlockSyntax>();
        }
Exemplo n.º 3
0
        public void ShouldMutate(LinqExpression original, LinqExpression expected)
        {
            var target = new LinqMutator();

            var expressions = GenerateExpressions(original);

            foreach (var expression in expressions)
            {
                var result = target.ApplyMutations(expression).ToList();

                result.ShouldHaveSingleItem();

                var first = result.First();

                first.ReplacementNode.IsKind(SyntaxKind.IdentifierName)
                .ShouldBeTrue();
                if (expected.Equals(LinqExpression.None))
                {
                    string.IsNullOrEmpty(
                        ((IdentifierNameSyntax)first.ReplacementNode)
                        .Identifier.ValueText)
                    .ShouldBeTrue();
                }
                else
                {
                    ((IdentifierNameSyntax)first.ReplacementNode)
                    .Identifier.ValueText.Equals(
                        expected.ToString())
                    .ShouldBeTrue();
                }
            }
        }
        public void ShouldRemoveLinqExpressionWhenFilterIsCorrect(LinqExpression exp)
        {
            // Arrange
            var target = new LinqMutator();

            var expression = GenerateExpressions(exp.ToString());

            var result = target.ApplyMutations(expression).ToList();

            var mutants = result.Select(s => new Mutant()
            {
                ResultStatus = MutantStatus.Survived, Mutation = s
            });

            var sut = new ExcludeLinqExpressionFilter();

            // Act
            var mutations = sut.FilterMutants(mutants, null, new StrykerOptions()
            {
                ExcludedLinqExpressions = new List <LinqExpression>()
                {
                    exp
                }
            });

            // Assert
            mutations.ShouldBeEmpty();
        }
Exemplo n.º 5
0
        public void ShouldNotMutate(string methodName)
        {
            var target = new LinqMutator();

            var result = target.ApplyMutations(GenerateExpressions(methodName));

            result.ShouldBeEmpty();
        }
Exemplo n.º 6
0
        public void ShouldNotMutate(string methodName)
        {
            var target = new LinqMutator();

            IdentifierNameSyntax es = (IdentifierNameSyntax)SyntaxFactory.ParseName(methodName);
            var result = target.ApplyMutations(es);

            result.ShouldBeEmpty();
        }
Exemplo n.º 7
0
        public void ShouldMutate(LinqExpression original, LinqExpression expected)
        {
            var target = new LinqMutator();

            var expression = GenerateExpressions(original.ToString());

            var result = target.ApplyMutations(expression).ToList();

            var mutation    = result.ShouldHaveSingleItem();
            var replacement = mutation.ReplacementNode.ShouldBeOfType <MemberAccessExpressionSyntax>();

            replacement.Name.Identifier.ValueText.ShouldBe(expected.ToString());
        }
        public void ShouldMutate(LinqExpression original, LinqExpression expected)
        {
            var target = new LinqMutator();

            var expression = GenerateExpressions(original.ToString());

            var result = target.ApplyMutations(expression).ToList();

            var mutation     = result.ShouldHaveSingleItem();
            var replacement  = mutation.ReplacementNode.ShouldBeOfType <InvocationExpressionSyntax>();
            var simpleMember = replacement.Expression.ShouldBeOfType <MemberAccessExpressionSyntax>();

            simpleMember.Name.Identifier.ValueText.ShouldBe(expected.ToString());

            mutation.DisplayName.ShouldBe($"Linq method mutation ({ original }() to { expected }())");
        }
        public void ShouldBeMutationLevelAdvanced()
        {
            var target = new LinqMutator();

            target.MutationLevel.ShouldBe(MutationLevel.Standard);
        }