Ejemplo n.º 1
0
        public void ResolveWillReturnNewInstanceWhenLeaseExpires()
        {
            // Fixture setup
            var kernel    = new DefaultKernel();
            var model     = new ComponentModel("foo", typeof(ICloneable), typeof(Version));
            var activator = kernel.CreateComponentActivator(model);

            var expired   = false;
            var leaseStub = new Mock <ILease> {
                DefaultValue = DefaultValue.Mock
            };

            leaseStub.Setup(l => l.IsExpired).Returns(() =>
            {
                var b   = expired;
                expired = !expired;
                return(b);
            });
            kernel.Register(Component.For <ILease>().Instance(leaseStub.Object));

            var sut = new CacheLifestyleManager();

            sut.Init(activator, kernel, model);
            // Exercise system
            var first  = sut.Resolve(CreationContext.Empty);
            var second = sut.Resolve(CreationContext.Empty);

            // Verify outcome
            Assert.NotSame(first, second);
            // Teardown
        }
Ejemplo n.º 2
0
        public void ReleaseWrongObjectWillNotReleaseInstance()
        {
            // Fixture setup
            var kernel    = new DefaultKernel();
            var model     = new ComponentModel("foo", typeof(ICloneable), typeof(Version));
            var activator = kernel.CreateComponentActivator(model);

            var leaseMock = new Mock <ILease> {
                DefaultValue = DefaultValue.Mock
            };

            kernel.Register(Component.For <ILease>().Instance(leaseMock.Object));

            var sut = new CacheLifestyleManager();

            sut.Init(activator, kernel, model);

            var first = sut.Resolve(CreationContext.Empty);

            // Exercise system
            sut.Release(new object());
            // Verify outcome
            var second = sut.Resolve(CreationContext.Empty);

            Assert.Same(first, second);
            // Teardown
        }
 public void ResolveInSameSession() {
     var context = GetMockContext();
     var m = new PerWebSessionLifestyleManager {ContextProvider = () => context};
     var kernel = new DefaultKernel();
     var model = new ComponentModel("bla", typeof (object), typeof (object));
     var activator = kernel.CreateComponentActivator(model);
     m.Init(activator, kernel, model);
     var creationContext = new CreationContext(new DefaultHandler(model), kernel.ReleasePolicy, typeof (object), null, null);
     var instance = m.Resolve(creationContext);
     Assert.IsNotNull(instance);
     var instance2 = m.Resolve(creationContext);
     Assert.AreSame(instance, instance2);
 }
        public void No_context_uses_transient() {
            var m = new HybridPerWebRequestTransientLifestyleManager();
            var kernel = new DefaultKernel();
            var model = new ComponentModel("bla", typeof(object), typeof(object));
            var activator = kernel.CreateComponentActivator(model);
            m.Init(activator, kernel, model);
            var creationContext = new CreationContext(new DefaultHandler(model), kernel.ReleasePolicy, typeof(object), null, null);
            var instance1 = m.Resolve(creationContext);
            Assert.IsNotNull(instance1);
            var instance2 = m.Resolve(creationContext);
            Assert.IsNotNull(instance2);
            Assert.AreNotSame(instance1, instance2);

        }
 public void ResolveInDifferentSessions() {
     var context = GetMockContext();
     var m = new PerWebSessionLifestyleManager {ContextProvider = () => context};
     var kernel = new DefaultKernel();
     var model = new ComponentModel(new ComponentName("bla", true), new List<Type> { typeof(object) }, typeof(object), null);
     var activator = kernel.CreateComponentActivator(model);
     m.Init(activator, kernel, model);
     var creationContext = new Func<CreationContext>(() => new CreationContext(new DefaultHandler(model), kernel.ReleasePolicy, typeof (object), null, null, null));
     var instance = m.Resolve(creationContext(), kernel.ReleasePolicy);
     Assert.IsNotNull(instance);
     context.Session.Abandon();
     var instance2 = m.Resolve(creationContext(), kernel.ReleasePolicy);
     Assert.AreNotSame(instance, instance2);
 }
Ejemplo n.º 6
0
        public void ResolveOnceReturnsCorrectResult()
        {
            // Fixture setup
            var kernel    = new DefaultKernel();
            var model     = new ComponentModel("foo", typeof(ICloneable), typeof(Version));
            var activator = kernel.CreateComponentActivator(model);

            var sut = new CacheLifestyleManager();

            sut.Init(activator, kernel, model);
            // Exercise system
            var result = sut.Resolve(CreationContext.Empty);

            // Verify outcome
            Assert.IsAssignableFrom <Version>(result);
            // Teardown
        }
Ejemplo n.º 7
0
        public void LeaseIsCorrectWhenAccessedAfterInitializationButNoLeaseIsAvailableInKernel()
        {
            // Fixture setup
            var kernel    = new DefaultKernel();
            var model     = new ComponentModel("foo", typeof(ICloneable), typeof(Version));
            var activator = kernel.CreateComponentActivator(model);

            var sut = new CacheLifestyleManager();

            sut.Init(activator, kernel, model);
            // Exercise system
            var result = sut.Lease;
            // Verify outcome
            var actual = Assert.IsAssignableFrom <SlidingLease>(result);

            Assert.Equal(TimeSpan.FromMinutes(1), actual.Timeout);
            // Teardown
        }
Ejemplo n.º 8
0
        public void ResolveTwiceReturnsSame()
        {
            // Fixture setup
            var kernel    = new DefaultKernel();
            var model     = new ComponentModel("foo", typeof(ICloneable), typeof(Version));
            var activator = kernel.CreateComponentActivator(model);

            var sut = new CacheLifestyleManager();

            sut.Init(activator, kernel, model);
            // Exercise system
            var first  = sut.Resolve(CreationContext.Empty);
            var second = sut.Resolve(CreationContext.Empty);

            // Verify outcome
            Assert.Same(first, second);
            // Teardown
        }
Ejemplo n.º 9
0
        public void FirstResolveWillRenewLease()
        {
            // Fixture setup
            var kernel    = new DefaultKernel();
            var model     = new ComponentModel("foo", typeof(ICloneable), typeof(Version));
            var activator = kernel.CreateComponentActivator(model);

            var leaseMock = new Mock <ILease> {
                DefaultValue = DefaultValue.Mock
            };

            kernel.Register(Component.For <ILease>().Instance(leaseMock.Object));

            var sut = new CacheLifestyleManager();

            sut.Init(activator, kernel, model);
            // Exercise system
            sut.Resolve(CreationContext.Empty);
            // Verify outcome
            leaseMock.Verify(l => l.Renew());
            // Teardown
        }
Ejemplo n.º 10
0
        public void LeaseIsCorrectWhenAccessedAfterInitializationWhenLeaseIsAvailabeInKernel()
        {
            // Fixture setup
            var kernel    = new DefaultKernel();
            var model     = new ComponentModel("foo", typeof(ICloneable), typeof(Version));
            var activator = kernel.CreateComponentActivator(model);

            var expectedLease = new Mock <ILease> {
                DefaultValue = DefaultValue.Mock
            }.Object;

            kernel.Register(Component.For <ILease>().Instance(expectedLease));

            var sut = new CacheLifestyleManager();

            sut.Init(activator, kernel, model);
            // Exercise system
            var result = sut.Lease;

            // Verify outcome
            Assert.Equal(expectedLease, result);
            // Teardown
        }