public void TestAddRetrieve() { ExternallyControlledLifetimeManager manager = new ExternallyControlledLifetimeManager(); Mock<IDisposable> disposable = new Mock<IDisposable>(); manager.AddInstance(disposable.Object); Assert.AreEqual(disposable.Object, manager.GetInstance()); }
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext) { //execute the next chain var result = getNext().Invoke(input, getNext); //if the method name is Create if (input.MethodBase.Name == "Create") { //let's get the generic argument for Create i.e. T in Create<T> var interfaceType = input.MethodBase.GetGenericArguments()[0]; //set up ourlifetime to be controlled by the target object's disposed event var lifeTime = new ExternallyControlledLifetimeManager(); var target = (IMockRepository)input.Target; target.Disposed += (s, e) => lifeTime.RemoveValue(); //let's get our mock object var obj = result.ReturnValue as Mock; //let's register our mock with the container. if (obj != null && obj.Object != null) { _container.RegisterInstance(interfaceType, obj.Object, lifeTime); } } return(result); }
public void TestDispose() { ExternallyControlledLifetimeManager manager = new ExternallyControlledLifetimeManager(); Mock<IDisposable> disposable = new Mock<IDisposable>(); manager.AddInstance(disposable.Object); manager.Dispose(); disposable.Verify(p => p.Dispose(), Times.Never()); }
public void TestRemoveInstance() { ExternallyControlledLifetimeManager manager = new ExternallyControlledLifetimeManager(); Mock<IDisposable> disposable = new Mock<IDisposable>(); manager.AddInstance(disposable.Object); manager.RemoveInstance(); disposable.Verify(p => p.Dispose(), Times.Never()); disposable.Object.Dispose(); Assert.AreEqual(disposable.Object, manager.GetInstance()); }
static void TestExternallyControlledLifetime() { Console.WriteLine("Test ExternallyControlledLifetimeManager"); LifetimeTest.ResetCounter(); using (var container = new UnityContainer()) { var lifeManager = new ExternallyControlledLifetimeManager(); container.RegisterType <ILifetimeTest, LifetimeTest>(lifeManager); var obj1 = container.Resolve <ILifetimeTest>(); var obj2 = container.Resolve <ILifetimeTest>(); obj1.Dispose(); LifetimeTest.PrintCounter(); } LifetimeTest.PrintCounter(); }
public void StrategyProperlyWiresEvents() { MockBuilderContext context = CreateContext(); NamedTypeBuildKey buildKey = NamedTypeBuildKey.Make <ClipboardManager>(); EventBroker broker = new EventBroker(); var brokerLifetime = new ExternallyControlledLifetimeManager(); brokerLifetime.SetValue(broker); context.Policies.Set <ILifetimePolicy>(brokerLifetime, NamedTypeBuildKey.Make <EventBroker>()); EventBrokerInfoPolicy policy = new EventBrokerInfoPolicy(); policy.AddPublication("cut", "Cut"); policy.AddPublication("copy", "Copy"); policy.AddPublication("paste", "Paste"); policy.AddSubscription("copy", typeof(ClipboardManager).GetMethod("OnCopy")); policy.AddSubscription("clipboard data available", typeof(ClipboardManager).GetMethod("OnClipboardDataAvailable")); context.Policies.Set <IEventBrokerInfoPolicy>(policy, buildKey); ClipboardManager existing = new ClipboardManager(); context.ExecuteBuildUp(buildKey, existing); List <string> registeredEvents = new List <string>(broker.RegisteredEvents); registeredEvents.Sort(); List <string> expectedEvents = new List <string>(new string[] { "cut", "copy", "paste", "clipboard data available" }); expectedEvents.Sort(); CollectionAssert.AreEqual(expectedEvents, registeredEvents); }
public void WhenResolvingThroughTheExtensionWithAName_ThenTransientPoliciesAreUsed() { var singleton = new object(); var transientLifetimeManager = new ExternallyControlledLifetimeManager(); transientLifetimeManager.SetValue(singleton); object instance = this.container.Configure <TransientPolicyBuildUpExtension>() .BuildUp( typeof(object), null, "name", new TestTransientLifetimePolicy { LifetimeManager = transientLifetimeManager }); Assert.AreSame(singleton, instance); }
public void Connect() { Container = new UnityContainer(); //Container.RegisterType<DataContext, DataContext>(new InjectionConstructor()); //Service Container.RegisterType <IClientService, ClientService>(); Container.RegisterType <IPolicyService, PolicyService>(); Container.RegisterType <IClientRepository, Repository.MockService.ClientRepository>(); Container.RegisterType <IPolicyRepository, Repository.MockService.PolicyRepository>(); Container.RegisterType <IUnitOfWork, Repository.MockService.UnitOfWork>(); //AutoMapper var manager = new ExternallyControlledLifetimeManager(); var map = ConfigureMapper(); Container.RegisterInstance(map); }