public void ShouldAddFacility()
        {
            // Arrange
            var containerExtension = new WindsorExtension(registrationHelper, options);
            var facility           = A.Fake <IFacility>();
            var container          = new WindsorContainer();

            // Act
            containerExtension.AddFacility(facility);
            containerExtension.InitializeContainer(container);

            // Assert
            Assert.IsTrue(container.Kernel.GetFacilities().Contains(facility));
        }
        public void RegisterAll_WhenInvokedWithNonGenericTargetType_ShouldRegisterType()
        {
            //Arrange
            var container          = new WindsorContainer();
            var containerExtension = new WindsorExtension(registrationHelper, options);

            containerExtension.AddFacility(new TypedFactoryFacility());
            containerExtension.InitializeContainer(container);
            var thisAssembly = Assembly.GetCallingAssembly();

            A.CallTo(() => registrationHelper.GetAssemblies()).Returns(new[] { thisAssembly });
            A.CallTo(() => registrationHelper.GetTypesImplementing(thisAssembly, typeof(IGenericTest <>)))
            .Returns(new[] { typeof(GenericTest <>) });

            //Act
            containerExtension.RegisterAll(typeof(IGenericTest <>));
            var result1 = container.Resolve <IGenericTest <object> >();
            var result2 = container.Resolve <IGenericTest <string[]> >();

            //Assert
            result1.ShouldBeOfType <GenericTest <object> >();
            result2.ShouldBeOfType <GenericTest <string[]> >();
        }