public void Test001() { var disposed = false; var created = false; using (var ioc = new PerunContainer()) { IConfiguredPluginInfo<ITestDisposable> regInfo = ioc.RegisterType<ITestDisposable, MockDisposableClass>(ioc); regInfo.AfterBuiltNewComponent+= (sender,args) => { created = true; args.Component.BeforeDisposeAction =() => disposed = true; //((AfterBuiltComponentEventArgs)args).Component = new MockDisposableClass2(); }; var myComponent = ioc.GetService<ITestDisposable>(); Assert.IsTrue(created); regInfo.Dispose(); Assert.IsTrue(disposed); Assert.IsFalse(ioc.IsConfiguredFor(typeof(ITestDisposable))); } }
internal SingletonScope(PerunContainer container) { _container = container; }
public void Test002() { using (var ioc = new PerunContainer()) { ioc.AfterMissedComponent += (sender, args) => { if (args.RequieredComponentType == typeof(ITestDisposable)) ioc.RegisterType<ITestDisposable, MockDisposableClass>(); }; var myComponent = ioc.GetService<ITestDisposable>(); Assert.IsNotNull(myComponent); } }
/// <summary> /// Test, zda pri vyjmuti pluginu dojde k dojde k disposnutí držených instancí. /// </summary> public virtual void DisposePlugins() { bool disposed = false; using (var ioc = new PerunContainer()) { ioc.RegisterType<ITestDisposable, MockDisposableClass>(ioc); //as singleton /* PerunConatiner implements IPersunScope*/ var a = ioc.GetService<ITestDisposable>(); a.BeforeDisposeAction = () => disposed = true; Assert.IsTrue(ioc.IsConfiguredFor(typeof(ITestDisposable))); ioc.DisposeService(typeof(ITestDisposable)); Assert.IsTrue(disposed); Assert.IsFalse(ioc.IsConfiguredFor(typeof(ITestDisposable))); } }
public void CircularDependecyTest() { return; using (var ioc = new PerunContainer()) { //subtest1 ioc.RegisterType<object>(ioc.GetService<object>); //subtest2 ioc.RegisterType<MockCircular>(); var myComponent = ioc.GetService<MockCircular>(); } }
public void Test003() { bool released = false; using (var ioc = new PerunContainer()) { ioc.RegisterType<ITestDisposable, MockDisposableClass>(ioc/*=singleton*/) .BeforeReleaseComponent+=(sender,args)=> { released = true; args.RunDispose = true;//but this behavior is default }; var myComponent = ioc.GetService<ITestDisposable>(); } Assert.IsTrue(released); }