コード例 #1
0
        public void ShouldNotMutateStringLiteralInOtherConstructor()
        {
            var objectCreationExpression = SyntaxFactory.ParseExpression("new Other(@\"^abc\")") as ObjectCreationExpressionSyntax;
            var target = new RegexMutator();
            var result = target.ApplyMutations(objectCreationExpression);

            result.ShouldBeEmpty();
        }
コード例 #2
0
        public void ShouldNotMutateRegexWithoutParameters()
        {
            var objectCreationExpression = SyntaxFactory.ParseExpression("new Regex()") as ObjectCreationExpressionSyntax;
            var target = new RegexMutator();
            var result = target.ApplyMutations(objectCreationExpression);

            result.ShouldBeEmpty();
        }
コード例 #3
0
        public void ShouldMutateStringLiteralAsNamedArgumentPatternInRegexConstructor()
        {
            var objectCreationExpression = SyntaxFactory.ParseExpression("new Regex(options: RegexOptions.None, pattern: @\"^abc\")") as ObjectCreationExpressionSyntax;
            var target = new RegexMutator();

            var result = target.ApplyMutations(objectCreationExpression);

            var mutation = result.ShouldHaveSingleItem();

            mutation.DisplayName.ShouldBe("Regex anchor removal mutation");
            var replacement = mutation.ReplacementNode.ShouldBeOfType <LiteralExpressionSyntax>();

            replacement.Token.ValueText.ShouldBe("abc");
        }
コード例 #4
0
        public void ShouldMutateStringLiteralInRegexConstructorWithFullName()
        {
            var objectCreationExpression = SyntaxFactory.ParseExpression("new System.Text.RegularExpressions.Regex(@\"^abc\")") as ObjectCreationExpressionSyntax;
            var target = new RegexMutator();

            var result = target.ApplyMutations(objectCreationExpression);

            var mutation = result.ShouldHaveSingleItem();

            mutation.DisplayName.ShouldBe("Regex anchor removal mutation");
            var replacement = mutation.ReplacementNode.ShouldBeOfType <LiteralExpressionSyntax>();

            replacement.Token.ValueText.ShouldBe("abc");
        }
コード例 #5
0
        public void ShouldMutateStringLiteralMultipleTimes()
        {
            var objectCreationExpression = SyntaxFactory.ParseExpression("new Regex(@\"^abc$\")") as ObjectCreationExpressionSyntax;
            var target = new RegexMutator();

            var result = target.ApplyMutations(objectCreationExpression);

            result.Count().ShouldBe(2);
            result.ShouldAllBe(mutant => mutant.DisplayName == "Regex anchor removal mutation");
            var first = result.First().ReplacementNode.ShouldBeOfType <LiteralExpressionSyntax>();
            var last  = result.Last().ReplacementNode.ShouldBeOfType <LiteralExpressionSyntax>();

            first.Token.ValueText.ShouldBe("abc$");
            last.Token.ValueText.ShouldBe("^abc");
        }
コード例 #6
0
        public void ShouldBeMutationlevelAdvanced()
        {
            var target = new RegexMutator();

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