Skip to content

Commit c34e52c

Browse files
authored
Adding tests (#141)
1 parent e216b7f commit c34e52c

20 files changed

+1537
-38
lines changed

src/Lifetime/Managers/SingletonLifetimeManager.cs

+8
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ namespace Unity.Lifetime
2323
/// </remarks>
2424
public class SingletonLifetimeManager : ContainerControlledLifetimeManager
2525
{
26+
protected override LifetimeManager OnCreateLifetimeManager()
27+
{
28+
return new SingletonLifetimeManager()
29+
{
30+
Scope = Scope
31+
};
32+
}
33+
2634
#region Overrides
2735
/// <summary>
2836
/// This method provides human readable representation of the lifetime

src/Unity.Abstractions.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
</ItemGroup>
7171

7272
<ItemGroup>
73-
<PackageReference Condition="'$(TargetFramework)' != 'net40'" Include="System.Threading.Tasks.Extensions">
73+
<PackageReference Condition="'$(TargetFramework)' != 'net40'" Include="System.Threading.Tasks.Extensions">
7474
<Version>4.5.2</Version>
7575
</PackageReference>
7676
</ItemGroup>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using System;
3+
using System.Reflection;
4+
using Unity.Injection;
5+
6+
namespace Injection.Members
7+
{
8+
[TestClass]
9+
public partial class InjectionConstructorTests : MethodBaseTests<ConstructorInfo>
10+
{
11+
protected override InjectionMember<ConstructorInfo, object[]> GetInjectionMember() => new InjectionConstructor();
12+
13+
protected override ConstructorInfo GetMemberInfo() => typeof(TestPolicySet).GetConstructor(new Type[0]);
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using System.Reflection;
3+
using Unity.Injection;
4+
5+
namespace Injection.Members
6+
{
7+
[TestClass]
8+
public partial class InjectionFieldTests : MemberInfoBase<FieldInfo>
9+
{
10+
protected override InjectionMember<FieldInfo, object> GetInjectionMember() => new InjectionField(nameof(TestPolicySet.TestField));
11+
12+
protected override FieldInfo GetMemberInfo() => typeof(TestPolicySet).GetField(nameof(TestPolicySet.TestField));
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,308 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Reflection;
5+
using Unity.Injection;
6+
using Unity.Policy;
7+
using Unity.Resolution;
8+
9+
namespace Injection.Members
10+
{
11+
[TestClass]
12+
public abstract class InjectionMemberTests<TMemberInfo, TData> where TMemberInfo : MemberInfo
13+
{
14+
#region Initialization
15+
16+
protected abstract InjectionMember<TMemberInfo, TData> GetInjectionMember();
17+
18+
protected abstract TMemberInfo GetMemberInfo();
19+
20+
#endregion
21+
22+
23+
#region InjectionMember
24+
25+
[TestMethod]
26+
public virtual void AddPoliciesTest()
27+
{
28+
// Arrange
29+
var set = new TestPolicySet();
30+
var cast = set as IPolicySet;
31+
var TestMember = GetInjectionMember();
32+
33+
// Act
34+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
35+
36+
// Validate
37+
Assert.AreEqual(0, set.Count);
38+
}
39+
40+
[TestMethod]
41+
[ExpectedException(typeof(ArgumentException))]
42+
public virtual void AddWrongTypeTest()
43+
{
44+
// Arrange
45+
var set = new TestPolicySet();
46+
var cast = set as IPolicySet;
47+
var TestMember = GetInjectionMember();
48+
49+
// Act
50+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(PolicySet), null, ref cast);
51+
}
52+
53+
[TestMethod]
54+
public virtual void BuildRequiredTest()
55+
{
56+
// Arrange
57+
var TestMember = GetInjectionMember();
58+
59+
// Validate
60+
Assert.IsTrue(TestMember.BuildRequired);
61+
}
62+
63+
[TestMethod]
64+
public virtual void IsNotInitializedTest()
65+
{
66+
// Arrange
67+
var TestMember = GetInjectionMember();
68+
69+
// Validate
70+
Assert.IsFalse(TestMember.IsInitialized);
71+
}
72+
73+
[TestMethod]
74+
public virtual void IsInitializedTest()
75+
{
76+
// Arrange
77+
var TestMember = GetInjectionMember();
78+
var set = new TestPolicySet();
79+
var cast = set as IPolicySet;
80+
81+
// Act
82+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
83+
84+
// Validate
85+
Assert.IsTrue(TestMember.IsInitialized);
86+
}
87+
88+
#endregion
89+
90+
91+
#region MemberInfo
92+
93+
[TestMethod]
94+
[ExpectedException(typeof(NullReferenceException))]
95+
public virtual void MemberInfoNotInitializedTest()
96+
{
97+
// Arrange
98+
var TestMember = GetInjectionMember();
99+
100+
// Act
101+
var info = TestMember.MemberInfo(typeof(TestPolicySet));
102+
}
103+
104+
[TestMethod]
105+
public virtual void MemberInfoTest()
106+
{
107+
// Arrange
108+
var set = new TestPolicySet();
109+
var cast = set as IPolicySet;
110+
var TestMember = GetInjectionMember();
111+
112+
// Act
113+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
114+
var info = TestMember.MemberInfo(typeof(TestPolicySet));
115+
116+
// Validate
117+
Assert.AreEqual(GetMemberInfo(), info);
118+
}
119+
120+
[Ignore]
121+
[TestMethod]
122+
[ExpectedException(typeof(InvalidOperationException))]
123+
public virtual void MemberWrongInfoTest()
124+
{
125+
// Arrange
126+
var set = new TestPolicySet();
127+
var cast = set as IPolicySet;
128+
var TestMember = GetInjectionMember();
129+
130+
// Act
131+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
132+
133+
// Validate
134+
Assert.IsNull(TestMember.MemberInfo(typeof(TestClassAttribute)));
135+
}
136+
137+
#endregion
138+
139+
140+
#region Object Overrides
141+
142+
[TestMethod]
143+
public virtual void GetHashCodeNotInitialized()
144+
{
145+
// Arrange
146+
var TestMember = GetInjectionMember();
147+
148+
// Validate
149+
Assert.AreEqual(0, TestMember.GetHashCode());
150+
}
151+
152+
[TestMethod]
153+
public virtual void GetHashCodeInitialized()
154+
{
155+
// Arrange
156+
var TestMember = GetInjectionMember();
157+
var set = new TestPolicySet();
158+
var cast = set as IPolicySet;
159+
160+
// Act
161+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
162+
163+
// Validate
164+
Assert.AreNotEqual(0, TestMember.GetHashCode());
165+
}
166+
167+
#endregion
168+
169+
170+
#region Equitability
171+
172+
[TestMethod]
173+
public virtual void EqualsMemberInfoNotInitialized()
174+
{
175+
// Arrange
176+
var TestMember = GetInjectionMember();
177+
IEquatable<TMemberInfo> equatable = TestMember as IEquatable<TMemberInfo>;
178+
TMemberInfo info = GetMemberInfo();
179+
180+
// Validate
181+
Assert.IsFalse(equatable.Equals(info));
182+
}
183+
184+
[TestMethod]
185+
public virtual void EqualsMemberInfoInitialized()
186+
{
187+
// Arrange
188+
var TestMember = GetInjectionMember();
189+
var set = new TestPolicySet();
190+
var cast = set as IPolicySet;
191+
IEquatable<TMemberInfo> equatable = TestMember;
192+
TMemberInfo info = GetMemberInfo();
193+
194+
// Act
195+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
196+
197+
// Validate
198+
Assert.IsTrue(equatable.Equals(info));
199+
}
200+
201+
[TestMethod]
202+
public virtual void EqualsObjectNotInitialized()
203+
{
204+
// Arrange
205+
var TestMember = GetInjectionMember();
206+
object info = GetMemberInfo();
207+
208+
// Validate
209+
Assert.IsFalse(TestMember.Equals(info));
210+
}
211+
212+
[TestMethod]
213+
public virtual void EqualsObjectWrong()
214+
{
215+
// Arrange
216+
var TestMember = GetInjectionMember();
217+
var set = new TestPolicySet();
218+
var cast = set as IPolicySet;
219+
object info = GetMemberInfo();
220+
221+
// Act
222+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
223+
224+
// Validate
225+
Assert.IsFalse(TestMember.Equals(this));
226+
}
227+
228+
[TestMethod]
229+
public virtual void EqualsObjectSame()
230+
{
231+
// Arrange
232+
var TestMember = GetInjectionMember();
233+
var set = new TestPolicySet();
234+
var cast = set as IPolicySet;
235+
object info = GetMemberInfo();
236+
237+
// Act
238+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
239+
240+
// Validate
241+
Assert.IsTrue(TestMember.Equals(TestMember));
242+
}
243+
244+
[TestMethod]
245+
public virtual void EqualsObjectInitialized()
246+
{
247+
// Arrange
248+
var TestMember = GetInjectionMember();
249+
var set = new TestPolicySet();
250+
var cast = set as IPolicySet;
251+
object info = GetMemberInfo();
252+
253+
// Act
254+
TestMember.AddPolicies<IResolveContext, IPolicySet>(typeof(IPolicySet), typeof(TestPolicySet), null, ref cast);
255+
256+
// Validate
257+
Assert.IsTrue(TestMember.Equals(info));
258+
}
259+
260+
#endregion
261+
262+
263+
#region Test Data
264+
265+
public class PolicySet : Dictionary<Type, object>, IPolicySet
266+
{
267+
private string _name;
268+
269+
public PolicySet(string name)
270+
{
271+
_name = name;
272+
}
273+
274+
public void Clear(Type policyInterface)
275+
{
276+
Remove(policyInterface);
277+
}
278+
279+
public object Get(Type policyInterface)
280+
{
281+
return TryGetValue(policyInterface, out object value)
282+
? value : null;
283+
}
284+
285+
public void Set(Type policyInterface, object policy)
286+
{
287+
Set(policyInterface, policy);
288+
}
289+
}
290+
291+
public class TestPolicySet : PolicySet
292+
{
293+
public TestPolicySet()
294+
: base("test")
295+
{
296+
297+
}
298+
299+
public object TestField;
300+
301+
public object TestProperty { get; set; }
302+
303+
public void TestMethod() { }
304+
}
305+
306+
#endregion
307+
}
308+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using System.Reflection;
3+
4+
5+
namespace Injection.Members
6+
{
7+
[TestClass]
8+
public abstract class MemberInfoBase<TMemberInfo> : InjectionMemberTests<TMemberInfo, object>
9+
where TMemberInfo : MemberInfo
10+
{
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using System.Reflection;
3+
using Unity.Injection;
4+
5+
namespace Injection.Members
6+
{
7+
[TestClass]
8+
public partial class InjectionMethodTests : MethodBaseTests<MethodInfo>
9+
{
10+
protected override InjectionMember<MethodInfo, object[]> GetInjectionMember() => new InjectionMethod(nameof(TestPolicySet.TestMethod));
11+
12+
protected override MethodInfo GetMemberInfo() => typeof(TestPolicySet).GetMethod(nameof(TestPolicySet.TestMethod));
13+
}
14+
}

0 commit comments

Comments
 (0)