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.
EvaluateManagedBackingFieldsWalkerTests.cs
Go to the documentation of this file.
1using Microsoft.CodeAnalysis;
2using Microsoft.CodeAnalysis.CSharp;
3using Microsoft.CodeAnalysis.CSharp.Syntax;
4using Microsoft.VisualStudio.TestTools.UnitTesting;
5using System.Linq;
6using System.Threading.Tasks;
7
9{
10 [TestClass]
12 {
13 private static async Task<EvaluateManagedBackingFieldsWalker> GetWalker(string code)
14 {
15 var document = TestHelpers.Create(code);
16 var root = await document.GetSyntaxRootAsync();
17 var model = await document.GetSemanticModelAsync();
18
19 var fieldNode = root.DescendantNodes().OfType<FieldDeclarationSyntax>().Single();
20 var fieldSymbol = model.GetDeclaredSymbol(fieldNode.Declaration.Variables[0]) as IFieldSymbol;
21 var propertyNode = root.DescendantNodes().OfType<PropertyDeclarationSyntax>().Single();
22
23 var getter = propertyNode.AccessorList.Accessors.Single(
24 _ => _.IsKind(SyntaxKind.GetAccessorDeclaration)).Body;
25
26 return new EvaluateManagedBackingFieldsWalker(getter, model, fieldSymbol);
27 }
28
29 [TestMethod]
31 {
32 var code =
33@"using Csla;
34
35public class A : BusinessBase<A>
36{
37 public static readonly PropertyInfo<string> DataProperty =
38 RegisterProperty<string>(_ => _.Data);
39
40 public string Data
41 {
42 get { return GetProperty(DataProperty); }
43 set { SetProperty(DataProperty, value); }
44 }
45}";
46 var walker = await GetWalker(code);
47 Assert.IsTrue(walker.UsesField);
48 }
49
50 [TestMethod]
52 {
53 var code =
54@"using Csla;
55
56public class A : BusinessBase<A>
57{
58 public static readonly PropertyInfo<string> DataProperty =
59 RegisterProperty<string>(_ => _.Data);
60 public string Data { get; set; }
61}";
62 var walker = await GetWalker(code);
63 Assert.IsFalse(walker.UsesField);
64 }
65 }
66}
Csla.Test.DataPortalTest.Single Single