public void AssignmentMutator_ShouldMutate(SyntaxKind input, SyntaxKind expectedOutput, SyntaxKind?additionalOutput = null) { var target = new AssignmentExpressionMutator(); var originalNode = SyntaxFactory.AssignmentExpression( input, SyntaxFactory.IdentifierName("a"), SyntaxFactory.IdentifierName("b") ); var result = target.ApplyMutations(originalNode).ToList(); if (additionalOutput.HasValue && additionalOutput.Value is var additionalExpectedOutput) { result.Count.ShouldBe(2); result.First().ReplacementNode.IsKind(expectedOutput).ShouldBeTrue(); result.Last().ReplacementNode.IsKind(additionalExpectedOutput).ShouldBeTrue(); } else { var mutation = result.ShouldHaveSingleItem(); mutation.ReplacementNode.IsKind(expectedOutput).ShouldBeTrue(); } foreach (var mutation in result) { mutation.Type.ShouldBe(Mutator.Assignment); mutation.DisplayName.ShouldBe($"{input} to {mutation.ReplacementNode.Kind()} mutation"); } }
public void ShouldNotMutateStringLiteralsBoth() { var target = new AssignmentExpressionMutator(); var originalNode = SyntaxFactory.AssignmentExpression( SyntaxKind.AddAssignmentExpression, SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression), SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression) ); var result = target.ApplyMutations(originalNode).ToList(); result.ShouldBeEmpty(); }
public void ShouldNotMutateSimpleAssignment() { var target = new AssignmentExpressionMutator(); var originalNode = SyntaxFactory.AssignmentExpression( SyntaxKind.SimpleAssignmentExpression, SyntaxFactory.IdentifierName("a"), SyntaxFactory.IdentifierName("b") ); var result = target.ApplyMutations(originalNode).ToList(); result.ShouldBeEmpty(); }
public void AssignmentMutator_ShouldMutate(SyntaxKind input, SyntaxKind expectedOutput) { var target = new AssignmentExpressionMutator(); var originalNode = SyntaxFactory.AssignmentExpression( input, SyntaxFactory.IdentifierName("a"), SyntaxFactory.IdentifierName("b") ); var result = target.ApplyMutations(originalNode).ToList(); result.ShouldHaveSingleItem(); result.ShouldContain(x => x.ReplacementNode.IsKind(expectedOutput)); result.ShouldContain(x => x.Type == Mutator.Assignment); }