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")); }
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>()); }
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")); }
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)); }
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")); }
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 RegistrationDoesNotPreventGarbageCollection() { IReadWriteLocator locator = new Locator(); locator.Add("foo", new object()); GC.Collect(); Assert.IsNull(locator.Get("foo")); }
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")); }
public void RetrievingARemovedObjectReturnsNull() { object o = new object(); IReadWriteLocator locator = new Locator(); locator.Add("Foo", o); locator.Remove("Foo"); Assert.IsNull(locator.Get("Foo")); }
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")); }
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); }
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")); }
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 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 AskingForAnUnregisterdObjectReturnsNull() { IReadWriteLocator locator = new Locator(); Assert.IsNull(locator.Get("Foo")); }
public void NullKeyOnGetThrows() { IReadWriteLocator locator = new Locator(); locator.Get(null); }
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))); }