public void NullItem() { Builder builder = new Builder(); StrategyChain strategies = new StrategyChain(); builder.TearDown <object>(null, null, null, strategies, null); }
public void OrderingAcrossStagesForStrategyChain() { StagedStrategyChain <IBuilderStrategy, FakeStage> innerChain = new StagedStrategyChain <IBuilderStrategy, FakeStage>(); StagedStrategyChain <IBuilderStrategy, FakeStage> outerChain = new StagedStrategyChain <IBuilderStrategy, FakeStage>(innerChain); FakeStrategy innerStage1 = new FakeStrategy { Name = "innerStage1" }; FakeStrategy innerStage2 = new FakeStrategy { Name = "innerStage2" }; FakeStrategy outerStage1 = new FakeStrategy { Name = "outerStage1" }; FakeStrategy outerStage2 = new FakeStrategy { Name = "outerStage2" }; innerChain.Add(innerStage1, FakeStage.Stage1); innerChain.Add(innerStage2, FakeStage.Stage2); outerChain.Add(outerStage1, FakeStage.Stage1); outerChain.Add(outerStage2, FakeStage.Stage2); IStrategyChain chain = new StrategyChain(outerChain); AssertOrder(chain, innerStage1, outerStage1, innerStage2, outerStage2); }
public void ExceptionsThrownInPreTeardownGetTranslated() { StrategyChain chain = new StrategyChain(); chain.Add(new ThrowingStrategy("a")); chain.Add(new ThrowingStrategy("b")); PolicyList policies = new PolicyList(); policies.Set <IShouldThrowPolicy>(new ShouldThrowPolicy(false, false, true, false), "a"); policies.Set <IShouldThrowPolicy>(new ShouldThrowPolicy(false, true, false, false), "b"); Builder builder = new Builder(); try { builder.TearDown(null, null, policies, chain, new object()); Assert.Fail("Expected exception did not occur"); } catch (BuildFailedException ex) { Assert.AreEqual(typeof(ThrowingStrategy).Name, ex.ExecutingStrategyTypeName); Assert.AreEqual(1, ex.ExecutingStrategyIndex); Assert.IsInstanceOfType(ex.InnerException, typeof(Exception)); } }
public void ExceptionsThrownDuringBuildGetTranslated() { StrategyChain chain = new StrategyChain(); chain.Add(new ThrowingStrategy("a")); PolicyList policies = new PolicyList(); policies.Set <IShouldThrowPolicy>(new ShouldThrowPolicy(true, false, false, false), "a"); Builder builder = new Builder(); try { builder.BuildUp(null, null, policies, chain, typeof(object), null); Assert.Fail("Expected exception did not occur"); } catch (BuildFailedException ex) { StringAssert.Contains(ex.BuildKey, typeof(object).Name); Assert.AreEqual(typeof(ThrowingStrategy).Name, ex.ExecutingStrategyTypeName); Assert.AreEqual(0, ex.ExecutingStrategyIndex); Assert.IsInstanceOfType(ex.InnerException, typeof(Exception)); } }
private StrategyChain GetStrategies() { StrategyChain chain = new StrategyChain(); chain.Add(new LifetimeStrategy()); chain.Add(new SleepingStrategy()); chain.Add(new NewObjectStrategy()); return chain; }
public void SetUp() { strategyChain = new StrategyChain(); strategyChain.Add(new ConfiguredObjectStrategy()); strategyChain.Add(new MockBuilderStrategy()); policyList = new PolicyList(); source = new DictionaryConfigurationSource(); policyList.Set <IConfigurationObjectPolicy>(new ConfigurationObjectPolicy(source), typeof(IConfigurationSource)); }
private StrategyChain GetStrategies() { StrategyChain chain = new StrategyChain(); chain.Add(new LifetimeStrategy()); chain.Add(new SleepingStrategy()); chain.Add(new NewObjectStrategy()); return(chain); }
private BuilderContext GetContext(IUnityContainer container, object buildKey) { StrategyChain strategies = new StrategyChain(); strategies.Add(new ReturnContainerStrategy(container)); PolicyList persistentPolicies = new PolicyList(); PolicyList transientPolicies = new PolicyList(persistentPolicies); return(new BuilderContext(strategies, null, null, persistentPolicies, transientPolicies, buildKey, null)); }
public void InnerStrategiesComeBeforeOuterStrategiesInStrategyChain() { StagedStrategyChain <IBuilderStrategy, FakeStage> innerChain = new StagedStrategyChain <IBuilderStrategy, FakeStage>(); StagedStrategyChain <IBuilderStrategy, FakeStage> outerChain = new StagedStrategyChain <IBuilderStrategy, FakeStage>(innerChain); FakeStrategy innerStrategy = new FakeStrategy(); FakeStrategy outerStrategy = new FakeStrategy(); innerChain.Add(innerStrategy, FakeStage.Stage1); outerChain.Add(outerStrategy, FakeStage.Stage1); IStrategyChain chain = new StrategyChain(outerChain); AssertOrder(chain, innerStrategy, outerStrategy); }
public void StrategiesRunInReverseOrder() { Builder builder = new Builder(); StrategyChain strategies = new StrategyChain(); strategies.Add(new StringConcatStrategy("1")); strategies.Add(new StringConcatStrategy("2")); strategies.Add(new StringConcatStrategy("3")); strategies.Add(new StringConcatStrategy("4")); string s = builder.TearDown(null, null, null, strategies, ""); Assert.AreEqual("4321", s); }
public void StrategyStagesRunInProperOrder() { Builder builder = new Builder(); StrategyChain strategies = new StrategyChain(); strategies.Add(new StringConcatStrategy("1")); strategies.Add(new StringConcatStrategy("2")); strategies.Add(new StringConcatStrategy("3")); strategies.Add(new StringConcatStrategy("4")); string s = builder.BuildUp <string>(null, null, null, strategies, null, null); Assert.AreEqual("1234", s); }
void InitializeStrategyChain() { _strategyChain = new StrategyChain(); _strategyChain.Link(new TypeStrategyComparisonLink()); _strategyChain.Link(new MemberComparisonLink()); _strategyChain.Link(new ReferenceEqualsComparisonLink()); _strategyChain.Link(new NullExpectedComparisonLink()); _strategyChain.Link(new ComparisonComparisonLink()); _strategyChain.Link(new MissingComparisonLink()); _strategyChain.Link(new InstanceOfTypeComparisonLink()); _strategyChain.Link(new LeafInstanceOfTypeComparisonLink()); _strategyChain.Link(new NullActualComparisonLink()); _strategyChain.Link(new StrategyComparisonLink()); _strategyChain.Link(new TrueLink()); }
public void SingletonReturnsSameValueWhenCalledInMultipleThreads() { StrategyChain strategies = GetStrategies(); IPolicyList policies = GetPolicies(); BuilderOnThread threadResults1 = new BuilderOnThread(strategies, policies); BuilderOnThread threadResults2 = new BuilderOnThread(strategies, policies); Task task1 = new Task(threadResults1.Build); Task task2 = new Task(threadResults2.Build); task1.Start(); task2.Start(); Task.WaitAll(task1, task2); Assert.Same(threadResults1.Result, threadResults2.Result); }
public void SingletonReturnsSameValueWhenCalledInMultipleThreads() { StrategyChain strategies = GetStrategies(); IPolicyList policies = GetPolicies(); BuilderOnThread threadResults1 = new BuilderOnThread(strategies, policies); BuilderOnThread threadResults2 = new BuilderOnThread(strategies, policies); Thread thread1 = new Thread(new ThreadStart(threadResults1.Build)); Thread thread2 = new Thread(new ThreadStart(threadResults2.Build)); thread1.Start(); thread2.Start(); thread1.Join(); thread2.Join(); Assert.AreSame(threadResults1.Result, threadResults2.Result); }
public void MultipleChildContainers() { StagedStrategyChain <IBuilderStrategy, FakeStage> innerChain = new StagedStrategyChain <IBuilderStrategy, FakeStage>(); StagedStrategyChain <IBuilderStrategy, FakeStage> outerChain = new StagedStrategyChain <IBuilderStrategy, FakeStage>(innerChain); StagedStrategyChain <IBuilderStrategy, FakeStage> superChain = new StagedStrategyChain <IBuilderStrategy, FakeStage>(outerChain); FakeStrategy innerStrategy = new FakeStrategy { Name = "innerStrategy" }; FakeStrategy outerStrategy = new FakeStrategy { Name = "outerStrategy" }; FakeStrategy superStrategy = new FakeStrategy { Name = "superStrategy" }; innerChain.Add(innerStrategy, FakeStage.Stage1); outerChain.Add(outerStrategy, FakeStage.Stage1); superChain.Add(superStrategy, FakeStage.Stage1); IStrategyChain chain = new StrategyChain(superChain); AssertOrder(chain, innerStrategy, outerStrategy, superStrategy); }
private BuilderContext GetContext(IUnityContainer container, NamedTypeBuildKey buildKey) { StrategyChain strategies = new StrategyChain(); strategies.Add(new ReturnContainerStrategy(container)); PolicyList persistentPolicies = new PolicyList(); PolicyList transientPolicies = new PolicyList(persistentPolicies); return new BuilderContext(strategies, null, persistentPolicies, transientPolicies, buildKey, null); }
public BuilderOnThread(StrategyChain strategies, IPolicyList policies) { this.strategies = strategies; this.policies = policies; }