public void SutIsLease()
 {
     // Fixture setup
     var dummyTimeout = TimeSpan.FromMinutes(2);
     // Exercise system
     var sut = new SlidingLease(dummyTimeout);
     // Verify outcome
     Assert.IsAssignableFrom<ILease>(sut);
     // Teardown
 }
 public void IsExpiredIsCorrectWhenTimoutIsNotExceeded()
 {
     // Fixture setup
     var sut = new SlidingLease(TimeSpan.FromDays(1));
     // Exercise system
     var result = sut.IsExpired;
     // Verify outcome
     Assert.False(result);
     // Teardown
 }
 public void IsExpiredIsCorrectWhenTimeoutIsExceeded()
 {
     // Fixture setup
     var sut = new SlidingLease(TimeSpan.FromTicks(100));
     Thread.Sleep(TimeSpan.FromMilliseconds(1));
     // Exercise system
     var result = sut.IsExpired;
     // Verify outcome
     Assert.True(result);
     // Teardown
 }
 public void TimeoutIsCorrect()
 {
     // Fixture setup
     var expectedTimeout = TimeSpan.FromMinutes(1);
     var sut = new SlidingLease(expectedTimeout);
     // Exercise system
     TimeSpan result = sut.Timeout;
     // Verify outcome
     Assert.Equal(expectedTimeout, result);
     // Teardown
 }
示例#5
0
        public void SutIsLease()
        {
            // Fixture setup
            var dummyTimeout = TimeSpan.FromMinutes(2);
            // Exercise system
            var sut = new SlidingLease(dummyTimeout);

            // Verify outcome
            Assert.IsAssignableFrom <ILease>(sut);
            // Teardown
        }
示例#6
0
        public void IsExpiredIsCorrectWhenTimoutIsNotExceeded()
        {
            // Fixture setup
            var sut = new SlidingLease(TimeSpan.FromDays(1));
            // Exercise system
            var result = sut.IsExpired;

            // Verify outcome
            Assert.False(result);
            // Teardown
        }
 public void IsExpiredIsCorrectAfterRenewal()
 {
     // Fixture setup
     var sut = new SlidingLease(TimeSpan.FromMilliseconds(10));
     Thread.Sleep(TimeSpan.FromMilliseconds(20));
     // Exercise system
     sut.Renew();
     // Verify outcome
     Assert.False(sut.IsExpired);
     // Teardown
 }
        public void ExampleOfTearDown()
        {
            var container = new UnityContainer();
            var lease     = new SlidingLease(TimeSpan.FromMinutes(1));
            var cache     = new CacheLifetimeManager(lease);

            container.RegisterType <IIngredient, Parsley>(cache);

            var ingredient = container.Resolve <IIngredient>();

            container.Teardown(ingredient);
        }
示例#9
0
        public void IsExpiredIsCorrectAfterRenewal()
        {
            // Fixture setup
            var sut = new SlidingLease(TimeSpan.FromMilliseconds(10));

            Thread.Sleep(TimeSpan.FromMilliseconds(20));
            // Exercise system
            sut.Renew();
            // Verify outcome
            Assert.False(sut.IsExpired);
            // Teardown
        }
示例#10
0
        public void TimeoutIsCorrect()
        {
            // Fixture setup
            var expectedTimeout = TimeSpan.FromMinutes(1);
            var sut             = new SlidingLease(expectedTimeout);
            // Exercise system
            TimeSpan result = sut.Timeout;

            // Verify outcome
            Assert.Equal(expectedTimeout, result);
            // Teardown
        }
示例#11
0
        public void IsExpiredIsCorrectWhenTimeoutIsExceeded()
        {
            // Fixture setup
            var sut = new SlidingLease(TimeSpan.FromTicks(100));

            Thread.Sleep(TimeSpan.FromMilliseconds(1));
            // Exercise system
            var result = sut.IsExpired;

            // Verify outcome
            Assert.True(result);
            // Teardown
        }
示例#12
0
        public void UsingCachingIngredientWithLongTimeout()
        {
            var container = new UnityContainer();

            var lease = new SlidingLease(TimeSpan.FromMinutes(1));
            var cache = new CacheLifetimeManager(lease);

            container.RegisterType <IIngredient, SauceBéarnaise>(cache);

            var ingredient1 = container.Resolve <IIngredient>();
            var ingredient2 = container.Resolve <IIngredient>();

            Assert.Same(ingredient1, ingredient2);
        }
        // Uses default Lease, but attempts to look up alternative through the kernel.
        // if anyone uses the Lease property before the Init function in AbstractLifestyleManager
        // the default lease is used. This won't happen with how Castle Windsor uses custom lifestyles
        // in normal use.
        private ILease resolveLease()
        {
            var defaultLease = new SlidingLease(TimeSpan.FromMinutes(1));

            if (this.Kernel == null)
            {
                return(defaultLease);
            }
            if (this.Kernel.HasComponent(typeof(ILease)))
            {
                return(this.Kernel.Resolve <ILease>());
            }
            return(defaultLease);
        }
        public void LeaseIsCorrect()
        {
            var container     = new Container();
            var expectedLease = new SlidingLease(TimeSpan.FromMinutes(1));
            var cache         = new CacheLifecycle(expectedLease);

            // How to configure lease for use.
            // this line isn't used in the test
            container.Configure(r => r.For <IIngredient>().LifecycleIs(cache).Use <SauceBearnaise>());

            var result = cache.Lease;

            Assert.Equal(expectedLease, result);
        }
        public void LeaseIsCorrect()
        {
            // Fixture setup
            var container     = new UnityContainer();
            var expectedLease = new SlidingLease(TimeSpan.FromMinutes(1));
            var cache         = new CacheLifetimeManager(expectedLease);

            container.RegisterType <IIngredient, SauceBearnaise>(cache);
            // Exercise system
            ILease result = cache.Lease;

            // Verify outcome
            Assert.Equal(expectedLease, result);
        }
示例#16
0
        public void UsingCachingIngredientWithShortTimeout()
        {
            var container = new UnityContainer();

            var lease = new SlidingLease(TimeSpan.FromTicks(1));
            var cache = new CacheLifetimeManager(lease);

            container.RegisterType <IIngredient, SauceBéarnaise>(cache);

            var ingredient1 = container.Resolve <IIngredient>();

            Thread.Sleep(TimeSpan.FromMilliseconds(1));
            var ingredient2 = container.Resolve <IIngredient>();

            Assert.NotSame(ingredient1, ingredient2);
        }
示例#17
0
        public void DisposeContainerDisposesCachedParsley()
        {
            var container = new UnityContainer();

            var lease = new SlidingLease(TimeSpan.FromMinutes(1));
            var cache = new CacheLifetimeManager(lease);

            container.RegisterType <IIngredient, Parsley>(cache);

            var ingredient = container.Resolve <IIngredient>();

            container.Dispose();

            var parsley = Assert.IsAssignableFrom <Parsley>(ingredient);

            Assert.True(parsley.IsDisposed);
        }
示例#18
0
        public void UsingCachingIngredientWithLongTimeout()
        {
            var container = new Container();

            var lease = new SlidingLease(TimeSpan.FromMinutes(1));
            var cache = new CacheLifecycle(lease);

            container.Configure(r => r
                                .For <IIngredient>()
                                .LifecycleIs(cache)
                                .Use <SauceBéarnaise>());

            var ingredient1 = container.GetInstance <IIngredient>();
            var ingredient2 = container.GetInstance <IIngredient>();

            Assert.Same(ingredient1, ingredient2);
        }
示例#19
0
        public void UsingCachingIngredientWithShortTimeout()
        {
            var lease     = new SlidingLease(TimeSpan.FromTicks(1));
            var lifecycle = new CacheLifecycle(lease);

            var container = new Container();

            container.Configure(r => r
                                .For <IIngredient>()
                                .LifecycleIs(lifecycle)
                                .Use <SauceBéarnaise>());

            var ingredient1 = container.GetInstance <IIngredient>();

            Thread.Sleep(TimeSpan.FromMilliseconds(1));
            var ingredient2 = container.GetInstance <IIngredient>();

            Assert.NotSame(ingredient1, ingredient2);
        }
示例#20
0
        public void TeardownParsleyAsCachedDisposesParsleyWhenCacheLifetimeStrategyExtensionIsAdded()
        {
            var container = new UnityContainer();

            container.AddNewExtension <CacheLifetimeStrategyExtension>();

            var lease = new SlidingLease(TimeSpan.FromTicks(1));
            var cache = new CacheLifetimeManager(lease);

            container.RegisterType <IIngredient, Parsley>(cache);

            var ingredient = container.Resolve <IIngredient>();

            Thread.Sleep(TimeSpan.FromMilliseconds(1));

            container.Teardown(ingredient);

            var parsley = Assert.IsAssignableFrom <Parsley>(ingredient);

            Assert.True(parsley.IsDisposed);
        }
示例#21
0
        public void ReuseTheSameCacheForSeveralComponents()
        {
            var container = new Container();

            var lease = new SlidingLease(TimeSpan.FromMinutes(1));
            var cache = new CacheLifecycle(lease);

            container.Configure(r =>
            {
                r.For <IIngredient>().LifecycleIs(cache).Use <Steak>();
                r.For <ICourse>().LifecycleIs(cache).Use <Course>();
            });

            var course1 = container.GetInstance <ICourse>();
            var course2 = container.GetInstance <ICourse>();

            var ingredient1 = Assert.IsAssignableFrom <Course>(course1).Ingredients.Single();
            var ingredient2 = Assert.IsAssignableFrom <Course>(course2).Ingredients.Single();

            Assert.Same(ingredient1, ingredient2);
        }