public void TestResolveMultitonFromFactoryClearInstances() { _iocContainer.RegisterMultiton <ITest, Test, MultitonScope>(); _iocContainer.RegisterFactory <ITestFactory>(); MultitonScope scope1 = new MultitonScope(); MultitonScope scope2 = new MultitonScope(); ITestFactory testFactory = _iocContainer.Resolve <ITestFactory>(); ITest resolvedTest1 = testFactory.Create(scope1); ITest resolvedTest2 = testFactory.Create(scope1); ITest resolvedTest3 = testFactory.Create(scope2); Assert.AreSame(resolvedTest1, resolvedTest2); Assert.AreNotSame(resolvedTest1, resolvedTest3); Assert.AreNotSame(resolvedTest2, resolvedTest3); testFactory.ClearMultitonInstance <ITest>(); ITest resolvedTest4 = testFactory.Create(scope1); ITest resolvedTest5 = testFactory.Create(scope2); Assert.AreNotSame(resolvedTest1, resolvedTest4); Assert.AreNotSame(resolvedTest2, resolvedTest4); Assert.AreNotSame(resolvedTest3, resolvedTest5); }
public void TestResolveMultiton() { _iocContainer.RegisterMultiton <ITest, Test, MultitonScope>(); MultitonScope scope1 = new MultitonScope(); MultitonScope scope2 = new MultitonScope(); ITest resolvedTest1 = _iocContainer.Resolve <ITest>(scope1); ITest resolvedTest2 = _iocContainer.Resolve <ITest>(scope1); ITest resolvedTest3 = _iocContainer.Resolve <ITest>(scope2); Assert.AreSame(resolvedTest1, resolvedTest2); Assert.AreNotSame(resolvedTest1, resolvedTest3); Assert.AreNotSame(resolvedTest2, resolvedTest3); }
public void TestRegisterAndResolveMultipleMultitonRegistration() { _iocContainer.RegisterMultiton <IProvider, ITest, Test, MultitonScope>(); MultitonScope scope = new MultitonScope(); ITest test = _iocContainer.Resolve <ITest>(scope); Assert.NotNull(test); IProvider provider = _iocContainer.Resolve <IProvider>(scope); Assert.NotNull(provider); Assert.AreEqual(test, provider); Assert.AreSame(test, provider); }
public void TestMultipleMultitonRegistrationOnCreate() { _iocContainer.RegisterMultiton <IProvider, ITest, Test, MultitonScope>().OnCreate(t => t.DoSomething(1)); MultitonScope scope = new MultitonScope(); ITest test = _iocContainer.Resolve <ITest>(scope); Assert.NotNull(test); Assert.AreEqual(1, test.Number); IProvider provider = _iocContainer.Resolve <IProvider>(scope); Assert.NotNull(provider); Assert.AreEqual(1, provider.Number); Assert.AreEqual(test, provider); Assert.AreSame(test, provider); }