public void ThrowsIfMissingBuilderBinding()
        {
            var builder = new StyletIoCBuilder();

            builder.Bind <C1>();
            Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer());
        }
Exemplo n.º 2
0
        /// <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();
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 6
0
        public void BuilderAddsBindingsFromModule()
        {
            var builder = new StyletIoCBuilder(new ModuleA());
            var ioc     = builder.BuildContainer();

            Assert.IsInstanceOf <C1>(ioc.Get <C1>());
        }
Exemplo n.º 7
0
        public void ThrowsIfMethodHasArgumentOtherThanString()
        {
            var builder = new StyletIoCBuilder();

            builder.Bind <IFactoryWithBadMethod>().ToAbstractFactory();
            Assert.Throws <StyletIoCCreateFactoryException>(() => builder.BuildContainer());
        }
Exemplo n.º 8
0
        public void ThrowsIfMethodReturningVoid()
        {
            var builder = new StyletIoCBuilder();

            builder.Bind <IFactoryWithVoidMethod>().ToAbstractFactory();
            Assert.Throws <StyletIoCCreateFactoryException>(() => builder.BuildContainer());
        }
Exemplo n.º 9
0
        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());
        }
Exemplo n.º 12
0
        public void ThrowsIfImplementationIsNotConcrete()
        {
            var builder = new StyletIoCBuilder();

            Assert.Throws <StyletIoCRegistrationException>(() => builder.Bind <I1>().To <I3>());
            Assert.Throws <StyletIoCRegistrationException>(() => builder.Bind <I1>().To <C4>());
        }
Exemplo n.º 13
0
        public void ThrowsIfTypeIsNull()
        {
            var builder = new StyletIoCBuilder();
            var ioc     = builder.BuildContainer();

            Assert.Throws <ArgumentNullException>(() => ioc.Get(null));
        }
Exemplo n.º 14
0
        public void ThrowsIfInterfaceNotPublic()
        {
            var builder = new StyletIoCBuilder();

            builder.Bind <IPrivateFactory>().ToAbstractFactory();
            Assert.Throws <StyletIoCCreateFactoryException>(() => builder.BuildContainer());
        }
Exemplo n.º 15
0
        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 <>)));
        }
Exemplo n.º 16
0
        public void AllowsInstanceTobeInterfaceType()
        {
            var builder = new StyletIoCBuilder();
            I1  i1      = new C1();

            Assert.DoesNotThrow(() => builder.Bind <I1>().ToInstance(i1));
        }
Exemplo n.º 17
0
        public void IContainerIsAvailable()
        {
            var builder = new StyletIoCBuilder();
            var ioc     = builder.BuildContainer();

            Assert.AreEqual(ioc, ioc.Get <IContainer>());
        }
Exemplo n.º 18
0
        public void GetAllDoesNotThrowIfNoRegistrationsFound()
        {
            var builder = new StyletIoCBuilder();
            var ioc     = builder.BuildContainer();

            Assert.DoesNotThrow(() => ioc.GetAll <IC1>());
        }
Exemplo n.º 19
0
        public void SupportsTwoInterfacesWithTheSameNames()
        {
            var builder = new StyletIoCBuilder();

            builder.Bind <I1>().ToAbstractFactory();
            builder.Bind <SubNamespace.I1Factory>().ToAbstractFactory();
            Assert.DoesNotThrow(() => builder.BuildContainer());
        }
Exemplo n.º 20
0
        public void SupportsBuildingTheSameBuilderTwice()
        {
            var builder = new StyletIoCBuilder();

            builder.Bind <I1>().ToAbstractFactory();
            builder.BuildContainer();
            Assert.DoesNotThrow(() => builder.BuildContainer());
        }
Exemplo n.º 21
0
        public void CompileThrowsIfFindConstructorExceptionAndThrowOnErrorIsTrue()
        {
            var builder = new StyletIoCBuilder();
            builder.Bind<C2>().ToSelf();
            var ioc = builder.BuildContainer();

            Assert.Throws<StyletIoCFindConstructorException>(() => ioc.Compile());
        }
Exemplo n.º 22
0
        public void CompileDoesNotThrowIfFindConstructorExceptionAndThrowOnErrorIsFalse()
        {
            var builder = new StyletIoCBuilder();
            builder.Bind<C2>().ToSelf();
            var ioc = builder.BuildContainer();

            Assert.DoesNotThrow(() => ioc.Compile(false));
        }
Exemplo n.º 23
0
        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());
        }
Exemplo n.º 25
0
        public void ThrowsIfSameBindingAppearsMultipleTimes()
        {
            var builder = new StyletIoCBuilder();

            builder.Bind <IC1>().To <C1>();
            builder.Bind <IC1>().To <C1>();
            Assert.Throws <StyletIoCRegistrationException>(() => builder.BuildContainer());
        }
Exemplo n.º 26
0
        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());
        }
Exemplo n.º 27
0
        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"));
        }
Exemplo n.º 29
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 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>());
        }
Exemplo n.º 37
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 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"));
        }
Exemplo n.º 40
0
        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>());
        }
Exemplo n.º 43
0
        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);
        }
Exemplo n.º 46
0
        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));
        }
Exemplo n.º 47
0
        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));
        }
Exemplo n.º 48
0
        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]);
        }
Exemplo n.º 50
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));
        }
Exemplo n.º 51
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));
        }
Exemplo n.º 52
0
 public void ThrowsIfSameBindingAppearsMultipleTimes()
 {
     var builder = new StyletIoCBuilder();
     builder.Bind<IC1>().To<C1>();
     builder.Bind<IC1>().To<C1>();
     Assert.Throws<StyletIoCRegistrationException>(() => builder.BuildContainer());
 }
Exemplo n.º 53
0
        public void IContainerIsAvailable()
        {
            var builder = new StyletIoCBuilder();
            var ioc = builder.BuildContainer();

            Assert.AreEqual(ioc, ioc.Get<IContainer>());
        }
Exemplo n.º 54
0
        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)));
        }
Exemplo n.º 55
0
        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);
        }
Exemplo n.º 56
0
        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);
        }
Exemplo n.º 57
0
 public void ThrowsIfTypeIsNull()
 {
     var builder = new StyletIoCBuilder();
     var ioc = builder.BuildContainer();
     Assert.Throws<ArgumentNullException>(() => ioc.Get(null));
 }
Exemplo n.º 58
0
 public void DoesNotThrowIfSameBindingAppearsMultipleTimesWithDifferentKeys()
 {
     var builder = new StyletIoCBuilder();
     builder.Bind<IC1>().To<C1>();
     builder.Bind<IC1>().To<C1>().WithKey("key");
     Assert.DoesNotThrow(() => builder.BuildContainer());
 }
Exemplo n.º 59
0
        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>());
        }
Exemplo n.º 60
0
        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);
        }