Example #1
0
            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);
        }
Example #3
0
        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));
            }
        }
Example #4
0
        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;
 }
Example #6
0
 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));
 }
Example #7
0
        private StrategyChain GetStrategies()
        {
            StrategyChain chain = new StrategyChain();

            chain.Add(new LifetimeStrategy());
            chain.Add(new SleepingStrategy());
            chain.Add(new NewObjectStrategy());
            return(chain);
        }
Example #8
0
        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);
        }
Example #10
0
            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);
            }
Example #11
0
            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);
            }
Example #12
0
 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());
 }
Example #13
0
        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;
 }
Example #18
0
 public BuilderOnThread(StrategyChain strategies, IPolicyList policies)
 {
     this.strategies = strategies;
     this.policies   = policies;
 }