public void GetAllInstances_GivenObjectsExists_ShouldNotThrowExceptionAndReturnListOfObjects()
        {
            //---------------Set up test pack-------------------
            var fakeObject1 = new FakeObject();
            var fakeObject2 = new FakeObject();
            var container   = new Container();

            container.Configure(expression =>
            {
                expression.For <IFakeObject>().Use(fakeObject1);
                expression.For <IFakeObject>().Use(fakeObject2);
            });

            var iocContainer = new StructuremapThuriaIocContainer(container);
            IEnumerable <object> returnedObjects = null;

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            Assert.DoesNotThrow(() => returnedObjects = iocContainer.GetAllInstances(typeof(IFakeObject)));
            //---------------Test Result -----------------------
            var enumerable = returnedObjects as object[] ?? returnedObjects.ToArray();

            enumerable.Should().NotBeNull();
            enumerable.Count().Should().Be(2);
        }
        public void Constructor()
        {
            //---------------Set up test pack-------------------
            var container = Substitute.For <IContainer>();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var iocContainer = new StructuremapThuriaIocContainer(container);

            //---------------Test Result -----------------------
            iocContainer.Should().NotBeNull();
        }
        public void GetInstance_Generic_ShouldGetInstanceFromStructuremapContainer()
        {
            //---------------Set up test pack-------------------
            var container    = Substitute.For <IContainer>();
            var iocContainer = new StructuremapThuriaIocContainer(container);

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            iocContainer.GetInstance <IFakeObject>();
            //---------------Test Result -----------------------
            container.Received(1).TryGetInstance <IFakeObject>();
        }
        public void Constructor_GivenContainer_ShouldSetContainerProperty()
        {
            //---------------Set up test pack-------------------
            var container    = Substitute.For <IContainer>();
            var iocContainer = new StructuremapThuriaIocContainer(container);
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var iocContainerContainer = iocContainer.Container;

            //---------------Test Result -----------------------
            container.Should().Be(iocContainerContainer);
        }
        public void GetInstance_Generic_GivenObjectNotFound_ShouldNotThrowExceptionAndReturnNull()
        {
            //---------------Set up test pack-------------------
            var    container      = new Container();
            var    iocContainer   = new StructuremapThuriaIocContainer(container);
            object returnedObject = null;

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            Assert.DoesNotThrow(() => returnedObject = iocContainer.GetInstance <IFakeObject>());
            //---------------Test Result -----------------------
            returnedObject.Should().BeNull();
        }
        public void GetAllInstances_GivenObjectsNotFound_ShouldNotThrowExceptionAndReturnEmptyList()
        {
            //---------------Set up test pack-------------------
            var container    = new Container();
            var iocContainer = new StructuremapThuriaIocContainer(container);
            IEnumerable <object> returnedObjects = null;

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            Assert.DoesNotThrow(() => returnedObjects = iocContainer.GetAllInstances(typeof(IFakeObject)));
            //---------------Test Result -----------------------
            var enumerable = returnedObjects as object[] ?? returnedObjects.ToArray();

            enumerable.Should().NotBeNull();
            enumerable.Any().Should().BeFalse();
        }
        public void GetInstance_Generic_GivenObjectExists_ShouldNotThrowExceptionAndReturnInstanceOfObject()
        {
            //---------------Set up test pack-------------------
            var container  = new Container();
            var fakeObject = new FakeObject();

            container.Inject(typeof(IFakeObject), fakeObject);

            var    iocContainer   = new StructuremapThuriaIocContainer(container);
            object returnedObject = null;

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            Assert.DoesNotThrow(() => returnedObject = iocContainer.GetInstance <IFakeObject>());
            //---------------Test Result -----------------------
            returnedObject.Should().NotBeNull();
            returnedObject.Should().BeAssignableTo <IFakeObject>();
            returnedObject.Should().Be(fakeObject);
        }
        public void GetInstance_Named_GivenObjectExists_ShouldNotThrowExceptionAndReturnInstanceOfObject()
        {
            //---------------Set up test pack-------------------
            var instanceName = "test";
            var container    = new Container();

            container.Configure(expression =>
            {
                expression.For <IFakeObject>().Use <FakeObject>().Named(instanceName);
            });

            var    iocContainer   = new StructuremapThuriaIocContainer(container);
            object returnedObject = null;

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            Assert.DoesNotThrow(() => returnedObject = iocContainer.GetInstance(typeof(IFakeObject), instanceName));
            //---------------Test Result -----------------------
            returnedObject.Should().NotBeNull();
            returnedObject.Should().BeAssignableTo <IFakeObject>();
        }
        public void GetAllInstances_Generic_GivenObjectsExists_ShouldNotThrowExceptionAndReturnListOfObjects()
        {
            //---------------Set up test pack-------------------
            var fakeObject1 = new FakeObject();
            var fakeObject2 = new FakeObject();
            var container   = new Container();

            container.Inject(typeof(IFakeObject), fakeObject1);
            container.Inject(typeof(IFakeObject), fakeObject2);

            var iocContainer = new StructuremapThuriaIocContainer(container);
            IEnumerable <IFakeObject> returnedObjects = null;

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            Assert.DoesNotThrow(() => returnedObjects = iocContainer.GetAllInstances <IFakeObject>());
            //---------------Test Result -----------------------
            var fakeObjects = returnedObjects as IFakeObject[] ?? returnedObjects.ToArray();

            fakeObjects.Should().NotBeNull();
            fakeObjects.Any().Should().BeTrue();
            fakeObjects.Count().Should().Be(2);
        }