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.
FindSaveAssignmentIssueAnalyzerTests.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 FindSaveAssignmentIssueAnalyzer();
16 var diagnostics = analyzer.SupportedDiagnostics;
17 Assert.AreEqual(2, diagnostics.Length);
18
19 var saveDiagnostic = diagnostics.Single(_ => _.Id == Constants.AnalyzerIdentifiers.FindSaveAssignmentIssue);
20 Assert.AreEqual(FindSaveAssignmentIssueAnalyzerConstants.Title, saveDiagnostic.Title.ToString(),
21 nameof(DiagnosticDescriptor.Title));
22 Assert.AreEqual(FindSaveAssignmentIssueAnalyzerConstants.Message, saveDiagnostic.MessageFormat.ToString(),
23 nameof(DiagnosticDescriptor.MessageFormat));
24 Assert.AreEqual(Constants.Categories.Usage, saveDiagnostic.Category,
25 nameof(DiagnosticDescriptor.Category));
26 Assert.AreEqual(DiagnosticSeverity.Error, saveDiagnostic.DefaultSeverity,
27 nameof(DiagnosticDescriptor.DefaultSeverity));
28 Assert.AreEqual(HelpUrlBuilder.Build(Constants.AnalyzerIdentifiers.FindSaveAssignmentIssue, nameof(FindSaveAssignmentIssueAnalyzer)),
29 saveDiagnostic.HelpLinkUri,
30 nameof(DiagnosticDescriptor.HelpLinkUri));
31
32 var saveAsyncDiagnostic = diagnostics.Single(_ => _.Id == Constants.AnalyzerIdentifiers.FindSaveAsyncAssignmentIssue);
33 Assert.AreEqual(FindSaveAsyncAssignmentIssueAnalyzerConstants.Title, saveAsyncDiagnostic.Title.ToString(),
34 nameof(DiagnosticDescriptor.Title));
35 Assert.AreEqual(FindSaveAsyncAssignmentIssueAnalyzerConstants.Message, saveAsyncDiagnostic.MessageFormat.ToString(),
36 nameof(DiagnosticDescriptor.MessageFormat));
37 Assert.AreEqual(Constants.Categories.Usage, saveAsyncDiagnostic.Category,
38 nameof(DiagnosticDescriptor.Category));
39 Assert.AreEqual(DiagnosticSeverity.Error, saveAsyncDiagnostic.DefaultSeverity,
40 nameof(DiagnosticDescriptor.DefaultSeverity));
41 Assert.AreEqual(HelpUrlBuilder.Build(Constants.AnalyzerIdentifiers.FindSaveAsyncAssignmentIssue, nameof(FindSaveAssignmentIssueAnalyzer)),
42 saveAsyncDiagnostic.HelpLinkUri,
43 nameof(DiagnosticDescriptor.HelpLinkUri));
44 }
45
46 [TestMethod]
48 {
49 var code =
50@"public class A
51{
52 public A Save() => null;
53}
54
55public class B
56{
57 public void Call()
58 {
59 var x = new A();
60 x.Save();
61 }
62}";
63 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
64 code, Array.Empty<string>());
65 }
66
67 [TestMethod]
69 {
70 var code =
71@"using System.Threading.Tasks;
72
73public class A
74{
75 public async Task<A> SaveAsync() => await Task.FromResult<A>(null);
76}
77
78public class B
79{
80 public async Task Call()
81 {
82 var x = new A();
83 await x.SaveAsync();
84 }
85}";
86 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
87 code, Array.Empty<string>());
88 }
89
90 [TestMethod]
92 {
93 var code =
94@"using Csla;
95
96public class A : BusinessBase<A> { }
97
98public class B
99{
100 public void Call()
101 {
102 var x = new A();
103 x = x.Save();
104 }
105}";
106 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
107 code, Array.Empty<string>());
108 }
109
110 [TestMethod]
112 {
113 var code =
114@"using Csla;
115using System.Threading.Tasks;
116
117public class A : BusinessBase<A> { }
118
119public class B
120{
121 public async Task Call()
122 {
123 var x = new A();
124 x = await x.SaveAsync();
125 }
126}";
127 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
128 code, Array.Empty<string>());
129 }
130
131 [TestMethod]
133 {
134 var code =
135@"using Csla;
136
137public class A : BusinessBase<A> { }
138
139public class B
140{
141 public void Call()
142 {
143 var x = new A();
144 x.Save();
145 }
146}";
147 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
148 code, new[] { Constants.AnalyzerIdentifiers.FindSaveAssignmentIssue });
149 }
150
151 [TestMethod]
153 {
154 var code =
155@"using Csla;
156using System.Threading.Tasks;
157
158public class A : BusinessBase<A> { }
159
160public class B
161{
162 public async Task Call()
163 {
164 var x = new A();
165 await x.SaveAsync();
166 }
167}";
168 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
169 code, new[] { Constants.AnalyzerIdentifiers.FindSaveAsyncAssignmentIssue });
170 }
171
172 [TestMethod]
174 {
175 var code =
176@"using Csla;
177
178public class A : BusinessBase<A>{ }
179
180public class B
181{
182 public A Call()
183 {
184 var x = new A();
185 return x.Save();
186 }
187}";
188 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
189 code, Array.Empty<string>());
190 }
191
192 [TestMethod]
194 {
195 var code =
196@"using Csla;
197using System.Threading.Tasks;
198
199public class A : BusinessBase<A>{ }
200
201public class B
202{
203 public async Task<A> Call()
204 {
205 var x = new A();
206 return await x.SaveAsync();
207 }
208}";
209 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
210 code, Array.Empty<string>());
211 }
212
213 [TestMethod]
215 {
216 var code =
217@"using Csla;
218using System;
219
220public class A : BusinessBase<A>{ }
221
222public class B
223{
224 public void Call()
225 {
226 var x = new A();
227
228 this.Run(() => x.Save());
229 }
230
231 private B Run(Func<B> code) => code();
232}";
233 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
234 code, Array.Empty<string>());
235 }
236
237 [TestMethod]
239 {
240 var code =
241@"using Csla;
242using System;
243using System.Threading.Tasks;
244
245public class A : BusinessBase<A>{ }
246
247public class B
248{
249 public async Task Call()
250 {
251 var x = new A();
252
253 await this.Run(async () => await x.SaveAsync());
254 }
255
256 private async Task<A> Run(Func<Task<A>> code) => await code();
257}";
258 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
259 code, Array.Empty<string>());
260 }
261
262 [TestMethod]
264 {
265 var code =
266@"using Csla;
267using System;
268
269public class A : BusinessBase<A>{ }
270
271public class B
272{
273 public void Call()
274 {
275 this.Run(() =>
276 {
277 var x = new A();
278 return x.Save();
279 });
280 }
281
282 private A Run(Func<A> code) => code();
283}
284";
285 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
286 code, Array.Empty<string>());
287 }
288
289 [TestMethod]
291 {
292 var code =
293@"using Csla;
294using System;
295using System.Threading.Tasks;
296
297public class A : BusinessBase<A>{ }
298
299public class B
300{
301 public async Task Call()
302 {
303 await this.Run(async () =>
304 {
305 var x = new A();
306 return await x.SaveAsync();
307 });
308 }
309
310 private async Task<A> Run(Func<Task<A>> code) => await code();
311}";
312 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
313 code, Array.Empty<string>());
314 }
315
316 [TestMethod]
318 {
319 var code =
320@"using Csla;
321
322public class A : BusinessBase<A>
323{
324 public void Foo() => Save();
325}";
326 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
327 code, Array.Empty<string>());
328 }
329
330 [TestMethod]
332 {
333 var code =
334@"using Csla;
335using System.Threading.Tasks;
336
337public class A : BusinessBase<A>
338{
339 public async Task Foo() => await SaveAsync();
340}";
341 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
342 code, Array.Empty<string>());
343 }
344
345 [TestMethod]
347 {
348 var code =
349@"using Csla;
350
351public class A : BusinessBase<A>
352{
353 public void Foo() => this.Save();
354}";
355 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
356 code, Array.Empty<string>());
357 }
358
359 [TestMethod]
361 {
362 var code =
363@"using Csla;
364using System.Threading.Tasks;
365
366public class A : BusinessBase<A>
367{
368 public async Task Foo() => this.SaveAsync();
369}";
370 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
371 code, Array.Empty<string>());
372 }
373
374 [TestMethod]
376 {
377 var code =
378@"using Csla;
379
380public class A
381 : BusinessBase<A>
382{
383 public void Foo() => base.Save();
384}";
385 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
386 code, Array.Empty<string>());
387 }
388
389 [TestMethod]
391 {
392 var code =
393@"using Csla;
394using System.Threading.Tasks;
395
396public class A : BusinessBase<A>
397{
398 public async Task Foo() => await base.SaveAsync();
399}";
400 await TestHelpers.RunAnalysisAsync<FindSaveAssignmentIssueAnalyzer>(
401 code, Array.Empty<string>());
402 }
403 }
404}