Falcon.Di/Falcon.DI.Test/DITest.cs

136 lines
4.8 KiB
C#
Raw Normal View History

2019-12-27 11:39:10 +08:00
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);
}
}
}
}