Skip to content

Commit cedf5b5

Browse files
committed
Test coverage for Expression.GetParentOrNull - moved from AgileMapper
1 parent 94fc485 commit cedf5b5

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
namespace AgileObjects.ReadableExpressions.UnitTests.Extensions
2+
{
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Linq.Expressions;
7+
using Microsoft.VisualStudio.TestTools.UnitTesting;
8+
using ReadableExpressions.Extensions;
9+
10+
public class WhenGettingAParentExpressionNode
11+
{
12+
[TestMethod]
13+
public void ShouldReturnAMemberAccessParent()
14+
{
15+
Expression<Func<Type, string>> personViewModelName = t => t.Name;
16+
17+
var namePropertyParent = personViewModelName.Body.GetParentOrNull() as ParameterExpression;
18+
19+
Assert.IsNotNull(namePropertyParent);
20+
Assert.AreEqual("t", namePropertyParent.Name);
21+
}
22+
23+
[TestMethod]
24+
public void ShouldReturnANestedMemberAccessParent()
25+
{
26+
Expression<Func<Type, string>> typeAssemblyImageVersion = t => t.Assembly.ImageRuntimeVersion;
27+
28+
var typeAssemblyImageVersionParent = typeAssemblyImageVersion.Body.GetParentOrNull() as MemberExpression;
29+
30+
Assert.IsNotNull(typeAssemblyImageVersionParent);
31+
Assert.AreEqual("Assembly", typeAssemblyImageVersionParent.Member.Name);
32+
}
33+
34+
[TestMethod]
35+
public void ShouldReturnAMemberMethodCallParent()
36+
{
37+
Expression<Func<Type, string>> typeAssemblyToString = p => p.Assembly.ToString();
38+
39+
var assemblyToStringPropertyParent = typeAssemblyToString.Body.GetParentOrNull() as MemberExpression;
40+
41+
Assert.IsNotNull(assemblyToStringPropertyParent);
42+
Assert.AreEqual("Assembly", assemblyToStringPropertyParent.Member.Name);
43+
}
44+
45+
[TestMethod]
46+
public void ShouldReturnAnExtensionMethodCallParent()
47+
{
48+
Expression<Func<IEnumerable<Type>, Type[]>> typesToArray = ts => ts.ToArray();
49+
50+
var typesToArrayPropertyParent = typesToArray.Body.GetParentOrNull() as ParameterExpression;
51+
52+
Assert.IsNotNull(typesToArrayPropertyParent);
53+
Assert.AreEqual("ts", typesToArrayPropertyParent.Name);
54+
}
55+
}
56+
}

ReadableExpressions.UnitTests/ReadableExpressions.UnitTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
<Compile Include="..\VersionInfo.cs">
6161
<Link>VersionInfo.cs</Link>
6262
</Compile>
63+
<Compile Include="Extensions\WhenGettingAParentExpressionNode.cs" />
6364
<Compile Include="WhenUsingPartialTrust.cs" />
6465
<Compile Include="WhenTranslatingStringConcatenation.cs" />
6566
<Compile Include="WhenTranslatingComments.cs" />

0 commit comments

Comments
 (0)