Exemplo n.º 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"));
        }
Exemplo n.º 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>());
        }
Exemplo n.º 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"));
        }
Exemplo n.º 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));
        }
Exemplo n.º 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"));
        }
Exemplo n.º 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)));
        }
Exemplo n.º 7
0
        public void RegistrationDoesNotPreventGarbageCollection()
        {
            IReadWriteLocator locator = new Locator();

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

            Assert.IsNull(locator.Get("foo"));
        }
Exemplo n.º 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"));
        }
Exemplo n.º 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"));
        }
Exemplo n.º 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"));
        }
Exemplo n.º 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);
        }
Exemplo n.º 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"));
        }
Exemplo n.º 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);
        }
Exemplo n.º 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);
        }
Exemplo n.º 15
0
        public void AskingForAnUnregisterdObjectReturnsNull()
        {
            IReadWriteLocator locator = new Locator();

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

            locator.Get(null);
        }
Exemplo n.º 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)));
        }