protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { var remove = NodeReplacement.Remove("Length"); var newExpression = GetNewExpression(expression, remove); return(GetNewExpression(newExpression, NodeReplacement.Rename("Be", "HaveLength"))); }
protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { if (properties.VisitorName == nameof(CollectionShouldHaveElementAtAnalyzer.ElementAtIndexShouldBeSyntaxVisitor)) { var remove = NodeReplacement.RemoveAndExtractArguments("ElementAt"); var newExpression = GetNewExpression(expression, remove); return(GetNewExpression(newExpression, NodeReplacement.RenameAndPrependArguments("Be", "HaveElementAt", remove.Arguments))); } else if (properties.VisitorName == nameof(CollectionShouldHaveElementAtAnalyzer.IndexerShouldBeSyntaxVisitor)) { var remove = NodeReplacement.RemoveAndRetrieveIndexerArguments("Should"); var newExpression = GetNewExpression(expression, remove); return(GetNewExpression(newExpression, NodeReplacement.RenameAndPrependArguments("Be", "HaveElementAt", remove.Arguments))); } else if (properties.VisitorName == nameof(CollectionShouldHaveElementAtAnalyzer.SkipFirstShouldBeSyntaxVisitor)) { var remove = NodeReplacement.RemoveAndExtractArguments("Skip"); var newExpression = GetNewExpression(expression, remove, NodeReplacement.Remove("First")); return(GetNewExpression(newExpression, NodeReplacement.RenameAndPrependArguments("Be", "HaveElementAt", remove.Arguments))); } throw new System.InvalidOperationException($"Invalid visitor name - {properties.VisitorName}"); }
private ExpressionSyntax ReplaceWithMessage(ExpressionSyntax expression, string whichOrAnd, string renameMethod, string prefix = "", string postfix = "") { var replacements = new[] { NodeReplacement.Remove(whichOrAnd), NodeReplacement.Remove("Message"), NodeReplacement.RemoveOccurrence("Should", occurrence: 2) }; var newExpression = GetNewExpression(expression, replacements); var rename = NodeReplacement.RenameAndExtractArguments(renameMethod, "WithMessage"); newExpression = GetNewExpression(newExpression, rename); ArgumentSyntax newArgument = null; switch (rename.Arguments[0].Expression) { case IdentifierNameSyntax identifier: newArgument = SF.Argument(SF.ParseExpression($"$\"{prefix}{{{identifier.Identifier.Text}}}{postfix}\"")); break; case LiteralExpressionSyntax literal: newArgument = SF.Argument(SF.ParseExpression($"\"{prefix}{literal.Token.ValueText}{postfix}\"")); break; } var replacement = NodeReplacement.WithArguments("WithMessage", rename.Arguments.Replace(rename.Arguments[0], newArgument)); return(GetNewExpression(newExpression, replacement)); }
protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { return(GetNewExpression(expression, NodeReplacement.Remove("Count"), NodeReplacement.RenameAndRemoveInvocationOfMethodOnFirstArgument("NotBe", "NotHaveSameCount") )); }
private ExpressionSyntax ReplaceBeMessage(ExpressionSyntax expression, string whichOrAnd) { var replacements = new[] { NodeReplacement.Remove(whichOrAnd), NodeReplacement.Remove("Message"), NodeReplacement.RemoveOccurrence("Should", occurrence: 2), NodeReplacement.Rename("Be", "WithMessage") }; return(GetNewExpression(expression, replacements)); }
private ExpressionSyntax ReplaceWithInnerException(ExpressionSyntax expression, string whichOrAnd, string renameFrom, string renameTo) { var replacements = new[] { NodeReplacement.Remove(whichOrAnd), NodeReplacement.Remove("InnerException"), NodeReplacement.RemoveOccurrence("Should", occurrence: 2) }; var newExpression = GetNewExpression(expression, replacements); var rename = NodeReplacement.RenameAndExtractArguments(renameFrom, renameTo); return(GetNewExpression(newExpression, rename)); }
protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { switch (properties.VisitorName) { case nameof(CollectionShouldBeEmptyAnalyzer.AnyShouldBeFalseSyntaxVisitor): return(GetNewExpression(expression, NodeReplacement.Remove("Any"), NodeReplacement.Rename("BeFalse", "BeEmpty"))); case nameof(CollectionShouldBeEmptyAnalyzer.ShouldHaveCount0SyntaxVisitor): return(GetNewExpression(expression, new HaveCountNodeReplacement())); default: throw new System.InvalidOperationException($"Invalid visitor name - {properties.VisitorName}"); } }
protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { if (properties.VisitorName == nameof(CollectionShouldHaveCountAnalyzer.CountShouldBe0SyntaxVisitor)) { return(GetNewExpression(expression, NodeReplacement.Remove("Count"), NodeReplacement.RenameAndRemoveFirstArgument("Be", "BeEmpty"))); } else if (properties.VisitorName == nameof(CollectionShouldHaveCountAnalyzer.CountShouldBe1SyntaxVisitor)) { return(GetNewExpression(expression, NodeReplacement.Remove("Count"), NodeReplacement.RenameAndRemoveFirstArgument("Be", "ContainSingle"))); } else if (properties.VisitorName == nameof(CollectionShouldHaveCountAnalyzer.CountShouldBeSyntaxVisitor)) { return(GetNewExpression(expression, NodeReplacement.Remove("Count"), NodeReplacement.Rename("Be", "HaveCount"))); } throw new System.InvalidOperationException($"Invalid visitor name - {properties.VisitorName}"); }
protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { return(GetNewExpression(expression, NodeReplacement.Remove("Count"), NodeReplacement.Rename("BeLessThan", "HaveCountLessThan"))); }
protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { return(GetNewExpression(expression, NodeReplacement.Remove("Any"), NodeReplacement.Rename("BeTrue", "NotBeEmpty"))); }