2using Microsoft.VisualStudio.TestTools.UnitTesting;
5using System.Threading.Tasks;
16 var diagnostics = analyzer.SupportedDiagnostics;
17 Assert.AreEqual(1, diagnostics.Length);
19 var ctorHasParametersDiagnostic = diagnostics.Single(_ => _.Id == Constants.AnalyzerIdentifiers.OnlyUseCslaPropertyMethodsInGetSetRule);
20 Assert.AreEqual(OnlyUseCslaPropertyMethodsInGetSetRuleConstants.Title, ctorHasParametersDiagnostic.Title.ToString(),
21 nameof(DiagnosticDescriptor.Title));
22 Assert.AreEqual(OnlyUseCslaPropertyMethodsInGetSetRuleConstants.Message, ctorHasParametersDiagnostic.MessageFormat.ToString(),
23 nameof(DiagnosticDescriptor.MessageFormat));
24 Assert.AreEqual(Constants.Categories.Usage, ctorHasParametersDiagnostic.Category,
25 nameof(DiagnosticDescriptor.Category));
26 Assert.AreEqual(DiagnosticSeverity.Warning, ctorHasParametersDiagnostic.DefaultSeverity,
27 nameof(DiagnosticDescriptor.DefaultSeverity));
29 ctorHasParametersDiagnostic.HelpLinkUri,
30 nameof(DiagnosticDescriptor.HelpLinkUri));
36 var code =
"public class A { }";
38 code, Array.Empty<
string>());
47public abstract class A : BusinessBase<A>
49 public abstract string Data { get; set; }
52 code, Array.Empty<
string>());
61public class A : BusinessBase<A>
63 public static string Data { get; set; }
66 code, Array.Empty<
string>());
75public class A : BusinessBase<A>
77 public string Data { get; }
79 public string ExpressionData => string.Empty;
82 code, Array.Empty<
string>());
91public class A : BusinessBase<A>
93 public string Data { get { return this.GetProperty(); } }
95 public string GetProperty() => null;
98 code, Array.Empty<
string>());
107public class A : BusinessBase<A>
109 public static readonly PropertyInfo<string> DataProperty = RegisterProperty<string>(_ => _.Data);
112 public string Data { get { _x = ""44""; return this.GetProperty(DataProperty); } }
114 public string GetX() { return _x; }
117 code,
new[] { Constants.AnalyzerIdentifiers.OnlyUseCslaPropertyMethodsInGetSetRule });
126public class A : BusinessBase<A>
128 public static readonly PropertyInfo<string> DataProperty = RegisterProperty<string>(_ => _.Data);
129 public string Data { get { return ""x"" + this.GetProperty(DataProperty); } }
131 public static readonly PropertyInfo<string> ExpressionDataProperty = RegisterProperty<string>(_ => _.ExpressionData);
132 public string ExpressionData => ""x"" + this.GetProperty(DataProperty);
137 Constants.AnalyzerIdentifiers.OnlyUseCslaPropertyMethodsInGetSetRule,
138 Constants.AnalyzerIdentifiers.OnlyUseCslaPropertyMethodsInGetSetRule
148public class A : BusinessBase<A>
150 public static readonly PropertyInfo<string> DataProperty = RegisterProperty<string>(_ => _.Data);
151 public string Data { get { return this.GetProperty(DataProperty); } }
153 public static readonly PropertyInfo<string> ExpressionDataProperty = RegisterProperty<string>(_ => _.ExpressionData);
154 public string ExpressionData => this.GetProperty(DataProperty);
157 code, Array.Empty<
string>());
166public class A : BusinessBase<A>
168 public string Data { set { } }
171 code, Array.Empty<
string>());
180public class A : BusinessBase<A>
182 public string Data { set { this.SetProperty(); } }
184 public void SetProperty() { }
187 code, Array.Empty<
string>());
196public class A : BusinessBase<A>
198 public static readonly PropertyInfo<string> DataProperty = RegisterProperty<string>(_ => _.Data);
201 public string Data { get { return null; } set { _x = ""44""; this.SetProperty(DataProperty, value); } }
203 public string GetX() { return _x; }
208 Constants.AnalyzerIdentifiers.OnlyUseCslaPropertyMethodsInGetSetRule
218public class A : BusinessBase<A>
220 public static readonly PropertyInfo<string> DataProperty = RegisterProperty<string>(_ => _.Data);
225 set { this.SetProperty(DataProperty, value); }
229 code, Array.Empty<
string>());
async Task AnalyzeWhenClassHasSetterWithMethodCallButIsNotCslaPropertyMethod()
async Task AnalyzeWhenClassHasGetterWithMethodCallAndReturnAndDirectInvocationExpression()
async Task AnalyzeWhenClassHasGetterWithMethodCallAndMultipleStatements()
async Task AnalyzeWhenClassHasSetterWithMethodCallAndMultipleStatements()
async Task AnalyzeWhenClassHasSetterWithMethodCallAndDirectInvocationExpression()
void VerifySupportedDiagnostics()
async Task AnalyzeWhenClassHasGetterWithMethodCallButIsNotCslaPropertyMethod()
async Task AnalyzeWhenClassHasGetterWithNoMethodCall()
async Task AnalyzeWhenClassHasSetterWithNoMethodCall()
async Task AnalyzeWhenClassHasStaticProperty()
async Task AnalyzeWhenClassHasAbstractProperty()
async Task AnalyzeWhenClassIsNotStereotype()
async Task AnalyzeWhenClassHasGetterWithMethodCallAndReturnButNoDirectInvocationExpression()