public void BuilderAddsBindingsFromModule() { var builder = new StyletIoCBuilder(new ModuleA()); var ioc = builder.BuildContainer(); Assert.IsInstanceOf<C1>(ioc.Get<C1>()); }
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 CompileThrowsIfFindConstructorExceptionAndThrowOnErrorIsTrue() { var builder = new StyletIoCBuilder(); builder.Bind <C2>().ToSelf(); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCFindConstructorException>(() => ioc.Compile()); }
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 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 ThrowsIfCanNotResolve() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); var subject = new Subject1(); Assert.Throws <StyletIoCRegistrationException>(() => ioc.BuildUp(subject)); }
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 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 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 CompileSucceedsIfNoErrors() { var builder = new StyletIoCBuilder(); builder.Bind<C1>().ToSelf(); var ioc = builder.BuildContainer(); Assert.DoesNotThrow(() => ioc.Compile()); Assert.NotNull(ioc.Get<C1>()); }
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 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 AutobindSearchesPassedAssemblie() { var builder = new StyletIoCBuilder(); builder.Assemblies = null; builder.Autobind(typeof(StyletIoCAutobindingTests).Assembly); var ioc = builder.BuildContainer(); Assert.IsInstanceOf <C11>(ioc.Get <C11>()); }
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 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 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 BindsWithKey() { var builder = new StyletIoCBuilder(); builder.Bind <I1Factory>().ToAbstractFactory().WithKey("hello"); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCRegistrationException>(() => ioc.Get <I1Factory>()); Assert.NotNull(ioc.Get <I1Factory>("hello")); }
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 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 ThrowsIfConstructorParamKeyNotRegistered() { var builder = new StyletIoCBuilder(); builder.Bind <C4>().ToSelf(); builder.Bind <C1>().ToSelf(); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCFindConstructorException>(() => ioc.Get <C4>()); }
public void ThrowsIfMoreThanOneCtorWithAttribute() { var builder = new StyletIoCBuilder(); builder.Bind <C1>().ToSelf(); builder.Bind <C7>().ToSelf(); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCFindConstructorException>(() => ioc.Get <C7>()); }
public void DoesNotChooseCopyConstructor() { var builder = new StyletIoCBuilder(); builder.Bind <C11>().ToSelf(); var ioc = builder.BuildContainer(); // This actually causes a StackOverflow on failure... Assert.Throws <StyletIoCFindConstructorException>(() => ioc.Get <C11>()); }
public void ResolvesGenericTypeWhenOrderOfTypeParamsChanged() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(I2 <,>)).To(typeof(C2 <,>)); var ioc = builder.BuildContainer(); var c2 = ioc.Get <I2 <int, bool> >(); Assert.IsInstanceOf <C2 <bool, int> >(c2); }
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 GetTypeOrAllReturnsSingleIfOneRegistration() { var builder = new StyletIoCBuilder(); builder.Bind <IC1>().To <C11>(); var ioc = builder.BuildContainer(); var result = ioc.GetTypeOrAll <IC1>(); Assert.IsInstanceOf <C11>(result); }
public void BoundGenericFactoriesWork() { var builder = new StyletIoCBuilder(); builder.Bind <I1>().To <C1>(); builder.Bind <IGenericFactory <I1> >().ToAbstractFactory(); var ioc = builder.BuildContainer(); var factory = ioc.Get <IGenericFactory <I1> >(); Assert.IsInstanceOf <C1>(factory.GetI1()); }
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 ThrowsIfResolvingParamFailsForSomeReason() { var builder = new StyletIoCBuilder(); builder.Bind <I1>().To <C1>(); builder.Bind <I1>().To <C2>(); builder.Bind <C9>().ToSelf(); var ioc = builder.BuildContainer(); Assert.Throws <StyletIoCRegistrationException>(() => ioc.Get <C9>()); }
public void ToAllImplementationsEnumerableWithNoAssembliesLooksInCallingAssembly() { var builder = new StyletIoCBuilder(); builder.Bind <I1>().ToAllImplementations((IEnumerable <Assembly>)null); var ioc = builder.BuildContainer(); var results = ioc.GetAll <I1>().ToList(); Assert.AreEqual(2, results.Count); }
public void ToAllImplementationsDoesNotThrowIfNoImplementationsFoundAndAllowZeroImplementationsIsTrue() { var builder = new StyletIoCBuilder(); builder.Bind <I5>().ToAllImplementations(allowZeroImplementations: true); IContainer ioc = null; Assert.DoesNotThrow(() => ioc = builder.BuildContainer()); Assert.DoesNotThrow(() => ioc.GetAll <I5>()); }
public void AutobindingBindsGenericTypes() { var builder = new StyletIoCBuilder(); builder.Autobind(); var ioc = builder.BuildContainer(); var result = ioc.Get <C21 <int> >(); Assert.IsInstanceOf <C21 <int> >(result); }
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 AutobindingBindsConcreteTypes() { var builder = new StyletIoCBuilder(); builder.Autobind(Enumerable.Empty <Assembly>()); var ioc = builder.BuildContainer(); var result = ioc.Get <C11>(); Assert.IsInstanceOf <C11>(result); }
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 AutobindingRespectsKeys() { var builder = new StyletIoCBuilder(); builder.Autobind(); var ioc = builder.BuildContainer(); var result = ioc.Get <C4>("Key"); Assert.IsInstanceOf <C4>(result); }
public void ResolvesGenericTypeFromInterface() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(I1 <>)).To(typeof(C1 <>)); var ioc = builder.BuildContainer(); var result = ioc.Get <I1 <int> >(); Assert.IsInstanceOf <C1 <int> >(result); }
public void FinalWithKeyAppliesToAllBindings() { var builder = new StyletIoCBuilder(); builder.Bind <I11>().And <C1>().To <C1>().WithKey("foo").InSingletonScope(); var ioc = builder.BuildContainer(); Assert.DoesNotThrow(() => ioc.Get <I11>("foo")); Assert.DoesNotThrow(() => ioc.Get <C1>("foo")); Assert.AreEqual(ioc.Get <I11>("foo"), ioc.Get <C1>("foo")); }
public void BindsGenericInterfaceToAllNonGenericImplementations() { var builder = new StyletIoCBuilder(); builder.Bind(typeof(I3 <>)).ToAllImplementations(); var ioc = builder.BuildContainer(); var c31 = ioc.Get <I3 <int> >(); Assert.IsInstanceOf <C31>(c31); }
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 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 ContainerDoesNotDisposeOfInstanceBindingIfNotRequested() { var c2 = new C2(); var builder = new StyletIoCBuilder(); builder.Bind <C2>().ToInstance(c2).DisposeWithContainer(false); var ioc = builder.BuildContainer(); ioc.Dispose(); Assert.False(c2.Disposed); }
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 UsesConstructorParamKeys() { var builder = new StyletIoCBuilder(); builder.Bind <C1>().ToSelf().WithKey("key1"); builder.Bind <C4>().ToSelf(); var ioc = builder.BuildContainer(); var c4 = ioc.Get <C4>(); Assert.IsInstanceOf <C1>(c4.C1); }
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 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 IContainerIsAvailable() { var builder = new StyletIoCBuilder(); var ioc = builder.BuildContainer(); Assert.AreEqual(ioc, ioc.Get<IContainer>()); }
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 ImplementationSingletonBindingResolvesGeneric() { var builder = new StyletIoCBuilder(); builder.Bind<IC1>().To<C1>().InSingletonScope(); var ioc = builder.BuildContainer(); var obj1 = ioc.Get<IC1>(); var obj2 = ioc.Get<IC1>(); Assert.That(obj1, Is.Not.Null); Assert.That(obj1, Is.EqualTo(obj2)); }
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); }