Skip to content

Commit 784a136

Browse files
committed
Support for finding derived public methods, properties and fields / Fixing non-public method and constructor-finding methods / Organising tests / Fixing project namespaces
1 parent e5b3a94 commit 784a136

File tree

10 files changed

+208
-90
lines changed

10 files changed

+208
-90
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace AgileObjects.NetStandardPolyfills.UnitTests
2+
{
3+
using System;
4+
5+
internal class MyAttribute : Attribute { }
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace AgileObjects.NetStandardPolyfills.UnitTests
2+
{
3+
internal enum MyTestEnum
4+
{
5+
One = 1,
6+
Two = 2
7+
}
8+
}

NetStandardPolyfills.UnitTests/NetStandardPolyfills.UnitTests.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
1414
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
1515
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
16+
<RootNamespace>AgileObjects.NetStandardPolyfills.UnitTests</RootNamespace>
1617
</PropertyGroup>
1718

1819
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">
@@ -27,4 +28,8 @@
2728
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-beta5-build1225" />
2829
</ItemGroup>
2930

31+
<ItemGroup>
32+
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
33+
</ItemGroup>
34+
3035
</Project>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
namespace AgileObjects.NetStandardPolyfills.UnitTests
2+
{
3+
[My]
4+
// ReSharper disable UnusedMember.Local
5+
// ReSharper disable UnusedParameter.Local
6+
#pragma warning disable 169
7+
public class TestHelper
8+
{
9+
public int PublicInstanceField;
10+
public static int PublicStaticField;
11+
internal int NonPublicInstanceField = 0;
12+
internal static int NonPublicStaticField = 0;
13+
14+
public TestHelper()
15+
{
16+
}
17+
18+
protected TestHelper(string something)
19+
{
20+
}
21+
22+
public int PublicInstanceProperty { get; set; }
23+
24+
public static int PublicStaticProperty { get; set; }
25+
26+
internal int NonPublicInstanceProperty { get; set; }
27+
28+
internal static int NonPublicStaticProperty { get; set; }
29+
30+
public void DoParamsStuff(params int[] ints)
31+
{
32+
}
33+
34+
public void DoNonParamsStuff(int[] ints)
35+
{
36+
37+
}
38+
39+
internal void NonPublicMethod()
40+
{
41+
}
42+
43+
public static void PublicStaticMethod()
44+
{
45+
}
46+
47+
internal static void NonPublicStaticMethod()
48+
{
49+
}
50+
#pragma warning restore 169
51+
// ReSharper restore UnusedParameter.Local
52+
// ReSharper restore UnusedMember.Local
53+
}
54+
}

NetStandardPolyfills.UnitTests/WhenAccessingTypeInformation.cs

Lines changed: 0 additions & 46 deletions
This file was deleted.

NetStandardPolyfills.UnitTests/WhenCheckingTypeData.cs

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
namespace AgileObjects.AgileMapper.UnitTests.Polyfills
1+
namespace AgileObjects.NetStandardPolyfills.UnitTests
22
{
3-
using System;
43
using System.Linq;
54
using System.Reflection;
6-
using NetStandardPolyfills;
75
using Shouldly;
86
using Xunit;
97

@@ -43,15 +41,6 @@ public void ShouldNotFindATypeAttribute()
4341
typeof(WhenCheckingTypeData).HasAttribute<MyAttribute>().ShouldBeFalse();
4442
}
4543

46-
[Fact]
47-
public void ShouldFindANonPublicInstanceMethod()
48-
{
49-
var method = typeof(TestHelper).GetNonPublicInstanceMethods().FirstOrDefault();
50-
51-
method.ShouldNotBeNull();
52-
method.Name.ShouldBe("NonPublicMethod");
53-
}
54-
5544
[Fact]
5645
public void ShouldFlagAnAnonymousType()
5746
{
@@ -78,28 +67,6 @@ public void ShouldFlagANonPrimitiveType()
7867
typeof(object).IsPrimitive().ShouldBeFalse();
7968
}
8069

81-
[MyAttribute]
82-
private class TestHelper
83-
{
84-
// ReSharper disable once UnusedMember.Local
85-
// ReSharper disable once UnusedParameter.Local
86-
public void DoParamsStuff(params int[] ints)
87-
{
88-
}
89-
90-
// ReSharper disable once UnusedMember.Local
91-
// ReSharper disable once UnusedParameter.Local
92-
public void DoNonParamsStuff(int[] ints)
93-
{
94-
95-
}
96-
97-
// ReSharper disable once UnusedMember.Local
98-
internal void NonPublicMethod()
99-
{
100-
}
101-
}
10270

103-
internal class MyAttribute : Attribute { }
10471
}
10572
}

NetStandardPolyfills.UnitTests/WhenRetrievingTypeCodes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace AgileObjects.AgileMapper.UnitTests.Polyfills
1+
namespace AgileObjects.NetStandardPolyfills.UnitTests
22
{
33
using System;
44
using System.Data;
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
namespace AgileObjects.NetStandardPolyfills.UnitTests
2+
{
3+
using System.Linq;
4+
using Shouldly;
5+
using Xunit;
6+
7+
public class WhenRetrievingTypeMembers
8+
{
9+
[Fact]
10+
public void ShouldFindAPublicInstanceConstructor()
11+
{
12+
var constructor = typeof(TestHelper)
13+
.GetPublicInstanceConstructors()
14+
.FirstOrDefault();
15+
16+
constructor.ShouldNotBeNull();
17+
}
18+
19+
[Fact]
20+
public void ShouldFindANonPublicInstanceConstructor()
21+
{
22+
var constructor = typeof(TestHelper)
23+
.GetNonPublicInstanceConstructors()
24+
.FirstOrDefault();
25+
26+
constructor.ShouldNotBeNull();
27+
}
28+
29+
[Fact]
30+
public void ShouldRetrieveAPublicInstanceField()
31+
{
32+
var fields = typeof(TestHelper).GetPublicInstanceFields();
33+
34+
fields.ShouldNotBeNull();
35+
fields.ShouldHaveSingleItem();
36+
fields.First().Name.ShouldBe("PublicInstanceField");
37+
}
38+
39+
[Fact]
40+
public void ShouldRetrieveAPublicInstanceProperty()
41+
{
42+
var properties = typeof(TestHelper).GetPublicInstanceProperties();
43+
44+
properties.ShouldNotBeNull();
45+
properties.ShouldHaveSingleItem();
46+
properties.First().Name.ShouldBe("PublicInstanceProperty");
47+
}
48+
49+
[Fact]
50+
public void ShouldFindAPublicInstanceMethod()
51+
{
52+
var paramsStuff = typeof(TestHelper)
53+
.GetPublicInstanceMethods()
54+
.FirstOrDefault(m => m.Name == "DoParamsStuff");
55+
56+
paramsStuff.ShouldNotBeNull();
57+
}
58+
59+
[Fact]
60+
public void ShouldFindAnInheritedPublicInstanceMethod()
61+
{
62+
var parameterlessToString = typeof(MyTestEnum)
63+
.GetPublicInstanceMethods()
64+
.FirstOrDefault(m => m.Name == "ToString" && m.GetParameters().Length == 0);
65+
66+
parameterlessToString.ShouldNotBeNull();
67+
}
68+
69+
[Fact]
70+
public void ShouldFindANonPublicInstanceMethod()
71+
{
72+
var method = typeof(TestHelper)
73+
.GetNonPublicInstanceMethods()
74+
.FirstOrDefault();
75+
76+
method.ShouldNotBeNull();
77+
method.Name.ShouldBe("NonPublicMethod");
78+
}
79+
80+
[Fact]
81+
public void ShouldFindAPublicStaticMethod()
82+
{
83+
var method = typeof(TestHelper)
84+
.GetPublicStaticMethod("PublicStaticMethod");
85+
86+
method.ShouldNotBeNull();
87+
}
88+
89+
[Fact]
90+
public void ShouldFindANonPublicStaticMethod()
91+
{
92+
var method = typeof(TestHelper)
93+
.GetNonPublicStaticMethod("NonPublicStaticMethod");
94+
95+
method.ShouldNotBeNull();
96+
}
97+
}
98+
}

NetStandardPolyfills/NetStandardPolyfills.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
2828
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
2929
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
30+
<RootNamespace>AgileObjects.NetStandardPolyfills</RootNamespace>
3031
</PropertyGroup>
3132

3233
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.0' ">

0 commit comments

Comments
 (0)