Пример #1
0
        public void CreationPolicyWillRecordSingletonsUsingLocalLifetimeContainerOnly()
        {
            BuilderStrategyChain chain = new BuilderStrategyChain();

            chain.Add(new CreationStrategy());

            Locator           parentLocator = new Locator();
            LifetimeContainer container     = new LifetimeContainer();

            parentLocator.Add(typeof(ILifetimeContainer), container);

            Locator childLocator = new Locator(parentLocator);

            PolicyList policies = new PolicyList();

            policies.SetDefault <ICreationPolicy>(new DefaultCreationPolicy());
            policies.SetDefault <ISingletonPolicy>(new SingletonPolicy(true));

            BuilderContext ctx = new BuilderContext(chain, childLocator, policies);

            object obj = ctx.HeadOfChain.BuildUp(ctx, typeof(object), null, null);

            Assert.IsNotNull(obj);
            Assert.IsNull(childLocator.Get(new DependencyResolutionLocatorKey(typeof(object), null)));
        }
        public void BuildUpReturnsInstanceOfStateValueWithCorrespondantValueFromSessionWhenInjectingProperties()
        {
            Locator locator = new Locator();
            LifetimeContainer container = new LifetimeContainer();
            locator.Add(typeof (ILifetimeContainer), container);
            WCSFBuilder builder = new WCSFBuilder();
            builder.Policies.SetDefault<ISingletonPolicy>(new SingletonPolicy(true));
            MockSessionStateLocatorService stateLocator = new MockSessionStateLocatorService();
            locator.Add(new DependencyResolutionLocatorKey(typeof (ISessionStateLocatorService), null), stateLocator);

            stateLocator.SessionState["intKey"] = 5;
            SampleClass builtObject =
                builder.BuildUp(locator, typeof (SampleClass), Guid.NewGuid().ToString(), null) as SampleClass;

            Assert.IsNotNull(builtObject.MyIntValue);
            Assert.AreEqual(5, builtObject.MyIntValue.Value);
        }
Пример #3
0
        private Locator CreateLocator()
        {
            Locator           locator  = new Locator();
            LifetimeContainer lifetime = new LifetimeContainer();

            locator.Add(typeof(ILifetimeContainer), lifetime);
            return(locator);
        }
Пример #4
0
        public void CanRegisterObjectByType()
        {
            object            o       = new object();
            IReadWriteLocator locator = new Locator();

            locator.Add(typeof(object), o);
            Assert.IsNotNull(locator.Get <object>());
            Assert.AreSame(o, locator.Get <object>());
        }
Пример #5
0
        public void CanRegisterObjectByStringKey()
        {
            object            o       = new object();
            IReadWriteLocator locator = new Locator();

            locator.Add("Bar", o);
            Assert.IsNotNull(locator.Get("Bar"));
            Assert.AreSame(o, locator.Get("Bar"));
        }
Пример #6
0
        public void RegistrationDoesNotPreventGarbageCollection()
        {
            IReadWriteLocator locator = new Locator();

            locator.Add("foo", new object());
            GC.Collect();

            Assert.IsNull(locator.Get("foo"));
        }
Пример #7
0
        public void CanFindOutIfContainsAKey()
        {
            object            o       = new object();
            IReadWriteLocator locator = new Locator();

            locator.Add("foo", o);
            Assert.IsTrue(locator.Contains("foo"));
            Assert.IsFalse(locator.Contains("foo2"));
        }
        public void LocalSearchFailsIfDependencyIsOnlyUpstream()
        {
            Locator parent = new Locator();

            parent.Add(new DependencyResolutionLocatorKey(typeof(int), null), 25);
            Locator            child   = new Locator(parent);
            MockBuilderContext context = CreateContext(child);

            context.HeadOfChain.BuildUp(context, typeof(SearchLocalMockObject), null, null);
        }
        public void CanSearchDependencyUp()
        {
            Locator parent = new Locator();

            parent.Add(new DependencyResolutionLocatorKey(typeof(int), null), 25);
            Locator            child   = new Locator(parent);
            MockBuilderContext context = CreateContext(child);

            context.HeadOfChain.BuildUp(context, typeof(SearchUpMockObject), null, null);
        }
Пример #10
0
        public void CanRegisterObjectByTypeAndID()
        {
            object            o                = new object();
            IReadWriteLocator locator          = new Locator();
            DependencyResolutionLocatorKey key = new DependencyResolutionLocatorKey(typeof(object), "foo");

            locator.Add(key, o);
            Assert.IsNotNull(locator.Get(key));
            Assert.AreSame(o, locator.Get(key));
        }
Пример #11
0
        public void RetrievingARemovedObjectReturnsNull()
        {
            object            o       = new object();
            IReadWriteLocator locator = new Locator();

            locator.Add("Foo", o);
            locator.Remove("Foo");

            Assert.IsNull(locator.Get("Foo"));
        }
Пример #12
0
        public void DefaultBehaviorIsAskingParent()
        {
            object            o            = new object();
            IReadWriteLocator rootLocator  = new Locator();
            IReadWriteLocator childLocator = new Locator(rootLocator);

            rootLocator.Add("fiz", o);

            Assert.IsNotNull(childLocator.Get("fiz"));
        }
Пример #13
0
        public void CanCallContainsThroughParent()
        {
            object            o            = new object();
            IReadWriteLocator rootLocator  = new Locator();
            IReadWriteLocator childLocator = new Locator(rootLocator);

            rootLocator.Add("froz", o);

            Assert.IsFalse(childLocator.Contains("froz", SearchMode.Local));
            Assert.IsTrue(childLocator.Contains("froz", SearchMode.Up));
        }
Пример #14
0
 private void FindInLocator(Predicate <KeyValuePair <object, object> > predicate, Locator results,
                            IReadableLocator currentLocator)
 {
     foreach (KeyValuePair <object, object> kvp in currentLocator)
     {
         if (!results.Contains(kvp.Key) && predicate(kvp))
         {
             results.Add(kvp.Key, kvp.Value);
         }
     }
 }
Пример #15
0
        public void GetCanAskParentLocatorForAnObject()
        {
            object            o            = new object();
            IReadWriteLocator rootLocator  = new Locator();
            IReadWriteLocator childLocator = new Locator(rootLocator);

            rootLocator.Add("Foo", o);
            object result = childLocator.Get("Foo", SearchMode.Up);

            Assert.IsNotNull(result);
            Assert.AreSame(o, result);
        }
Пример #16
0
        public void TripleNestedLocators()
        {
            object            o                 = new object();
            IReadWriteLocator rootLocator       = new Locator();
            IReadWriteLocator childLocator      = new Locator(rootLocator);
            IReadWriteLocator grandchildLocator = new Locator(childLocator);

            rootLocator.Add("bar", o);

            object result = grandchildLocator.Get("bar", SearchMode.Up);

            Assert.IsNotNull(result);
            Assert.AreSame(o, result);
        }
        public void CanCreateSingletonObjectWithDefaultObjectBuilder()
        {
            WCSFBuilder builder = new WCSFBuilder();
            Locator locator = new Locator();
            LifetimeContainer lifetime = new LifetimeContainer();
            locator.Add(typeof (ILifetimeContainer), lifetime);

            builder.Policies.Set<ISingletonPolicy>(new SingletonPolicy(true), typeof (MockObject), "foo");

            MockObject obj1 = builder.BuildUp<MockObject>(locator, "foo", null);
            MockObject obj2 = builder.BuildUp<MockObject>(locator, "foo", null);

            Assert.AreSame(obj1, obj2);
        }
        public void LocalSearchGetsLocalIfDependencyIsAlsoUpstream()
        {
            Locator parent = new Locator();

            parent.Add(new DependencyResolutionLocatorKey(typeof(int), null), 25);
            Locator child = new Locator(parent);

            child.Add(new DependencyResolutionLocatorKey(typeof(int), null), 15);
            MockBuilderContext context = CreateContext(child);

            SearchLocalMockObject obj = (SearchLocalMockObject)context.HeadOfChain.BuildUp(context, typeof(SearchLocalMockObject), null, null);

            Assert.AreEqual(15, obj.Value);
        }
Пример #19
0
        public void CanFindByPredicate()
        {
            bool              wasCalled = false;
            object            o1        = new object();
            object            o2        = new object();
            IReadWriteLocator locator   = new Locator();

            locator.Add("foo1", o1);
            locator.Add("foo2", o2);

            IReadableLocator results;

            results = locator.FindBy(
                delegate(KeyValuePair <object, object> kvp)
            {
                wasCalled = true;
                return(kvp.Key.Equals("foo1"));
            });

            Assert.IsNotNull(results);
            Assert.IsTrue(wasCalled);
            Assert.AreEqual(1, results.Count);
            Assert.AreSame(o1, results.Get("foo1"));
        }
Пример #20
0
        public void AskingParentStopsAsSoonAsWeFindAMatch()
        {
            object            o1                = new object();
            object            o2                = new object();
            IReadWriteLocator rootLocator       = new Locator();
            IReadWriteLocator childLocator      = new Locator(rootLocator);
            IReadWriteLocator grandchildLocator = new Locator(childLocator);

            rootLocator.Add("foo", o1);
            childLocator.Add("foo", o2);

            object result = grandchildLocator.Get("foo", SearchMode.Up);

            Assert.IsNotNull(result);
            Assert.AreSame(o2, result);
        }
        public void RequestForLogWriterWithLocatorAddsSingleton()
        {
            Locator locator = new Locator();
            LifetimeContainer container = new LifetimeContainer();
            locator.Add(typeof(ILifetimeContainer), container);

            MockBuilderContext context = CreateContext(locator, new SystemConfigurationSource());

            createdObject1
                = context.HeadOfChain.BuildUp(context, typeof(LogWriter), null, null);
            createdObject2
                = context.HeadOfChain.BuildUp(context, typeof(LogWriter), null, null);

            Assert.IsNotNull(createdObject1);
            Assert.AreSame(typeof(LogWriter), createdObject1.GetType());
            Assert.IsTrue(object.ReferenceEquals(createdObject1, createdObject2));
        }
Пример #22
0
        public void DefaultFindByBehaviorIsAskParent()
        {
            object            o            = new object();
            IReadWriteLocator rootLocator  = new Locator();
            IReadWriteLocator childLocator = new Locator(rootLocator);

            rootLocator.Add("foo", o);

            IReadableLocator results;

            results = childLocator.FindBy(delegate(KeyValuePair <object, object> kvp)
            {
                return(true);
            });

            Assert.AreEqual(1, results.Count);
        }
Пример #23
0
        public void FindingByPredicateCanClimbTheTree()
        {
            object            o            = new object();
            IReadWriteLocator rootLocator  = new Locator();
            IReadWriteLocator childLocator = new Locator(rootLocator);

            rootLocator.Add("bar", o);

            IReadableLocator results;

            results = childLocator.FindBy(
                SearchMode.Up,
                delegate(KeyValuePair <object, object> kvp)
            {
                return(true);
            });

            Assert.AreEqual(1, results.Count);
            Assert.AreSame(o, results.Get("bar"));
        }
Пример #24
0
        public void FindingByPredicateReturnsClosestResultsOnDuplicateKey()
        {
            object            o1           = new object();
            object            o2           = new object();
            IReadWriteLocator rootLocator  = new Locator();
            IReadWriteLocator childLocator = new Locator(rootLocator);

            rootLocator.Add("foo", o1);
            childLocator.Add("foo", o2);

            IReadableLocator results;

            results = childLocator.FindBy(
                SearchMode.Up,
                delegate(KeyValuePair <object, object> kvp)
            {
                return(true);
            });

            Assert.AreEqual(1, results.Count);
            Assert.AreSame(o2, results.Get("foo"));
        }
Пример #25
0
        public void FindingByPredicateCanFindsResultsFromBothParentAndChild()
        {
            object            o            = new object();
            string            s            = "Hello world";
            IReadWriteLocator rootLocator  = new Locator();
            IReadWriteLocator childLocator = new Locator(rootLocator);

            rootLocator.Add("foo", o);
            childLocator.Add("bar", s);

            IReadableLocator results;

            results = childLocator.FindBy(
                SearchMode.Up,
                delegate(KeyValuePair <object, object> kvp)
            {
                return(true);
            });

            Assert.AreEqual(2, results.Count);
            Assert.AreSame(o, results.Get("foo"));
            Assert.AreSame(s, results.Get("bar"));
        }
        public void BuildUpReturnsNewInstanceOfStateValue()
        {
            Locator locator = new Locator();
            LifetimeContainer container = new LifetimeContainer();
            locator.Add(typeof (ILifetimeContainer), container);
            WCSFBuilder builder = new WCSFBuilder();
            builder.Policies.SetDefault<ISingletonPolicy>(new SingletonPolicy(true));
            MockSessionStateLocatorService stateLocator = new MockSessionStateLocatorService();
            locator.Add(new DependencyResolutionLocatorKey(typeof (ISessionStateLocatorService), null), stateLocator);

            SampleClass builtObject =
                builder.BuildUp(locator, typeof (SampleClass), Guid.NewGuid().ToString(), null) as SampleClass;

            Assert.IsNotNull(builtObject.MyStringValue);
        }
 private Locator CreateLocator(ILifetimeContainer lifetimeContainer)
 {
     Locator locator = new Locator();
     locator.Add(typeof (ILifetimeContainer), lifetimeContainer);
     return locator;
 }
        public void LocalSearchGetsLocalIfDependencyIsAlsoUpstream()
        {
            Locator parent = new Locator();
            object parentValue = 25;
            object childValue = 15;
            parent.Add(new DependencyResolutionLocatorKey(typeof (int), null), parentValue);
            Locator child = new Locator(parent);
            child.Add(new DependencyResolutionLocatorKey(typeof (int), null), childValue);
            MockBuilderContext context = CreateContext(child);

            SearchLocalMockObject obj =
                (SearchLocalMockObject) context.HeadOfChain.BuildUp(context, typeof (SearchLocalMockObject), null, null);

            Assert.AreEqual(15, obj.Value);
        }
Пример #29
0
        public void NullValueOnAddThrows()
        {
            IReadWriteLocator locator = new Locator();

            locator.Add(1, null);
        }
        public void LocalSearchFailsIfDependencyIsOnlyUpstream()
        {
            Locator parent = new Locator();
            object parentValue = 25;
            parent.Add(new DependencyResolutionLocatorKey(typeof (int), null), parentValue);
            Locator child = new Locator(parent);
            MockBuilderContext context = CreateContext(child);

            context.HeadOfChain.BuildUp(context, typeof (SearchLocalMockObject), null, null);
        }
        public void CreationPolicyWillRecordSingletonsUsingLocalLifetimeContainerOnly()
        {
            BuilderStrategyChain chain = new BuilderStrategyChain();
            chain.Add(new CreationStrategy());

            Locator parentLocator = new Locator();
            LifetimeContainer container = new LifetimeContainer();
            parentLocator.Add(typeof (ILifetimeContainer), container);

            Locator childLocator = new Locator(parentLocator);

            PolicyList policies = new PolicyList();
            policies.SetDefault<ICreationPolicy>(new DefaultCreationPolicy());
            policies.SetDefault<ISingletonPolicy>(new SingletonPolicy(true));

            BuilderContext ctx = new BuilderContext(chain, childLocator, policies);

            object obj = ctx.HeadOfChain.BuildUp(ctx, typeof (object), null, null);

            Assert.IsNotNull(obj);
            Assert.IsNull(childLocator.Get(new DependencyResolutionLocatorKey(typeof (object), null)));
        }
        public void CanSearchDependencyUp()
        {
            Locator parent = new Locator();
            object intValue = 25;
            parent.Add(new DependencyResolutionLocatorKey(typeof (int), null), intValue);
            Locator child = new Locator(parent);
            MockBuilderContext context = CreateContext(child);

            context.HeadOfChain.BuildUp(context, typeof (SearchUpMockObject), null, null);
        }
        public void BuildUpThrowsWhenTryingToInjectNonIStateValueParameters()
        {
            Locator locator = new Locator();
            LifetimeContainer container = new LifetimeContainer();
            locator.Add(typeof (ILifetimeContainer), container);
            WCSFBuilder builder = new WCSFBuilder();
            builder.Policies.SetDefault<ISingletonPolicy>(new SingletonPolicy(true));
            locator.Add(new DependencyResolutionLocatorKey(typeof (ISessionStateLocatorService), null),
                        new MockSessionStateLocatorService());

            builder.BuildUp(locator, typeof (InvalidClass), Guid.NewGuid().ToString(), null);
        }
Пример #34
0
        public void NullKeyOnAddThrows()
        {
            IReadWriteLocator locator = new Locator();

            locator.Add(null, 1);
        }
        public void CanSearchDependencyUp()
        {
            Locator parent = new Locator();

            // We're having a problem with this test intermittently failing.
            // Since the locator is a weak referencing container, our current
            // theory is that the GC is collecting this dependency before
            // the buildup call runs. By boxing it explicitly, we can keep
            // the object alive until after the test completes.
            object intValue = 25;

            parent.Add(new DependencyResolutionLocatorKey(typeof (int), null), intValue);
            Locator child = new Locator(parent);
            MockBuilderContext context = CreateContext(child);
            GC.Collect();
            context.HeadOfChain.BuildUp(context, typeof (SearchUpMockObject), null, null);
            GC.KeepAlive(intValue);
        }
        private TestableServiceCollection CreateServiceCollection()
        {
            LifetimeContainer container = new LifetimeContainer();
            Locator locator = new Locator();
            locator.Add(typeof (ILifetimeContainer), container);

            return new TestableServiceCollection(container, locator, CreateBuilder());
        }