public void ThrowsIfMissingBuilderBinding() { var builder = new StyletIoCBuilder(); builder.Bind <C1>(); Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer()); }
/// <summary> /// Carries out default configuration of StyletIoC. Override if you don't want to do this /// </summary> /// <param name="builder">StyletIoC builder to use to configure the container</param> protected virtual void DefaultConfigureIoC(StyletIoCBuilder builder) { // Mark these as weak-bindings, so the user can replace them if they want var viewManagerConfig = new ViewManagerConfig() { ViewFactory = this.GetInstance, ViewAssemblies = new List <Assembly>() { this.GetType().Assembly } }; builder.Bind <ViewManagerConfig>().ToInstance(viewManagerConfig).AsWeakBinding(); // Bind it to both IViewManager and to itself, so that people can get it with Container.Get<ViewManager>() builder.Bind <IViewManager>().And <ViewManager>().To <ViewManager>().AsWeakBinding(); builder.Bind <IWindowManagerConfig>().ToInstance(this).DisposeWithContainer(false).AsWeakBinding(); builder.Bind <IWindowManager>().To <WindowManager>().InSingletonScope().AsWeakBinding(); builder.Bind <IEventAggregator>().To <EventAggregator>().InSingletonScope().AsWeakBinding(); builder.Bind <IMessageBoxViewModel>().To <MessageBoxViewModel>().AsWeakBinding(); // Stylet's assembly isn't added to the container, so add this explicitly builder.Bind <MessageBoxView>().ToSelf(); builder.Autobind(); }
public void BuilderAddsBindingsFromModule() { var builder = new StyletIoCBuilder(new ModuleA()); var ioc = builder.BuildContainer(); Assert.IsInstanceOf<C1>(ioc.Get<C1>()); }
public void AutoBindWithNoAssembliesThrows() { var builder = new StyletIoCBuilder(); builder.Assemblies = null; Assert.Throws <StyletIoCRegistrationException>(() => builder.Autobind()); }
public void ToAllImplementationsThrowsIfNoImplementationsFound() { var builder = new StyletIoCBuilder(); builder.Bind <I5>().ToAllImplementations(); Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer()); }
public void BuilderAddsBindingsFromModule() { var builder = new StyletIoCBuilder(new ModuleA()); var ioc = builder.BuildContainer(); Assert.IsInstanceOf <C1>(ioc.Get <C1>()); }
public void ThrowsIfMethodHasArgumentOtherThanString() { var builder = new StyletIoCBuilder(); builder.Bind <IFactoryWithBadMethod>().ToAbstractFactory(); Assert.Throws <StyletIoCCreateFactoryException>(() => builder.BuildContainer()); }
public void ThrowsIfMethodReturningVoid() { var builder = new StyletIoCBuilder(); builder.Bind <IFactoryWithVoidMethod>().ToAbstractFactory(); Assert.Throws <StyletIoCCreateFactoryException>(() => builder.BuildContainer()); }
public void ThrowsIfServiceTypeIsNotInterface() { var builder = new StyletIoCBuilder(); builder.Bind <C1>().ToAbstractFactory(); Assert.Throws <StyletIoCCreateFactoryException>(() => builder.BuildContainer()); }
public void RejectsMultipleBindingsForTheSameType() { var builder = new StyletIoCBuilder(); builder.Bind <I11>().And <I11>().To <C1>(); Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer()); }
public void RejectsMultipleUnboundGenericBindings() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(I2 <>)).And(typeof(C2 <>)).To(typeof(C2 <>)).InSingletonScope(); Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer()); }
public void ThrowsIfImplementationIsNotConcrete() { var builder = new StyletIoCBuilder(); Assert.Throws <StyletIoCRegistrationException>(() => builder.Bind <I1>().To <I3>()); Assert.Throws <StyletIoCRegistrationException>(() => builder.Bind <I1>().To <C4>()); }
public void ThrowsIfTypeIsNull() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); Assert.Throws <ArgumentNullException>(() => ioc.Get(null)); }
public void ThrowsIfInterfaceNotPublic() { var builder = new StyletIoCBuilder(); builder.Bind <IPrivateFactory>().ToAbstractFactory(); Assert.Throws <StyletIoCCreateFactoryException>(() => builder.BuildContainer()); }
public void ThrowsIfUnboundTypesHaveDifferentNumbersOfTypeParameters() { var builder = new StyletIoCBuilder(); Assert.Throws <StyletIoCRegistrationException>(() => builder.Bind(typeof(I6 <>)).To(typeof(C7 <,>))); Assert.Throws <StyletIoCRegistrationException>(() => builder.Bind(typeof(I7 <,>)).To(typeof(C6 <>))); }
public void AllowsInstanceTobeInterfaceType() { var builder = new StyletIoCBuilder(); I1 i1 = new C1(); Assert.DoesNotThrow(() => builder.Bind <I1>().ToInstance(i1)); }
public void IContainerIsAvailable() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); Assert.AreEqual(ioc, ioc.Get <IContainer>()); }
public void GetAllDoesNotThrowIfNoRegistrationsFound() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); Assert.DoesNotThrow(() => ioc.GetAll <IC1>()); }
public void SupportsTwoInterfacesWithTheSameNames() { var builder = new StyletIoCBuilder(); builder.Bind <I1>().ToAbstractFactory(); builder.Bind <SubNamespace.I1Factory>().ToAbstractFactory(); Assert.DoesNotThrow(() => builder.BuildContainer()); }
public void SupportsBuildingTheSameBuilderTwice() { var builder = new StyletIoCBuilder(); builder.Bind <I1>().ToAbstractFactory(); builder.BuildContainer(); Assert.DoesNotThrow(() => builder.BuildContainer()); }
public void CompileThrowsIfFindConstructorExceptionAndThrowOnErrorIsTrue() { var builder = new StyletIoCBuilder(); builder.Bind<C2>().ToSelf(); var ioc = builder.BuildContainer(); Assert.Throws<StyletIoCFindConstructorException>(() => ioc.Compile()); }
public void CompileDoesNotThrowIfFindConstructorExceptionAndThrowOnErrorIsFalse() { var builder = new StyletIoCBuilder(); builder.Bind<C2>().ToSelf(); var ioc = builder.BuildContainer(); Assert.DoesNotThrow(() => ioc.Compile(false)); }
public void DoesNotThrowIfSameBindingAppearsMultipleTimesWithDifferentKeys() { var builder = new StyletIoCBuilder(); builder.Bind <IC1>().To <C1>(); builder.Bind <IC1>().To <C1>().WithKey("key"); Assert.DoesNotThrow(() => builder.BuildContainer()); }
public void ThrowsIfMultipleRegistrationsForUnboundGeneric() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(C1 <>)).ToSelf(); builder.Bind(typeof(C1 <>)).ToSelf(); Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer()); }
public void ThrowsIfSameBindingAppearsMultipleTimes() { var builder = new StyletIoCBuilder(); builder.Bind <IC1>().To <C1>(); builder.Bind <IC1>().To <C1>(); Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer()); }
public void FuncFactoryOfTransientWorksAsExpected() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); var ioc = builder.BuildContainer(); var func = ioc.Get<Func<C1>>(); Assert.AreNotEqual(func(), func()); }
public void FuncFactoryOfSingletonWorksAsExpected() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf().InSingletonScope(); var ioc = builder.BuildContainer(); var func = ioc.Get<Func<C1>>(); Assert.AreEqual(func(), func()); }
public void GivenKeyOverridesAttribute() { var builder = new StyletIoCBuilder(); builder.Bind<IC>().To<C3>(); builder.Bind<IC>().To<C4>().WithKey("key2"); var ioc = builder.BuildContainer(); Assert.IsInstanceOf<C4>(ioc.Get<IC>("key2")); }
public void BuilderAddsBindingsFromModulesAddedWithAddModules() { var builder = new StyletIoCBuilder(); builder.AddModules(new ModuleA(), new ModuleB()); var ioc = builder.BuildContainer(); Assert.IsInstanceOf<C1>(ioc.Get<C1>()); Assert.IsInstanceOf<C2>(ioc.Get<C2>()); }
public void SingletonMultipleInstanceBindingWorks() { var builder = new StyletIoCBuilder(); builder.Bind <I11>().And <C1>().ToInstance(new C1()); var ioc = builder.BuildContainer(); Assert.AreEqual(ioc.Get <C1>(), ioc.Get <I11>()); }
public void ThrowsIfCantResolveAttributedConstructor() { var builder = new StyletIoCBuilder(); builder.Bind <C6>().ToSelf(); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCFindConstructorException>(() => ioc.Get <C6>()); }
public void ResolvesSingletonUnboundGeneric() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(I1 <>)).To(typeof(C1 <>)).InSingletonScope(); var ioc = builder.BuildContainer(); Assert.AreEqual(ioc.Get <I1 <int> >(), ioc.Get <I1 <int> >()); }
public void ResolvesUnboundGenericFromKey() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(I1 <>)).To(typeof(C1 <>)).WithKey("test"); var ioc = builder.BuildContainer(); Assert.NotNull(ioc.Get <I1 <int> >("test")); }
public void AllowsMultipleBindingsWithDifferentKeys() { var builder = new StyletIoCBuilder(); builder.Bind <I11>().WithKey("foo").And <I11>().To <C1>().InSingletonScope(); var ioc = builder.BuildContainer(); Assert.AreEqual(ioc.Get <I11>(), ioc.Get <I11>("foo")); }
public void ResolvesSingleGenericType() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(C1 <>)).ToSelf(); var ioc = builder.BuildContainer(); Assert.DoesNotThrow(() => ioc.Get <C1 <int> >()); }
public void AutobindingDoesNotBindInterfaceTypes() { var builder = new StyletIoCBuilder(); builder.Autobind(); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCRegistrationException>(() => ioc.Get <I1>()); }
public void CompileSucceedsIfNoErrors() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); var ioc = builder.BuildContainer(); Assert.DoesNotThrow(() => ioc.Compile()); Assert.NotNull(ioc.Get<C1>()); }
public void ThrowsIfNoCtorAvailable() { var builder = new StyletIoCBuilder(); builder.Bind <C5>().ToSelf(); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCFindConstructorException>(() => ioc.Get <C5>()); }
public void AttributeIsUsed() { var builder = new StyletIoCBuilder(); builder.Bind<IC>().To<C3>(); builder.Bind<IC>().To<C4>(); var ioc = builder.BuildContainer(); Assert.IsInstanceOf<C4>(ioc.Get<IC>("key1")); }
public void FuncFactoryWorksForGetNoKey() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); var ioc = builder.BuildContainer(); var func = ioc.Get<Func<C1>>(); var result = func(); Assert.IsNotNull(result); }
public void GetReturnsKeyedType() { var builder = new StyletIoCBuilder(); builder.Bind<IC>().To<C1>().WithKey("key1"); builder.Bind<IC>().To<C2>().WithKey("key2"); var ioc = builder.BuildContainer(); Assert.IsInstanceOf<C1>(ioc.Get<IC>("key1")); Assert.IsInstanceOf<C2>(ioc.Get<IC>("key2")); }
public void InstanceBindingUsesInstanceToResolve() { var c1 = new C1(); var builder = new StyletIoCBuilder(); builder.Bind<I1>().ToInstance(c1); var ioc = builder.BuildContainer(); Assert.AreEqual(c1, ioc.Get<I1>()); Assert.AreEqual(c1, ioc.Get<I1>()); }
public void FuncFactoryWorksConstructorInjection() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); builder.Bind<C2>().ToSelf(); var ioc = builder.BuildContainer(); var c2 = ioc.Get<C2>(); var c1Func = c2.C1Func; Assert.IsNotNull(c1Func()); }
public void BuildsUpPrivateFields() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); var ioc = builder.BuildContainer(); var subject = new Subject2(); ioc.BuildUp(subject); Assert.IsInstanceOf<C1>(subject.GetC1()); }
public void BuildsUpPublicFields() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); var ioc = builder.BuildContainer(); var subject = new Subject1(); ioc.BuildUp(subject); Assert.IsInstanceOf<C1>(subject.C1); Assert.IsNull(subject.Ignored); }
public void SelfTransientBindingResolvesGeneric() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); var ioc = builder.BuildContainer(); var obj1 = ioc.Get<C1>(); var obj2 = ioc.Get<C1>(); Assert.That(obj1, Is.Not.Null); Assert.That(obj1, Is.Not.EqualTo(obj2)); }
public void SelfSingletonBindingResolvesTyped() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(C1)).ToSelf().InSingletonScope(); var ioc = builder.BuildContainer(); var obj1 = ioc.Get(typeof(C1)); var obj2 = ioc.Get(typeof(C1)); Assert.That(obj1, Is.Not.Null); Assert.That(obj1, Is.EqualTo(obj2)); }
public void FuncFactoryOfIEnumerableWorksAsExpected() { var builder = new StyletIoCBuilder(); builder.Bind<I1>().To<C11>(); builder.Bind<I1>().To<C12>(); var ioc = builder.BuildContainer(); var func = ioc.Get<Func<IEnumerable<I1>>>(); var results = func().ToList(); Assert.AreEqual(2, results.Count); Assert.IsInstanceOf<C11>(results[0]); Assert.IsInstanceOf<C12>(results[1]); }
public void GetAllReturnsKeyedTypes() { var builder = new StyletIoCBuilder(); builder.Bind<IC>().To<C1>().WithKey("key1"); builder.Bind<IC>().To<C2>().WithKey("key1"); builder.Bind<IC>().To<C3>(); var ioc = builder.BuildContainer(); var results = ioc.GetAll<IC>("key1").ToList(); Assert.AreEqual(results.Count, 2); Assert.IsInstanceOf<C1>(results[0]); Assert.IsInstanceOf<C2>(results[1]); }
public void ImplementationTransientBindingsResolveTyped() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(IC1)).To(typeof(C11)); builder.Bind(typeof(IC1)).To(typeof(C12)); builder.Bind(typeof(IC1)).To(typeof(C13)); builder.Bind(typeof(IC2)).To(typeof(C21)); var ioc = builder.BuildContainer(); var results1 = ioc.GetAll(typeof(IC1)).ToList(); var results2 = ioc.GetAll(typeof(IC1)).ToList(); Assert.AreEqual(3, results1.Count); Assert.IsInstanceOf<C11>(results1[0]); Assert.IsInstanceOf<C12>(results1[1]); Assert.IsInstanceOf<C13>(results1[2]); Assert.That(results1, Is.Not.EquivalentTo(results2)); }
public void SingletonBindingsResolveGeneric() { var builder = new StyletIoCBuilder(); builder.Bind<IC1>().To<C11>().InSingletonScope(); builder.Bind<IC1>().To<C12>().InSingletonScope(); builder.Bind<IC1>().To<C13>().InSingletonScope(); builder.Bind<IC2>().To<C21>().InSingletonScope(); var ioc = builder.BuildContainer(); var results1 = ioc.GetAll<IC1>().ToList(); var results2 = ioc.GetAll<IC1>().ToList(); Assert.AreEqual(3, results1.Count); Assert.IsInstanceOf<C11>(results1[0]); Assert.IsInstanceOf<C12>(results1[1]); Assert.IsInstanceOf<C13>(results1[2]); Assert.That(results1, Is.EquivalentTo(results2)); }
public void ThrowsIfSameBindingAppearsMultipleTimes() { var builder = new StyletIoCBuilder(); builder.Bind<IC1>().To<C1>(); builder.Bind<IC1>().To<C1>(); Assert.Throws<StyletIoCRegistrationException>(() => builder.BuildContainer()); }
public void IContainerIsAvailable() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); Assert.AreEqual(ioc, ioc.Get<IContainer>()); }
public void ContainerThrowsIfDisposedThenMethodCalled() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); ioc.Dispose(); Assert.Throws<ObjectDisposedException>(() => ioc.Get<C1>()); Assert.Throws<ObjectDisposedException>(() => ioc.Get(typeof(C1))); Assert.Throws<ObjectDisposedException>(() => ioc.GetTypeOrAll<C1>()); Assert.Throws<ObjectDisposedException>(() => ioc.GetTypeOrAll(typeof(C1))); }
public void SingletonRegistrationDisposesDisposableInstanceWhenParentDisposed() { var builder = new StyletIoCBuilder(); builder.Bind<C3>().ToSelf().InSingletonScope(); var ioc = builder.BuildContainer(); var c3 = ioc.Get<C3>(); ioc.Dispose(); Assert.IsTrue(c3.Disposed); }
public void CachedFactoryInstanceExpressionWorks() { // The factory's instance expression can be cached. This ensures that that works var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToFactory(x => new C1()); builder.Bind<C2>().ToSelf(); var ioc = builder.BuildContainer(); var c1 = ioc.Get<C1>(); var c2 = ioc.Get<C2>(); Assert.NotNull(c2.C1); Assert.AreNotEqual(c1, c2.C1); }
public void ThrowsIfTypeIsNull() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); Assert.Throws<ArgumentNullException>(() => ioc.Get(null)); }
public void DoesNotThrowIfSameBindingAppearsMultipleTimesWithDifferentKeys() { var builder = new StyletIoCBuilder(); builder.Bind<IC1>().To<C1>(); builder.Bind<IC1>().To<C1>().WithKey("key"); Assert.DoesNotThrow(() => builder.BuildContainer()); }
public void ThrowsIfMoreThanOneRegistrationFound() { var builder = new StyletIoCBuilder(); builder.Bind<IC1>().To<C1>(); builder.Bind<IC1>().To<C12>(); var ioc = builder.BuildContainer(); Assert.Throws<StyletIoCRegistrationException>(() => ioc.Get<IC1>()); }
public void DisposedSingletonRegistrationDoesNotRetainInstance() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf().InSingletonScope(); var ioc = builder.BuildContainer(); var weakRef = new WeakReference(ioc.Get<C1>()); ioc.Dispose(); GC.Collect(); Assert.IsFalse(weakRef.IsAlive); }