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); }
private Locator CreateLocator() { Locator locator = new Locator(); LifetimeContainer lifetime = new LifetimeContainer(); locator.Add(typeof(ILifetimeContainer), lifetime); return(locator); }
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 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 RegistrationDoesNotPreventGarbageCollection() { IReadWriteLocator locator = new Locator(); locator.Add("foo", new object()); GC.Collect(); Assert.IsNull(locator.Get("foo")); }
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); }
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 RetrievingARemovedObjectReturnsNull() { object o = new object(); IReadWriteLocator locator = new Locator(); locator.Add("Foo", o); locator.Remove("Foo"); 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 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)); }
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); } } }
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 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); }
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")); }
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)); }
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); }
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")); }
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")); }
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); }
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); }
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()); }