CSLA.NET 6.0.0
CSLA .NET is a software development framework that helps you build a reusable, maintainable object-oriented business layer for your app.
EvaluateManagedBackingFieldsAnalayzerTests.cs
Go to the documentation of this file.
1using Microsoft.CodeAnalysis;
2using Microsoft.VisualStudio.TestTools.UnitTesting;
3using System;
4using System.Linq;
5using System.Threading.Tasks;
6
8{
9 [TestClass]
11 {
12 [TestMethod]
14 {
15 var analyzer = new EvaluateManagedBackingFieldsAnalayzer();
16 var diagnostics = analyzer.SupportedDiagnostics;
17 Assert.AreEqual(1, diagnostics.Length);
18
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));
28 Assert.AreEqual(HelpUrlBuilder.Build(Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields, nameof(EvaluateManagedBackingFieldsAnalayzer)),
29 diagnostic.HelpLinkUri,
30 nameof(DiagnosticDescriptor.HelpLinkUri));
31 }
32
33 [TestMethod]
35 {
36 var code = "public class ClassIsNotStereotype { }";
37 await TestHelpers.RunAnalysisAsync<EvaluateManagedBackingFieldsAnalayzer>(
38 code, Array.Empty<string>());
39 }
40
41 [TestMethod]
43 {
44 var code =
45@"using Csla;
46
47public class A : BusinessBase<A>
48{
49 public static readonly PropertyInfo<string> DataProperty =
50 RegisterProperty<string>(_ => _.Data);
51 public string Data { get; set; }
52
53 public static readonly PropertyInfo<string> ArrowDataProperty =
54 RegisterProperty<string>(_ => _.ArrowData);
55 public string ArrowData
56 {
57 get => string.Empty;
58 set => ArrowData = value;
59 }
60
61 public static readonly PropertyInfo<string> BlockDataProperty =
62 RegisterProperty<string>(_ => _.BlockData);
63 public string BlockData
64 {
65 get { return string.Empty; }
66 set { BlockData = value; }
67 }
68
69 public static readonly PropertyInfo<string> ExpressionDataProperty =
70 RegisterProperty<string>(_ => _.ExpressionData);
71 public string ExpressionData => string.Empty;
72}";
73 await TestHelpers.RunAnalysisAsync<EvaluateManagedBackingFieldsAnalayzer>(
74 code, Array.Empty<string>());
75 }
76
77 [TestMethod]
79 {
80 var code =
81@"using Csla;
82
83public class A : BusinessBase<A>
84{
85 public static readonly PropertyInfo<string> DataProperty =
86 RegisterProperty<string>(_ => _.Data);
87 public string Data
88 {
89 get => GetProperty(DataProperty);
90 set => SetProperty(DataProperty, value);
91 }
92
93 public static readonly PropertyInfo<string> ExpressionDataProperty =
94 RegisterProperty<string>(_ => _.ExpressionData);
95 public string ExpressionData => GetProperty(ExpressionDataProperty);
96}";
97 await TestHelpers.RunAnalysisAsync<EvaluateManagedBackingFieldsAnalayzer>(
98 code, Array.Empty<string>());
99 }
100
101 [TestMethod]
103 {
104 var code =
105@"using Csla;
106
107public class A : BusinessBase<A>
108{
109 static readonly PropertyInfo<string> BlockDataProperty =
110 RegisterProperty<string>(_ => _.BlockData);
111 public string BlockData
112 {
113 get { return GetProperty(BlockDataProperty); }
114 set { SetProperty(BlockDataProperty, value); }
115 }
116
117 static readonly PropertyInfo<string> ArrowDataProperty =
118 RegisterProperty<string>(_ => _.ArrowData);
119 public string ArrowData
120 {
121 get => GetProperty(ArrowDataProperty);
122 set => SetProperty(ArrowDataProperty, value);
123 }
124
125 static readonly PropertyInfo<string> ExpressionDataProperty =
126 RegisterProperty<string>(_ => _.ExpressionData);
127 public string ExpressionData => GetProperty(ExpressionDataProperty);
128}";
129 await TestHelpers.RunAnalysisAsync<EvaluateManagedBackingFieldsAnalayzer>(
130 code, new[]
131 {
132 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
133 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
134 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
135 });
136 }
137
138 [TestMethod]
140 {
141 var code =
142@"using Csla;
143
144public class A : BusinessBase<A>
145{
146 public readonly PropertyInfo<string> BlockDataProperty =
147 RegisterProperty<string>(_ => _.BlockData);
148 public string BlockData
149 {
150 get { return GetProperty(BlockDataProperty); }
151 set { SetProperty(BlockDataProperty, value); }
152 }
153
154 public readonly PropertyInfo<string> ArrowDataProperty =
155 RegisterProperty<string>(_ => _.ArrowData);
156 public string ArrowData
157 {
158 get => GetProperty(ArrowDataProperty);
159 set => SetProperty(ArrowDataProperty, value);
160 }
161
162 public readonly PropertyInfo<string> ExpressionDataProperty =
163 RegisterProperty<string>(_ => _.ExpressionData);
164 public string ExpressionData => GetProperty(ExpressionDataProperty);
165}";
166 await TestHelpers.RunAnalysisAsync<EvaluateManagedBackingFieldsAnalayzer>(
167 code, new[]
168 {
169 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
170 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
171 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
172 });
173 }
174
175 [TestMethod]
177 {
178 var code =
179@"using Csla;
180
181public class A : BusinessBase<A>
182{
183 public static PropertyInfo<string> BlockDataProperty =
184 RegisterProperty<string>(_ => _.BlockData);
185 public string BlockData
186 {
187 get { return GetProperty(BlockDataProperty); }
188 set { SetProperty(BlockDataProperty, value); }
189 }
190
191 public static PropertyInfo<string> DataProperty =
192 RegisterProperty<string>(_ => _.Data);
193 public string Data
194 {
195 get => GetProperty(DataProperty);
196 set => SetProperty(DataProperty, value);
197 }
198
199 public static PropertyInfo<string> ExpressionDataProperty =
200 RegisterProperty<string>(_ => _.ExpressionData);
201 public string ExpressionData => GetProperty(ExpressionDataProperty);
202}";
203 await TestHelpers.RunAnalysisAsync<EvaluateManagedBackingFieldsAnalayzer>(
204 code, new[]
205 {
206 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
207 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
208 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
209 });
210 }
211
212 [TestMethod]
214 {
215 var code =
216@"using Csla;
217
218public class A : CommandBase<A>
219{
220 public static PropertyInfo<string> BlockDataProperty =
221 RegisterProperty<string>(_ => _.BlockData);
222 public string BlockData
223 {
224 get { return ReadProperty(BlockDataProperty); }
225 set { LoadProperty(BlockDataProperty, value); }
226 }
227
228 public static PropertyInfo<string> ArrowDataProperty =
229 RegisterProperty<string>(_ => _.ArrowData);
230 public string ArrowData
231 {
232 get => ReadProperty(ArrowDataProperty);
233 set => LoadProperty(ArrowDataProperty, value);
234 }
235
236 public static PropertyInfo<string> ExpressionDataProperty =
237 RegisterProperty<string>(_ => _.ExpressionData);
238 public string ExpressionData => ReadProperty(ExpressionDataProperty);
239}";
240 await TestHelpers.RunAnalysisAsync<EvaluateManagedBackingFieldsAnalayzer>(
241 code, new[]
242 {
243 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
244 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields,
245 Constants.AnalyzerIdentifiers.EvaluateManagedBackingFields
246 });
247 }
248 }
249}