Beispiel #1
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"));
        }
Beispiel #2
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>());
        }
Beispiel #3
0
        public void CanAddSameObjectTwiceWithDifferentKeys()
        {
            object            o       = new object();
            IReadWriteLocator locator = new Locator();

            locator.Add("foo1", o);
            locator.Add("foo2", o);

            Assert.AreSame(locator.Get("foo1"), locator.Get("foo2"));
        }
Beispiel #4
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));
        }
Beispiel #5
0
        public void CanRegisterTwoObjectsWithDifferentKeys()
        {
            object            o1      = new object();
            object            o2      = new object();
            IReadWriteLocator locator = new Locator();

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

            Assert.AreSame(o1, locator.Get("foo1"));
            Assert.AreSame(o2, locator.Get("foo2"));
        }
Beispiel #6
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)));
        }
Beispiel #7
0
        public void RegistrationDoesNotPreventGarbageCollection()
        {
            IReadWriteLocator locator = new Locator();

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

            Assert.IsNull(locator.Get("foo"));
        }
Beispiel #8
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"));
        }
Beispiel #9
0
        public void RetrievingARemovedObjectReturnsNull()
        {
            object            o       = new object();
            IReadWriteLocator locator = new Locator();

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

            Assert.IsNull(locator.Get("Foo"));
        }
Beispiel #10
0
        public void RegisteringAnObjectWithTwoKeysAndRemovingOneKeyLeavesTheOtherOneInTheLocator()
        {
            object            o       = new object();
            IReadWriteLocator locator = new Locator();

            locator.Add("foo1", o);
            locator.Add("foo2", o);
            locator.Remove("foo1");

            Assert.AreSame(o, locator.Get("foo2"));
        }
Beispiel #11
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);
        }
Beispiel #12
0
        public void RemovingOneObjectDoesntAffectOtherObjects()
        {
            object            o1      = new object();
            object            o2      = new object();
            IReadWriteLocator locator = new Locator();

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

            Assert.IsTrue(locator.Remove("foo1"));
            Assert.AreSame(o2, locator.Get("foo2"));
        }
Beispiel #13
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);
        }
Beispiel #14
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);
        }
Beispiel #15
0
        public void AskingForAnUnregisterdObjectReturnsNull()
        {
            IReadWriteLocator locator = new Locator();

            Assert.IsNull(locator.Get("Foo"));
        }
Beispiel #16
0
        public void NullKeyOnGetThrows()
        {
            IReadWriteLocator locator = new Locator();

            locator.Get(null);
        }
Beispiel #17
0
        public void BadSearchModeOnGetThrows()
        {
            IReadWriteLocator locator = new Locator();

            locator.Get(1, (SearchMode)254);
        }
        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)));
        }