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));
        }
示例#4
0
        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());
        }
示例#11
0
 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"));
        } 
示例#13
0
        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>());
        }
示例#15
0
        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);
        }
示例#18
0
        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"));
        }
示例#19
0
        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"));
        }
示例#20
0
        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);
        }
示例#27
0
        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());
        }
示例#28
0
        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]);
        }
示例#49
0
        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));
        }
示例#50
0
        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);
        }