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); }
public void TransientShouldCreateNewObjectEveryTime() { IExpressionGenerator generator = new ConstructorExpressionGenerator(ConstructorSelectors.MostSpecific); IInstanceProvider provider = new TransientInstanceProvider(typeof(object), generator); AssertTransientsAreDifferent(provider.GetInstance(), provider.GetInstance()); }
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); }