136 lines
4.8 KiB
C#
136 lines
4.8 KiB
C#
|
using System.Linq;
|
|||
|
using Microsoft.Extensions.DependencyInjection;
|
|||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|||
|
|
|||
|
namespace Falcon.DI.Test
|
|||
|
{
|
|||
|
[TestClass]
|
|||
|
public class UseFalconDITest
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// һ<><D2BB><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
[TestMethod]
|
|||
|
public void DITest() {
|
|||
|
IServiceCollection ser = new ServiceCollection();
|
|||
|
ser.UseFalconDI(this.GetType().Assembly);
|
|||
|
using(var pd = ser.BuildServiceProvider()) {
|
|||
|
Assert.IsNotNull(pd.GetServices<IMyInterface>());
|
|||
|
System.Console.WriteLine(pd.GetServices<IMyInterface>().Count());
|
|||
|
Assert.IsTrue(pd.GetServices<IMyInterface>().Count() > 1);
|
|||
|
Assert.IsNotNull(pd.GetService<IMyInterface>());
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>Դ
|
|||
|
/// </summary>
|
|||
|
[TestMethod]
|
|||
|
public void disableTest() {
|
|||
|
IServiceCollection ser = new ServiceCollection();
|
|||
|
ser.UseFalconDI(this.GetType().Assembly);
|
|||
|
var pd = ser.BuildServiceProvider();
|
|||
|
|
|||
|
var obj = pd.GetService<MyClassWithDisable>();
|
|||
|
Assert.IsNotNull(obj);
|
|||
|
Assert.AreEqual(1,MyClassWithDisable.Count);
|
|||
|
|
|||
|
pd.Dispose();
|
|||
|
Assert.AreEqual(0,MyClassWithDisable.Count);
|
|||
|
|
|||
|
using(pd = ser.BuildServiceProvider()) {
|
|||
|
obj = pd.GetService<MyClassWithDisable>();
|
|||
|
Assert.IsNotNull(obj);
|
|||
|
Assert.AreEqual(1,MyClassWithDisable.Count);
|
|||
|
}
|
|||
|
Assert.AreEqual(0,MyClassWithDisable.Count);
|
|||
|
}
|
|||
|
|
|||
|
[TestMethod]
|
|||
|
[Description("<22><><EFBFBD>Բ<EFBFBD><D4B2>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")]
|
|||
|
public void NotFullTest() {
|
|||
|
IServiceCollection ser = new ServiceCollection();
|
|||
|
ser.UseFalconDI(this.GetType().Assembly);
|
|||
|
var pd = ser.BuildServiceProvider();
|
|||
|
|
|||
|
var obj = pd.GetService<NotFullObj>();
|
|||
|
Assert.IsNotNull(obj);
|
|||
|
Assert.IsNotNull(obj.F1);
|
|||
|
Assert.IsNull(obj.F2);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
[TestMethod]
|
|||
|
public void IFalconDIFactoryTest() {
|
|||
|
IServiceCollection ser = new ServiceCollection();
|
|||
|
ser.UseFalconDI(this.GetType().Assembly);
|
|||
|
using(var pd = ser.BuildServiceProvider()) {
|
|||
|
var obj = pd.GetService<IFalconDIInstantTypeFactory>();
|
|||
|
Assert.IsNotNull(obj);
|
|||
|
Assert.AreEqual(obj.Instance().Val,2);
|
|||
|
|
|||
|
var obj2 = pd.GetService<IFalconDIInstantFactory<IFDIIT>>();
|
|||
|
Assert.IsNotNull(obj2);
|
|||
|
Assert.AreEqual(obj2.Instance().Val,2);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>ע<EFBFBD>ᵽ<EFBFBD><E1B5BD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
[TestMethod]
|
|||
|
public void RegisterToSelf() {
|
|||
|
IServiceCollection ser = new ServiceCollection();
|
|||
|
ser.UseFalconDI(this.GetType().Assembly);
|
|||
|
using(var pd = ser.BuildServiceProvider()) {
|
|||
|
var obj = pd.GetService<RegisterToSelf>();
|
|||
|
Assert.IsNotNull(obj);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
[TestMethod]
|
|||
|
public void SingletonTest() {
|
|||
|
IServiceCollection ser = new ServiceCollection();
|
|||
|
ser.UseFalconDI(this.GetType().Assembly);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ȡΪͬһ<CDAC><D2BB><EFBFBD><EFBFBD>
|
|||
|
using(var pd = ser.BuildServiceProvider()) {
|
|||
|
var obj = pd.GetService<SingletonTest>();
|
|||
|
Assert.IsTrue(obj.Val == 0);
|
|||
|
obj.Val = 1;
|
|||
|
var obj2 = pd.GetService<SingletonTest>();
|
|||
|
Assert.IsTrue(obj.Val == 1);
|
|||
|
}
|
|||
|
//<2F>ͷ<EFBFBD>Provider<65><72><EFBFBD><EFBFBD><EFBFBD>ͷŵ<CDB7><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
using(var pd = ser.BuildServiceProvider()) {
|
|||
|
var obj = pd.GetService<SingletonTest>();
|
|||
|
Assert.IsTrue(obj.Val == 0);
|
|||
|
obj.Val = 1;
|
|||
|
var obj2 = pd.GetService<SingletonTest>();
|
|||
|
Assert.IsTrue(obj.Val == 1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B2BB>ע<EFBFBD><D7A2>
|
|||
|
/// </summary>
|
|||
|
[TestMethod]
|
|||
|
public void AbstractTest() {
|
|||
|
IServiceCollection ser = new ServiceCollection();
|
|||
|
ser.UseFalconDI(this.GetType().Assembly);
|
|||
|
using(var pd = ser.BuildServiceProvider()) {
|
|||
|
var obj = pd.GetService<AbstractWithDi>();
|
|||
|
System.Console.WriteLine(obj.GetType().FullName);
|
|||
|
Assert.IsNotNull(obj);
|
|||
|
var cla = obj as ClassFromAbstractWithDi;
|
|||
|
Assert.IsNotNull(cla);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|