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()); } } }
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>(); }
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(); }
public void ShouldNotMutate(string methodName) { var target = new LinqMutator(); var result = target.ApplyMutations(GenerateExpressions(methodName)); result.ShouldBeEmpty(); }
public void ShouldNotMutate(string methodName) { var target = new LinqMutator(); IdentifierNameSyntax es = (IdentifierNameSyntax)SyntaxFactory.ParseName(methodName); var result = target.ApplyMutations(es); result.ShouldBeEmpty(); }
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); }