Exemple #1
0
        public void TransientProducerWithConstantExpressionShouldReturnSame()
        {
            var o1 = new object();
            IExpressionGenerator generator = new ConstantExpressionGenerator(o1);
            IInstanceProvider provider = new TransientInstanceProvider(typeof(object), generator);

            var o2 = provider.GetInstance();

            Assert.NotNull(o2);
            Assert.AreSame(o1, o2);

            // Stupid, but let's be sure
            foreach (var obj in Enumerable.Range(0, 100).Select(i => provider.GetInstance()))
                Assert.AreSame(o1, obj);
        }
Exemple #2
0
        public void TransientShouldCreateNewObjectEveryTime()
        {
            IExpressionGenerator generator = new ConstructorExpressionGenerator(ConstructorSelectors.MostSpecific);
            IInstanceProvider provider = new TransientInstanceProvider(typeof(object), generator);

            AssertTransientsAreDifferent(provider.GetInstance(), provider.GetInstance());
        }
Exemple #3
0
        public void ShouldCreateExpressionOnlyOnce()
        {
            IExpressionGenerator generator = new ConstructorExpressionGenerator(ConstructorSelectors.MostSpecific);
            IInstanceProvider provider = new TransientInstanceProvider(typeof(object), generator);
            Expression expr = null;
            generator.ExpressionGenerated += (sender, args) => { expr = args.Expression; };

            provider.GetInstance();

            Assert.NotNull(expr);
            Assert.AreSame(expr, provider.Expression);
        }