public void PreBuildUpWithCacheLifetimeFromParentAddsCorrectLifetime()
        {
            // Fixture setup
            var dummyLease = new Mock <ILease>().Object;
            var originalLifetimeManager = new CacheLifetimeManager(dummyLease);

            var parentList = new Mock <IPolicyList>().Object;

            var buildKey = new NamedTypeBuildKey <Version>();

            var contextMock = new Mock <IBuilderContext> {
                DefaultValue = DefaultValue.Mock
            };

            contextMock.SetupGet(ctx => ctx.BuildKey).Returns(buildKey);
            contextMock.Setup(ctx => ctx.PersistentPolicies.Get(typeof(ILifetimePolicy), buildKey, false, out parentList)).Returns(originalLifetimeManager);

            var sut = new CacheLifetimeStrategy();

            // Exercise system
            sut.PreBuildUp(contextMock.Object);
            // Verify outcome
            contextMock.Verify(ctx => ctx.Lifetime.Add(It.Is <object>(obj => new CacheLifetimeManagerCloneLikeness(originalLifetimeManager).Equals(obj))));
            // Teardown
        }
            public CacheLifetimeManagerCloneLikeness(CacheLifetimeManager target)
            {
                if (target == null)
                {
                    throw new ArgumentNullException("target");
                }

                this.target = target;
            }
            public CacheLifetimeManagerCloneLikeness(CacheLifetimeManager target)
            {
                if (target == null)
                {
                    throw new ArgumentNullException("target");
                }

                this.target = target;
            }
 public void SutIsLifetimeManager()
 {
     // Fixture setup
     var dummyLease = new Mock<ILease>().Object;
     // Exercise system
     var sut = new CacheLifetimeManager(dummyLease);
     // Verify outcome
     Assert.IsAssignableFrom<LifetimeManager>(sut);
     // Teardown
 }
 public void GetValueReturnsNullWhenFirstUsed()
 {
     // Fixture setup
     var dummyLease = new Mock<ILease>().Object;
     var sut = new CacheLifetimeManager(dummyLease);
     // Exercise system
     var result = sut.GetValue();
     // Verify outcome
     Assert.Null(result);
     // Teardown
 }
Example #6
0
        public void SutIsDisposable()
        {
            // Fixture setup
            var dummyLease = new Mock <ILease>().Object;
            // Exercise system
            var sut = new CacheLifetimeManager(dummyLease);

            // Verify outcome
            Assert.IsAssignableFrom <IDisposable>(sut);
            // Teardown
        }
 public void LeaseIsCorrect()
 {
     // Fixture setup
     var expectedLease = new Mock<ILease>().Object;
     var sut = new CacheLifetimeManager(expectedLease);
     // Exercise system
     ILease result = sut.Lease;
     // Verify outcome
     Assert.Equal(expectedLease, result);
     // Teardown
 }
Example #8
0
        public void CloneReturnsNewInstance()
        {
            // Fixture setup
            var dummyLease = new Mock <ILease>().Object;
            var sut        = new CacheLifetimeManager(dummyLease);
            // Exercise system
            CacheLifetimeManager result = sut.Clone();

            // Verify outcome
            Assert.NotSame(sut, result);
            // Teardown
        }
Example #9
0
        public void LeaseIsCorrect()
        {
            // Fixture setup
            var expectedLease = new Mock <ILease>().Object;
            var sut           = new CacheLifetimeManager(expectedLease);
            // Exercise system
            ILease result = sut.Lease;

            // Verify outcome
            Assert.Equal(expectedLease, result);
            // Teardown
        }
Example #10
0
        public void GetValueReturnsNullWhenFirstUsed()
        {
            // Fixture setup
            var dummyLease = new Mock <ILease>().Object;
            var sut        = new CacheLifetimeManager(dummyLease);
            // Exercise system
            var result = sut.GetValue();

            // Verify outcome
            Assert.Null(result);
            // Teardown
        }
Example #11
0
        public void SetValueRenewsLease()
        {
            // Fixture setup
            var leaseMock = new Mock <ILease>();
            var sut       = new CacheLifetimeManager(leaseMock.Object);
            // Exercise system
            var dummyValue = new object();

            sut.SetValue(dummyValue);
            // Verify outcome
            leaseMock.Verify(l => l.Renew());
            // Teardown
        }
Example #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);
        }
Example #13
0
        public void DisposeDisposesValue()
        {
            // Fixture setup
            var dummyLease = new Mock <ILease>().Object;
            var sut        = new CacheLifetimeManager(dummyLease);

            var valueMock = new Mock <IDisposable>();

            sut.SetValue(valueMock.Object);
            // Exercise system
            sut.Dispose();
            // Verify outcome
            valueMock.Verify(d => d.Dispose());
            // Teardown
        }
Example #14
0
        public void DisposeRemovesValue()
        {
            // Fixture setup
            var dummyLease = new Mock <ILease>().Object;
            var sut        = new CacheLifetimeManager(dummyLease);

            sut.SetValue(new object());
            // Exercise system
            sut.Dispose();
            // Verify outcome
            var result = sut.GetValue();

            Assert.Null(result);
            // Teardown
        }
Example #15
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);
        }
        public void GetValueReturnsCorrectResultWhenHoldingValue(bool isExpired)
        {
            // Fixture setup
            var value = new object();
            var expectedResult = isExpired ? null : value;

            var leaseStub = new Mock<ILease>();
            leaseStub.SetupGet(l => l.IsExpired).Returns(isExpired);
            var sut = new CacheLifetimeManager(leaseStub.Object);
            // Exercise system
            sut.SetValue(value);
            var result = sut.GetValue();
            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
Example #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);
        }
Example #18
0
        public void RemoveValueDisposesValue()
        {
            // Fixture setup
            var leaseStub = new Mock <ILease>();

            leaseStub.SetupGet(l => l.IsExpired).Returns(true);

            var sut = new CacheLifetimeManager(leaseStub.Object);

            var valueMock = new Mock <IDisposable>();

            sut.SetValue(valueMock.Object);
            // Exercise system
            sut.RemoveValue();
            // Verify outcome
            valueMock.Verify(d => d.Dispose());
            // Teardown
        }
Example #19
0
        public void RemoveValueRemovesValueWhenLeaseIsExpired()
        {
            // Fixture setup
            var leaseStub = new Mock <ILease>();

            leaseStub.SetupGet(l => l.IsExpired).Returns(true);

            var sut = new CacheLifetimeManager(leaseStub.Object);

            sut.SetValue(new object());
            // Exercise system
            sut.RemoveValue();
            // Verify outcome
            var result = sut.GetValue();

            Assert.Null(result);
            // Teardown
        }
Example #20
0
        public void GetValueReturnsCorrectResultWhenHoldingValue(bool isExpired)
        {
            // Fixture setup
            var value          = new object();
            var expectedResult = isExpired ? null : value;

            var leaseStub = new Mock <ILease>();

            leaseStub.SetupGet(l => l.IsExpired).Returns(isExpired);
            var sut = new CacheLifetimeManager(leaseStub.Object);

            // Exercise system
            sut.SetValue(value);
            var result = sut.GetValue();

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
Example #21
0
        public void RemoveValueDoesNotRemoveValueWhenLeaseIsNotExpired()
        {
            // Fixture setup
            var leaseStub = new Mock <ILease>();

            leaseStub.SetupGet(l => l.IsExpired).Returns(false);

            var expected = new object();

            var sut = new CacheLifetimeManager(leaseStub.Object);

            sut.SetValue(expected);
            // Exercise system
            sut.RemoveValue();
            // Verify outcome
            var result = sut.GetValue();

            Assert.Equal(expected, result);
            // Teardown
        }
        public void PreBuildUpWithCacheLifetimeFromParentAddsCorrectLifetime()
        {
            // Fixture setup
            var dummyLease = new Mock<ILease>().Object;
            var originalLifetimeManager = new CacheLifetimeManager(dummyLease);

            var parentList = new Mock<IPolicyList>().Object;

            var buildKey = new NamedTypeBuildKey<Version>();

            var contextMock = new Mock<IBuilderContext> { DefaultValue = DefaultValue.Mock };
            contextMock.SetupGet(ctx => ctx.BuildKey).Returns(buildKey);
            contextMock.Setup(ctx => ctx.PersistentPolicies.Get(typeof(ILifetimePolicy), buildKey, false, out parentList)).Returns(originalLifetimeManager);

            var sut = new CacheLifetimeStrategy();
            // Exercise system
            sut.PreBuildUp(contextMock.Object);
            // Verify outcome
            contextMock.Verify(ctx => ctx.Lifetime.Add(It.Is<object>(obj => new CacheLifetimeManagerCloneLikeness(originalLifetimeManager).Equals(obj))));
            // Teardown
        }
Example #23
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);
        }
        public void DisposeDisposesValue()
        {
            // Fixture setup
            var dummyLease = new Mock<ILease>().Object;
            var sut = new CacheLifetimeManager(dummyLease);

            var valueMock = new Mock<IDisposable>();
            sut.SetValue(valueMock.Object);
            // Exercise system
            sut.Dispose();
            // Verify outcome
            valueMock.Verify(d => d.Dispose());
            // Teardown
        }
Example #25
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);
        }
Example #26
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);
        }
 public void CloneReturnsNewInstance()
 {
     // Fixture setup
     var dummyLease = new Mock<ILease>().Object;
     var sut = new CacheLifetimeManager(dummyLease);
     // Exercise system
     CacheLifetimeManager result = sut.Clone();
     // Verify outcome
     Assert.NotSame(sut, result);
     // Teardown
 }
        public void RemoveValueDisposesValue()
        {
            // Fixture setup
            var leaseStub = new Mock<ILease>();
            leaseStub.SetupGet(l => l.IsExpired).Returns(true);

            var sut = new CacheLifetimeManager(leaseStub.Object);

            var valueMock = new Mock<IDisposable>();
            sut.SetValue(valueMock.Object);
            // Exercise system
            sut.RemoveValue();
            // Verify outcome
            valueMock.Verify(d => d.Dispose());
            // Teardown
        }
        public void RemoveValueDoesNotRemoveValueWhenLeaseIsNotExpired()
        {
            // Fixture setup
            var leaseStub = new Mock<ILease>();
            leaseStub.SetupGet(l => l.IsExpired).Returns(false);

            var expected = new object();

            var sut = new CacheLifetimeManager(leaseStub.Object);
            sut.SetValue(expected);
            // Exercise system
            sut.RemoveValue();
            // Verify outcome
            var result = sut.GetValue();
            Assert.Equal(expected, result);
            // Teardown
        }
Example #30
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);
        }
 public void DisposeRemovesValue()
 {
     // Fixture setup
     var dummyLease = new Mock<ILease>().Object;
     var sut = new CacheLifetimeManager(dummyLease);
     sut.SetValue(new object());
     // Exercise system
     sut.Dispose();
     // Verify outcome
     var result = sut.GetValue();
     Assert.Null(result);
     // Teardown
 }
        public void RemoveValueRemovesValueWhenLeaseIsExpired()
        {
            // Fixture setup
            var leaseStub = new Mock<ILease>();
            leaseStub.SetupGet(l => l.IsExpired).Returns(true);

            var sut = new CacheLifetimeManager(leaseStub.Object);
            sut.SetValue(new object());
            // Exercise system
            sut.RemoveValue();
            // Verify outcome
            var result = sut.GetValue();
            Assert.Null(result);
            // Teardown
        }
 public void SetValueRenewsLease()
 {
     // Fixture setup
     var leaseMock = new Mock<ILease>();
     var sut = new CacheLifetimeManager(leaseMock.Object);
     // Exercise system
     var dummyValue = new object();
     sut.SetValue(dummyValue);
     // Verify outcome
     leaseMock.Verify(l => l.Renew());
     // Teardown
 }
Example #34
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);
        }