Skip to content

Commit bb310e5

Browse files
author
Sébastien Geiser
committed
Tests for non Public accesses
1 parent 70b093c commit bb310e5

File tree

3 files changed

+87
-4
lines changed

3 files changed

+87
-4
lines changed

CodingSeb.ExpressionEvaluator.Tests/CodingSeb.ExpressionEvaluator.Tests.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
<TargetFrameworks>net45;netcoreapp2.0</TargetFrameworks>
88
</PropertyGroup>
99
<ItemGroup>
10-
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
11-
<PackageReference Include="NUnit" Version="3.11.0" />
12-
<PackageReference Include="NUnit3TestAdapter" Version="3.11.2" />
10+
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
11+
<PackageReference Include="NUnit" Version="3.12.0" />
12+
<PackageReference Include="NUnit3TestAdapter" Version="3.16.1">
13+
<PrivateAssets>all</PrivateAssets>
14+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
15+
</PackageReference>
1316
<PackageReference Include="Shouldly" Version="3.0.2" />
1417
</ItemGroup>
1518
<ItemGroup>

CodingSeb.ExpressionEvaluator.Tests/ExpressionEvaluatorTests.cs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1742,7 +1742,7 @@ void Evaluator_PreEvaluateVariable(object sender, VariablePreEvaluationEventArg
17421742

17431743
#endregion
17441744

1745-
#region with Context object
1745+
#region With Context object
17461746

17471747
ExpressionEvaluator evaluatorWithContext = new ExpressionEvaluator(new ContextObject1());
17481748

@@ -1780,6 +1780,54 @@ void Evaluator_PreEvaluateVariable(object sender, VariablePreEvaluationEventArg
17801780

17811781
#endregion
17821782

1783+
#region NonPublic members
1784+
1785+
ExpressionEvaluator nonPublicEvaluator = new ExpressionEvaluator(new Dictionary<string, object>()
1786+
{
1787+
{ "obj", new ClassWithNonPublicMembersAndMethods() }
1788+
})
1789+
{
1790+
OptionAllowNonPublicMembersAccess = true
1791+
};
1792+
1793+
yield return new TestCaseData(nonPublicEvaluator
1794+
, "obj.myPrivateField"
1795+
, null)
1796+
.Returns(5)
1797+
.SetCategory("NonPublic Members and methods");
1798+
1799+
yield return new TestCaseData(nonPublicEvaluator
1800+
, "obj.myProtectedField"
1801+
, null)
1802+
.Returns(10)
1803+
.SetCategory("NonPublic Members and methods");
1804+
1805+
yield return new TestCaseData(nonPublicEvaluator
1806+
, "obj.MyPrivateProperty"
1807+
, null)
1808+
.Returns(15)
1809+
.SetCategory("NonPublic Members and methods");
1810+
1811+
yield return new TestCaseData(nonPublicEvaluator
1812+
, "obj.MyProtectedProperty"
1813+
, null)
1814+
.Returns(20)
1815+
.SetCategory("NonPublic Members and methods");
1816+
1817+
yield return new TestCaseData(nonPublicEvaluator
1818+
, "obj.MyPrivateMethod(\"Bob\")"
1819+
, null)
1820+
.Returns("Hello Bob")
1821+
.SetCategory("NonPublic Members and methods");
1822+
1823+
yield return new TestCaseData(nonPublicEvaluator
1824+
, "obj.MyProtectedMethod(\"Bob\")"
1825+
, null)
1826+
.Returns("GoodBye Bob")
1827+
.SetCategory("NonPublic Members and methods");
1828+
1829+
#endregion
1830+
17831831
#region inherits ExpressionEvaluator
17841832

17851833
#region Redefine existing operators
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
namespace CodingSeb.ExpressionEvaluator.Tests
2+
{
3+
public class ClassWithNonPublicMembersAndMethods
4+
{
5+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "RCS1169:Make field read-only.", Justification = "<Pending>")]
6+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Redundancy", "RCS1213:Remove unused member declaration.", Justification = "<Pending>")]
7+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "<Pending>")]
8+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Code Quality", "IDE0051:Remove unused private members", Justification = "<Pending>")]
9+
private int myPrivateField = 5;
10+
11+
protected int myProtectedField = 10;
12+
13+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "RCS1170:Use read-only auto-implemented property.", Justification = "<Pending>")]
14+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Redundancy", "RCS1213:Remove unused member declaration.", Justification = "<Pending>")]
15+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Code Quality", "IDE0051:Remove unused private members", Justification = "<Pending>")]
16+
private int MyPrivateProperty { get; set; } = 15;
17+
18+
protected int MyProtectedProperty { get; set; } = 20;
19+
20+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Redundancy", "RCS1213:Remove unused member declaration.", Justification = "<Pending>")]
21+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Code Quality", "IDE0051:Remove unused private members", Justification = "<Pending>")]
22+
private string MyPrivateMethod(string name)
23+
{
24+
return "Hello " + name;
25+
}
26+
27+
protected string MyProtectedMethod(string name)
28+
{
29+
return "GoodBye " + name;
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)