public void BuildChecksConcreteTypeAndNotRequestedType() { var strategy = new BuilderAwareStrategy(); var context = new MockBuilderContext(); var obj = new Aware(); context.Strategies.Add(strategy); context.ExecuteBuildUp(new NamedTypeBuildKey<Aware>(), obj); Assert.True(obj.OnBuiltUpWasCalled); Assert.False(obj.OnTearingDownWasCalled); }
public void BuildIgnoresClassWithoutInterface() { var strategy = new BuilderAwareStrategy(); var context = new MockBuilderContext(); var obj = new Ignorant(); context.Strategies.Add(strategy); context.ExecuteBuildUp(new NamedTypeBuildKey<Ignorant>(), obj); Assert.False(obj.OnBuiltUpWasCalled); Assert.False(obj.OnTearingDownWasCalled); }
public void StrategyGetsBuildPlanFromPolicySet() { MockBuilderContext context = new MockBuilderContext(); context.Strategies.Add(new BuildPlanStrategy()); object instance = new object(); ReturnInstanceBuildPlan plan = new ReturnInstanceBuildPlan(instance); context.Policies.Set<IBuildPlanPolicy>(plan, new NamedTypeBuildKey<object>()); object result = context.ExecuteBuildUp(new NamedTypeBuildKey<object>(), null); Assert.True(plan.BuildUpCalled); Assert.Same(instance, result); }
public void BuildCallsClassWithInterface() { var strategy = new BuilderAwareStrategy(); var context = new MockBuilderContext(); var obj = new Aware(); context.Strategies.Add(strategy); context.ExecuteBuildUp(new NamedTypeBuildKey<Aware>(), obj); Assert.True(obj.OnBuiltUpWasCalled); Assert.False(obj.OnTearingDownWasCalled); Assert.Equal(new NamedTypeBuildKey<Aware>(), obj.OnBuiltUpBuildKey); }
public void StrategyCreatesBuildPlanWhenItDoesntExist() { MockBuilderContext context = new MockBuilderContext(); context.Strategies.Add(new BuildPlanStrategy()); MockBuildPlanCreatorPolicy policy = new MockBuildPlanCreatorPolicy(); context.Policies.SetDefault<IBuildPlanCreatorPolicy>(policy); object result = context.ExecuteBuildUp(new NamedTypeBuildKey<object>(), null); Assert.NotNull(result); Assert.True(policy.PolicyWasCreated); IBuildPlanPolicy plan = context.Policies.Get<IBuildPlanPolicy>(new NamedTypeBuildKey(typeof(object))); Assert.NotNull(plan); }