Exemple #1
0
        public void ResultOfMethodCallWithSameComplexTypeIsCached()
        {
            var testModule = new InlineModule(m => m.Bind <CacheMock>().ToSelf());

            using (var kernel = new StandardKernel(new LinFuModule(), new CacheModule(), testModule))
            {
                var obj = kernel.Get <CacheMock>();

                CacheMock.ResetCounts();

                string result;

                var simple1 = new SimpleObject();
                var simple2 = new SimpleObject();

                result = obj.Convert(simple1);
                Assert.That(result, Is.EqualTo(simple1.ToString()));
                Assert.That(CacheMock.ConvertCount, Is.EqualTo(1));

                result = obj.Convert(simple1);
                Assert.That(result, Is.EqualTo(simple1.ToString()));
                Assert.That(CacheMock.ConvertCount, Is.EqualTo(1));

                result = obj.Convert(simple2);
                Assert.That(result, Is.EqualTo(simple2.ToString()));
                Assert.That(CacheMock.ConvertCount, Is.EqualTo(2));
            }
        }
Exemple #2
0
        public void ResultOfMethodCallWithSameArgumentsIsCached()
        {
            IModule testModule = new InlineModule(m => m.Bind <CacheMock>().ToSelf());

            using (var kernel = new StandardKernel(new LinFuModule(), new CacheModule(), testModule))
            {
                var obj = kernel.Get <CacheMock>();

                CacheMock.ResetCounts();

                int result;

                result = obj.Multiply(2, 3);
                Assert.That(result, Is.EqualTo(6));
                Assert.That(CacheMock.MultiplyCount, Is.EqualTo(1));

                result = obj.Multiply(2, 3);
                Assert.That(result, Is.EqualTo(6));
                Assert.That(CacheMock.MultiplyCount, Is.EqualTo(1));

                result = obj.Multiply(4, 4);
                Assert.That(result, Is.EqualTo(16));
                Assert.That(CacheMock.MultiplyCount, Is.EqualTo(2));
            }
        }
Exemple #3
0
        public void ResultOfMethodCallNotCachedForCallsToDifferentInstances()
        {
            var testModule = new InlineModule(m => m.Bind <CacheMock>().ToSelf());

            using (var kernel = new StandardKernel(new LinFuModule(), new CacheModule(), testModule))
            {
                var obj1 = kernel.Get <CacheMock>();
                var obj2 = kernel.Get <CacheMock>();

                CacheMock.ResetCounts();

                int result;

                result = obj1.Multiply(2, 3);
                Assert.That(result, Is.EqualTo(6));
                Assert.That(CacheMock.MultiplyCount, Is.EqualTo(1));

                result = obj1.Multiply(2, 3);
                Assert.That(result, Is.EqualTo(6));
                Assert.That(CacheMock.MultiplyCount, Is.EqualTo(1));

                result = obj2.Multiply(2, 3);
                Assert.That(result, Is.EqualTo(6));
                Assert.That(CacheMock.MultiplyCount, Is.EqualTo(2));
            }
        }
Exemple #4
0
        public void ResultOfMethodCallWithNoArgumentsIsCached()
        {
            var testModule = new InlineModule(m => m.Bind <CacheMock>().ToSelf());

            using (var kernel = new StandardKernel(new LinFuModule(), new CacheModule(), testModule))
            {
                var obj = kernel.Get <CacheMock>();

                CacheMock.ResetCounts();

                int result;

                result = obj.GetValue();
                Assert.That(result, Is.EqualTo(42));
                Assert.That(CacheMock.GetValueCount, Is.EqualTo(1));

                result = obj.GetValue();
                Assert.That(result, Is.EqualTo(42));
                Assert.That(CacheMock.GetValueCount, Is.EqualTo(1));
            }
        }