Exemplo n.º 1
0
        public void RegisterInstanceIsFluent()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var newContainer = iocContainer.RegisterInstance <IFoo>(new Foo());

            Assert.AreSame(iocContainer, newContainer);
        }
Exemplo n.º 2
0
        public void GenericTryResolveUnregisteredInterfaceReturnsNull()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var instance = iocContainer.TryResolve <IFoo>();

            Assert.IsNull(instance, "Instance should be null");
        }
Exemplo n.º 3
0
        public void CanRegisterByType()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var newContainer = iocContainer.Register <IFoo>(typeof(Foo));

            Assert.AreSame(iocContainer, newContainer);
        }
Exemplo n.º 4
0
        public void CanRegisterByType()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var newContainer = iocContainer.Register<IFoo>(typeof(Foo));

            Assert.AreSame(iocContainer, newContainer);
        }
Exemplo n.º 5
0
        public void RegisterIsFluent()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var newContainer = iocContainer.Register <IFoo, Foo>();

            Assert.AreSame(iocContainer, newContainer);
        }
Exemplo n.º 6
0
        public void TryResolveUnregisteredInterfaceWithKeyReturnsNull()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var instance = iocContainer.TryResolve(typeof(IFoo), "SomeKey");

            Assert.IsNull(instance, "Instance should be null");
        }
Exemplo n.º 7
0
        public void ContainerCanResolveUnregisteredConcreteTypes()
        {
            var iocContainer = new MicroIocContainer();

            var instance = iocContainer.Resolve <Foo>();

            Assert.IsNotNull(instance);
            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
Exemplo n.º 8
0
        public void ResoveCreatesItemOfRequiredType()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>();

            var instance = iocContainer.Resolve <IFoo>();

            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
Exemplo n.º 9
0
        public void GenericTryResolveRegisteredInterfaceWithInvalidKeyReturnsNull()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>();

            var instance = iocContainer.TryResolve <IFoo>("SomeKey");

            Assert.IsNull(instance, "Instance should be null");
        }
Exemplo n.º 10
0
        public void ConfigurationIsFluent()
        {
            var container = new MicroIocContainer();

            var config1 = container.GetConfiguration();
            var config2 = config1.Configure <Bar>(new InjectedProperty <Foo>("Foo", new Foo()));

            Assert.AreSame(config1, config2);
        }
Exemplo n.º 11
0
        public void ResolveAllUnregisteredTypeReturnsEmptyCollection()
        {
            var ioc = new MicroIocContainer();

            var instances = ioc.ResolveAll(typeof(Foo));

            Assert.IsNotNull(instances);
            Assert.AreEqual(0, instances.Count());
        }
Exemplo n.º 12
0
        public void ContainerRetrievesInstancesByKeyWithSingleParameterTypeRegistration()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <Foo2>("Foo2", true);

            var instance = iocContainer.Resolve(null, "Foo2");

            Assert.IsInstanceOfType(instance, typeof(Foo2));
            Assert.IsNotNull(instance);
        }
Exemplo n.º 13
0
        public void ContainerRetrievesInstancesByKey()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>("Foo", true);

            var instance = iocContainer.Resolve(null, "Foo");

            Assert.IsInstanceOfType(instance, typeof(Foo));
            Assert.IsNotNull(instance);
        }
Exemplo n.º 14
0
        public void ContainerWillChainDependencyInjection()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>();

            var instance = iocContainer.Resolve <Bar>();

            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Foo);
        }
Exemplo n.º 15
0
        public void ResolveCreatesInstancePerRequest()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>();

            var instance1 = iocContainer.Resolve <IFoo>();
            var instance2 = iocContainer.Resolve <IFoo>();

            Assert.AreNotSame(instance1, instance2);
        }
Exemplo n.º 16
0
        public void TryResolveRegisteredInterfaceReturnsInstance()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>();

            var instance = iocContainer.TryResolve(typeof(IFoo));

            Assert.IsNotNull(instance, "Instance should not be null");
            Assert.IsInstanceOfType(instance, typeof(IFoo));
        }
Exemplo n.º 17
0
        public void ResolveCreatesSingletonIfSpecified()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>(isSingleton: true);

            var instance1 = iocContainer.Resolve <IFoo>();
            var instance2 = iocContainer.Resolve <IFoo>();

            Assert.AreSame(instance1, instance2);
        }
Exemplo n.º 18
0
        public void RegisteringSubsequentImplentationTypesOverwritesPrevious()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>();

            Assert.IsInstanceOfType(iocContainer.Resolve <IFoo>(), typeof(Foo));

            iocContainer.Register <IFoo, Foo2>();
            Assert.IsInstanceOfType(iocContainer.Resolve <IFoo>(), typeof(Foo2));
        }
Exemplo n.º 19
0
        public void ContainerCanResolveAConcreteTypeWithoutDefaultConstructor()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFoo, Foo>();

            var instance = iocContainer.Resolve <IFoo>();

            Assert.IsNotNull(instance);
            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
Exemplo n.º 20
0
        public void ContainerWillResolveSpecificInstancesInChainedResolution()
        {
            var foo1         = new Foo();
            var iocContainer = new MicroIocContainer()
                               .RegisterInstance <IFoo>(foo1);

            var instance = iocContainer.Resolve <Bar>();

            Assert.IsNotNull(instance);
            Assert.AreSame(foo1, instance.Foo);
        }
Exemplo n.º 21
0
        public void ConfigurationHoldsReferenceToContainer()
        {
            var container = new MicroIocContainer();

            var configuration = container.GetConfiguration();

            var configType = configuration.GetType();
            var fieldInfo  = configType.GetField("_container", BindingFlags.NonPublic | BindingFlags.Instance);

            Assert.AreSame(container, fieldInfo.GetValue(configuration));
        }
Exemplo n.º 22
0
        public void ResolveAllReturnsSingleRegisteredTypeInACollection()
        {
            var ioc = new MicroIocContainer()
                      .Register <IFoo, Foo>();

            var instances = ioc.ResolveAll(typeof(IFoo));

            Assert.IsNotNull(instances);
            Assert.AreEqual(1, instances.Count());
            Assert.IsInstanceOfType(instances.Single(), typeof(IFoo), "Registered instance should be an IFoo");
        }
Exemplo n.º 23
0
        public void InjectionWorksOnProperties()
        {
            const string expectedName = "Fabrikam inc.";

            var iocContainer = new MicroIocContainer()
                               .RegisterInstance(expectedName, "MicroIoc.Tests.TestClassWithProperty.CustomerName");

            var instance = iocContainer.Resolve <TestClassWithProperty>();

            Assert.AreEqual(expectedName, instance.CustomerName);
        }
Exemplo n.º 24
0
        public void ResolveAllReturnsAllRegisteredTypesInACollection()
        {
            var ioc = new MicroIocContainer()
                      .Register <IFoo, Foo>("One")
                      .RegisterInstance <IFoo>(new Foo(), "Two")
                      .Register <IFoo, Foo>("Three", true);

            var instances = ioc.ResolveAll(typeof(IFoo));

            Assert.IsNotNull(instances);
            Assert.AreEqual(3, instances.Count());
        }
Exemplo n.º 25
0
        public void ContainerInstantiatesConstructorWithMostParameters()
        {
            var iocContainer = new MicroIocContainer()
                               .Register <IFirst, First>()
                               .Register <ISecond, Second>()
                               .Register <IThird, Third>();

            var instance = iocContainer.Resolve <OverloadedTestClass>();

            Assert.IsNotNull(instance.First);
            Assert.IsNotNull(instance.Second);
            Assert.IsNotNull(instance.Third);
        }
Exemplo n.º 26
0
        public void BuildUpAppliesDependencyProperty()
        {
            var container = new MicroIocContainer();

            container.GetConfiguration()
            .Property <TestClassWithProperty, string>(x => x.CustomerName, "TestCustomerName");

            var obj = new TestClassWithProperty();

            container.BuildUp(obj);

            Assert.AreEqual("TestCustomerName", obj.CustomerName);
        }
Exemplo n.º 27
0
        public void PropertyInjectionThrowsExceptionForUnregisteredDependency()
        {
            const string expectedName = "Fabrikam inc.";

            var iocContainer = new MicroIocContainer()
                               .RegisterInstance(expectedName)
                               .Register <IFirst, First>();

            // Do not register this one...
            // iocContainer.Register<ISecond, Second>();

            iocContainer.Resolve <TestClassWithProperties>();
        }
Exemplo n.º 28
0
        public void BuildUpAppliesDependencyProperty()
        {
            var container = new MicroIocContainer();

            container.GetConfiguration()
                .Property<TestClassWithProperty, string>(x => x.CustomerName, "TestCustomerName");

            var obj = new TestClassWithProperty();

            container.BuildUp(obj);

            Assert.AreEqual("TestCustomerName", obj.CustomerName);
        }
Exemplo n.º 29
0
        public void ConfiguredPropertyInjectionGetsResolved()
        {
            const string customerName = "Bloggs & Co";
            var          container    = new MicroIocContainer()
                                        .Register <IFirst, First>()
                                        .Register <ISecond, Second>();

            container.GetConfiguration()
            .Property <TestClassWithProperties, string>(c => c.CustomerName, customerName);

            var instance = container.Resolve <TestClassWithProperties>();

            Assert.AreEqual(customerName, instance.CustomerName);
        }
Exemplo n.º 30
0
        public void BuildUpDoesNotApplyStandardProperty()
        {
            var container = new MicroIocContainer();

            container.GetConfiguration()
            .Property <TestClassWithProperty, string>(x => x.CustomerName, "TestCustomerName")
            .Property <TestClassWithProperty, string>(x => x.NotInjected, "NotInjected");

            var obj = new TestClassWithProperty();

            container.BuildUp(obj);

            Assert.IsNull(obj.NotInjected, string.Format("Should have been null, but was {0}", obj.NotInjected));
        }
Exemplo n.º 31
0
        public void ResolveByKeyGetsCorrectInstance()
        {
            var foo1 = new Foo();
            var foo2 = new Foo();

            var iocContainer = new MicroIocContainer()
                               .RegisterInstance <IFoo>(foo1)
                               .RegisterInstance <IFoo>(foo2, "theKey");

            var instance = iocContainer.Resolve <IFoo>("theKey");

            Assert.AreNotSame(instance, foo1);
            Assert.AreSame(instance, foo2);
        }
Exemplo n.º 32
0
        public void ConfiguredConstructorParameterInjectionGetsResolved()
        {
            const string connectionString =
                "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;";

            var container = new MicroIocContainer();

            container.GetConfiguration()
            .ConstructorParam <SampleRepository, string>("connectionString", connectionString);

            var instance = container.Resolve <SampleRepository>();

            Assert.AreEqual(connectionString, instance.ConnectionString);
        }
Exemplo n.º 33
0
        public void BuildUpDoesNotApplyStandardProperty()
        {
            var container = new MicroIocContainer();

            container.GetConfiguration()
                .Property<TestClassWithProperty, string>(x => x.CustomerName, "TestCustomerName")
                .Property<TestClassWithProperty, string>(x => x.NotInjected, "NotInjected");

            var obj = new TestClassWithProperty();

            container.BuildUp(obj);

            Assert.IsNull(obj.NotInjected, string.Format("Should have been null, but was {0}", obj.NotInjected));
        }
Exemplo n.º 34
0
        public void BuildUpResolvesAllInjectedProperties()
        {
            var container = new MicroIocContainer()
                .Register<IFirst, First>()
                .Register<ISecond, Second>();

            container.GetConfiguration()
                .Property<TestClassWithProperties, string>(x => x.CustomerName, "TestCustomerName");

            var obj = new TestClassWithProperties();

            container.BuildUp(obj);

            Assert.AreEqual("TestCustomerName", obj.CustomerName);

            Assert.IsNotNull(obj.FirstProperty, "FirstProperty shouldn't be null");
            Assert.IsInstanceOfType(obj.FirstProperty, typeof(First), "FirstProperty should a 'First' object");

            Assert.IsNotNull(obj.SecondProperty, "SecondProperty shouldn't be null");
            Assert.IsInstanceOfType(obj.SecondProperty, typeof(Second), "SecondProperty should a 'Second' object");
        }
Exemplo n.º 35
0
 public void RegistrationOfInvalidTypeThrowsException()
 {
     bool wasThrown = false;
     try
     {
         IMicroIocContainer iocContainer = new MicroIocContainer()
             .Register<IFoo>(typeof(Bar), "key", false);
     }
     catch (RegistrationException)
     {
         wasThrown = true;
     }
     Assert.IsTrue(wasThrown, "The registration should have thrown an exception");
 }
Exemplo n.º 36
0
        public void ContainerWillChainDependencyInjection()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>();

            var instance = iocContainer.Resolve<Bar>();
            Assert.IsNotNull(instance);
            Assert.IsNotNull(instance.Foo);
        }
Exemplo n.º 37
0
        public void TryResolveUnregisteredInterfaceWithKeyReturnsNull()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var instance = iocContainer.TryResolve(typeof(IFoo), "SomeKey");

            Assert.IsNull(instance, "Instance should be null");
        }
Exemplo n.º 38
0
        public void ResoveCreatesItemOfRequiredType()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>();

            var instance = iocContainer.Resolve<IFoo>();

            Assert.IsInstanceOfType(instance, typeof(Foo));
        }
Exemplo n.º 39
0
        public void ResolveCreatesInstancePerRequest()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>();

            var instance1 = iocContainer.Resolve<IFoo>();
            var instance2 = iocContainer.Resolve<IFoo>();

            Assert.AreNotSame(instance1, instance2);
        }
Exemplo n.º 40
0
        public void ResolveAllUnregisteredTypeReturnsEmptyCollection()
        {
            var ioc = new MicroIocContainer();

            var instances = ioc.ResolveAll(typeof (Foo));

            Assert.IsNotNull(instances);
            Assert.AreEqual(0, instances.Count());
        }
Exemplo n.º 41
0
        public void RegisterAllViewModelsCreatesRegistrationByNameForVmsInAssembly()
        {
            var iocContainer = new MicroIocContainer()
                .RegisterAllViewModels();

            var threw = false;
            try
            {
                var foo = iocContainer.Resolve(null, "FooViewModel");
                Assert.IsInstanceOfType(foo, typeof(FooViewModel));

                var bar = iocContainer.Resolve(null, "BarViewModel");
                Assert.IsInstanceOfType(bar, typeof(BarViewModel));
            }
            catch (Exception)
            {
                threw = true;
            }
            finally
            {
                Assert.IsFalse(threw);
            }
        }
Exemplo n.º 42
0
        public void PropertyInjectionThrowsExceptionForUnregisteredDependency()
        {
            const string expectedName = "Fabrikam inc.";

            var iocContainer = new MicroIocContainer()
                .RegisterInstance(expectedName)
                .Register<IFirst, First>();

            // Do not register this one...
            // iocContainer.Register<ISecond, Second>();

            iocContainer.Resolve<TestClassWithProperties>();
        }
Exemplo n.º 43
0
        public void InjectionWorksOnProperties()
        {
            const string expectedName = "Fabrikam inc.";

            var iocContainer = new MicroIocContainer()
                .RegisterInstance(expectedName, "MicroIoc.Tests.TestClassWithProperty.CustomerName");

            var instance = iocContainer.Resolve<TestClassWithProperty>();
            Assert.AreEqual(expectedName, instance.CustomerName);
        }
Exemplo n.º 44
0
        public void GenericTryResolveUnregisteredInterfaceReturnsNull()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var instance = iocContainer.TryResolve<IFoo>();

            Assert.IsNull(instance, "Instance should be null");
        }
Exemplo n.º 45
0
        public void ContainerRetrievesInstancesByKey()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>("Foo", true);

            var instance = iocContainer.Resolve(null, "Foo");
            Assert.IsInstanceOfType(instance, typeof(Foo));
            Assert.IsNotNull(instance);
        }
Exemplo n.º 46
0
        public void GenericTryResolveRegisteredInterfaceWithInvalidKeyReturnsNull()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>();

            var instance = iocContainer.TryResolve<IFoo>("SomeKey");

            Assert.IsNull(instance, "Instance should be null");
        }
Exemplo n.º 47
0
        public void ContainerWillResolveSpecificInstancesInChainedResolution()
        {
            var foo1 = new Foo();
            var iocContainer = new MicroIocContainer()
                .RegisterInstance<IFoo>(foo1);

            var instance = iocContainer.Resolve<Bar>();
            Assert.IsNotNull(instance);
            Assert.AreSame(foo1, instance.Foo);
        }
Exemplo n.º 48
0
        public void ResolveAllReturnsAllRegisteredTypesInACollection()
        {
            var ioc = new MicroIocContainer()
                .Register<IFoo, Foo>("One")
                .RegisterInstance<IFoo>(new Foo(), "Two")
                .Register<IFoo, Foo>("Three", true);

            var instances = ioc.ResolveAll(typeof(IFoo));

            Assert.IsNotNull(instances);
            Assert.AreEqual(3, instances.Count());
        }
Exemplo n.º 49
0
        public void ResolveAllReturnsSingleRegisteredTypeInACollection()
        {
            var ioc = new MicroIocContainer()
                .Register<IFoo, Foo>();

            var instances = ioc.ResolveAll(typeof(IFoo));

            Assert.IsNotNull(instances);
            Assert.AreEqual(1, instances.Count());
            Assert.IsInstanceOfType(instances.Single(), typeof(IFoo), "Registered instance should be an IFoo");
        }
Exemplo n.º 50
0
        public void RegisterAllViewModelsDoesNotRegisterUnknownVms()
        {
            var iocContainer = new MicroIocContainer()
                .RegisterAllViewModels();

            var threw = false;
            try
            {
                // There is no such object - this should throw a ResolutionException
                var foo = iocContainer.Resolve(null, "BazViewModel");
            }
            catch (ResolutionException)
            {
                threw = true;
            }
            finally
            {
                Assert.IsTrue(threw);
            }
        }
Exemplo n.º 51
0
        public void ResolveByKeyGetsCorrectInstance()
        {
            var foo1 = new Foo();
            var foo2 = new Foo();

            var iocContainer = new MicroIocContainer()
                .RegisterInstance<IFoo>(foo1)
                .RegisterInstance<IFoo>(foo2, "theKey");

            var instance = iocContainer.Resolve<IFoo>("theKey");

            Assert.AreNotSame(instance, foo1);
            Assert.AreSame(instance, foo2);
        }
Exemplo n.º 52
0
        public void RegisteringSubsequentImplentationTypesOverwritesPrevious()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>();
            Assert.IsInstanceOfType(iocContainer.Resolve<IFoo>(), typeof(Foo));

            iocContainer.Register<IFoo, Foo2>();
            Assert.IsInstanceOfType(iocContainer.Resolve<IFoo>(), typeof(Foo2));
        }
Exemplo n.º 53
0
        public void ResolveCreatesSingletonIfSpecified()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>(isSingleton: true);

            var instance1 = iocContainer.Resolve<IFoo>();
            var instance2 = iocContainer.Resolve<IFoo>();

            Assert.AreSame(instance1, instance2);
        }
Exemplo n.º 54
0
        public void RegisteringSubsequentInstancesOfTypeWithSameKeyOverwritesPrevious()
        {
            const string key = "fooKey"; // Nell
            var foo1 = new Foo();
            var foo2 = new Foo();

            var iocContainer = new MicroIocContainer()
                .RegisterInstance<IFoo>(foo1, key);

            Assert.AreSame(foo1, iocContainer.Resolve<IFoo>(key));

            iocContainer.RegisterInstance<IFoo>(foo2, key);

            Assert.AreSame(foo2, iocContainer.Resolve<IFoo>(key));
        }
Exemplo n.º 55
0
        public void TryResolveRegisteredInterfaceReturnsInstance()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFoo, Foo>();

            var instance = iocContainer.TryResolve(typeof (IFoo));

            Assert.IsNotNull(instance, "Instance should not be null");
            Assert.IsInstanceOfType(instance, typeof(IFoo));
        }
Exemplo n.º 56
0
        public void RegisterInstanceIsFluent()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var newContainer = iocContainer.RegisterInstance<IFoo>(new Foo());

            Assert.AreSame(iocContainer, newContainer);
        }
Exemplo n.º 57
0
        public void RegisterIsFluent()
        {
            IMicroIocContainer iocContainer = new MicroIocContainer();

            var newContainer = iocContainer.Register<IFoo, Foo>();

            Assert.AreSame(iocContainer, newContainer);
        }
Exemplo n.º 58
0
        public void ContainerRetrievesInstancesByKeyWithSingleParameterTypeRegistration()
        {
            var iocContainer = new MicroIocContainer()
                .Register<Foo2>("Foo2", true);

            var instance = iocContainer.Resolve(null, "Foo2");
            Assert.IsInstanceOfType(instance, typeof (Foo2));
            Assert.IsNotNull(instance);
        }
Exemplo n.º 59
0
        public void CanRegisterWithoutExceptions()
        {
            var threw = false;

            try
            {
                var iocContainer = new MicroIocContainer();
                iocContainer.Register<IFoo, Foo>();
            }
            catch (Exception)
            {
                threw = true;
            }
            finally
            {
                Assert.IsFalse(threw, "Failed to register without an exception");
            }
        }
Exemplo n.º 60
0
        public void ContainerInstantiatesConstructorWithMostParameters()
        {
            var iocContainer = new MicroIocContainer()
                .Register<IFirst, First>()
                .Register<ISecond, Second>()
                .Register<IThird, Third>();

            var instance = iocContainer.Resolve<OverloadedTestClass>();
            Assert.IsNotNull(instance.First);
            Assert.IsNotNull(instance.Second);
            Assert.IsNotNull(instance.Third);
        }