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 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 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>();
        }