2using Microsoft.VisualStudio.TestTools.UnitTesting;
5using System.Threading.Tasks;
16 var diagnostics = analyzer.SupportedDiagnostics;
17 Assert.AreEqual(1, diagnostics.Length);
19 var diagnostic = diagnostics.Single(_ => _.Id == Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields);
20 Assert.AreEqual(EvaluateManagedBackingFieldsAnalayzerConstants.Title, diagnostic.Title.ToString(),
21 nameof(DiagnosticDescriptor.Title));
22 Assert.AreEqual(EvaluateManagedBackingFieldsAnalayzerConstants.Message, diagnostic.MessageFormat.ToString(),
23 nameof(DiagnosticDescriptor.MessageFormat));
24 Assert.AreEqual(Constants.Categories.Usage, diagnostic.Category,
25 nameof(DiagnosticDescriptor.Category));
26 Assert.AreEqual(DiagnosticSeverity.Error, diagnostic.DefaultSeverity,
27 nameof(DiagnosticDescriptor.DefaultSeverity));
29 diagnostic.HelpLinkUri,
30 nameof(DiagnosticDescriptor.HelpLinkUri));
36 var code =
"public class ClassIsNotStereotype { }";
38 code, Array.Empty<
string>());
47public class A : BusinessBase<A>
49 public static readonly PropertyInfo<string> DataProperty =
50 RegisterProperty<string>(_ => _.Data);
51 public string Data { get; set; }
53 public static readonly PropertyInfo<string> ArrowDataProperty =
54 RegisterProperty<string>(_ => _.ArrowData);
55 public string ArrowData
58 set => ArrowData = value;
61 public static readonly PropertyInfo<string> BlockDataProperty =
62 RegisterProperty<string>(_ => _.BlockData);
63 public string BlockData
65 get { return string.Empty; }
66 set { BlockData = value; }
69 public static readonly PropertyInfo<string> ExpressionDataProperty =
70 RegisterProperty<string>(_ => _.ExpressionData);
71 public string ExpressionData => string.Empty;
74 code, Array.Empty<
string>());
83public class A : BusinessBase<A>
85 public static readonly PropertyInfo<string> DataProperty =
86 RegisterProperty<string>(_ => _.Data);
89 get => GetProperty(DataProperty);
90 set => SetProperty(DataProperty, value);
93 public static readonly PropertyInfo<string> ExpressionDataProperty =
94 RegisterProperty<string>(_ => _.ExpressionData);
95 public string ExpressionData => GetProperty(ExpressionDataProperty);
98 code, Array.Empty<
string>());
107public class A : BusinessBase<A>
109 static readonly PropertyInfo<string> BlockDataProperty =
110 RegisterProperty<string>(_ => _.BlockData);
111 public string BlockData
113 get { return GetProperty(BlockDataProperty); }
114 set { SetProperty(BlockDataProperty, value); }
117 static readonly PropertyInfo<string> ArrowDataProperty =
118 RegisterProperty<string>(_ => _.ArrowData);
119 public string ArrowData
121 get => GetProperty(ArrowDataProperty);
122 set => SetProperty(ArrowDataProperty, value);
125 static readonly PropertyInfo<string> ExpressionDataProperty =
126 RegisterProperty<string>(_ => _.ExpressionData);
127 public string ExpressionData => GetProperty(ExpressionDataProperty);
132 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
133 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
134 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
144public class A : BusinessBase<A>
146 public readonly PropertyInfo<string> BlockDataProperty =
147 RegisterProperty<string>(_ => _.BlockData);
148 public string BlockData
150 get { return GetProperty(BlockDataProperty); }
151 set { SetProperty(BlockDataProperty, value); }
154 public readonly PropertyInfo<string> ArrowDataProperty =
155 RegisterProperty<string>(_ => _.ArrowData);
156 public string ArrowData
158 get => GetProperty(ArrowDataProperty);
159 set => SetProperty(ArrowDataProperty, value);
162 public readonly PropertyInfo<string> ExpressionDataProperty =
163 RegisterProperty<string>(_ => _.ExpressionData);
164 public string ExpressionData => GetProperty(ExpressionDataProperty);
169 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
170 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
171 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
181public class A : BusinessBase<A>
183 public static PropertyInfo<string> BlockDataProperty =
184 RegisterProperty<string>(_ => _.BlockData);
185 public string BlockData
187 get { return GetProperty(BlockDataProperty); }
188 set { SetProperty(BlockDataProperty, value); }
191 public static PropertyInfo<string> DataProperty =
192 RegisterProperty<string>(_ => _.Data);
195 get => GetProperty(DataProperty);
196 set => SetProperty(DataProperty, value);
199 public static PropertyInfo<string> ExpressionDataProperty =
200 RegisterProperty<string>(_ => _.ExpressionData);
201 public string ExpressionData => GetProperty(ExpressionDataProperty);
206 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
207 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
208 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
218public class A : CommandBase<A>
220 public static PropertyInfo<string> BlockDataProperty =
221 RegisterProperty<string>(_ => _.BlockData);
222 public string BlockData
224 get { return ReadProperty(BlockDataProperty); }
225 set { LoadProperty(BlockDataProperty, value); }
228 public static PropertyInfo<string> ArrowDataProperty =
229 RegisterProperty<string>(_ => _.ArrowData);
230 public string ArrowData
232 get => ReadProperty(ArrowDataProperty);
233 set => LoadProperty(ArrowDataProperty, value);
236 public static PropertyInfo<string> ExpressionDataProperty =
237 RegisterProperty<string>(_ => _.ExpressionData);
238 public string ExpressionData => ReadProperty(ExpressionDataProperty);
243 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
244 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
245 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
void VerifySupportedDiagnostics()
async Task AnalyzeWhenCommandHasManagedBackingFieldUsedPropertyAndIsNotReadonly()
async Task AnalyzeWhenClassHasManagedBackingFieldUsedProperty()
async Task AnalyzeWhenClassHasManagedBackingFieldUsedPropertyAndIsNotStatic()
async Task AnalyzeWhenClassHasManagedBackingFieldUsedPropertyAndIsNotReadonly()
async Task AnalyzeWhenClassIsNotStereotype()
async Task AnalyzeWhenClassHasManagedBackingFieldNotUsedByProperty()
async Task AnalyzeWhenClassHasManagedBackingFieldUsedPropertyAndIsNotPublic()