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());
 }
Example #5
0
        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);
        }