private ProxyGenerationOptions CreateProxyOptions <T>(IEnumerable <IAlternateMethod> methodImplementations, IEnumerable <object> mixins)
        {
            var generationHook = new AlternateTypeGenerationHook <T>(methodImplementations, Logger);
            var selector       = new AlternateTypeSelector();
            var options        = new ProxyGenerationOptions(generationHook)
            {
                Selector = selector
            };

            if (mixins != null)
            {
                foreach (var mixin in mixins)
                {
                    options.AddMixinInstance(mixin);
                }
            }

            return(options);
        }
        public void ReturnEmptyArrayWithoutMatch()
        {
            var loggerMock     = new Mock <ILogger>();
            var alternateMock1 = new Mock <IAlternateMethod>();

            alternateMock1.Setup(a => a.MethodToImplement).Returns(typeof(IDisposable).GetMethod("Dispose"));

            var alternateMock2 = new Mock <IAlternateMethod>();

            alternateMock2.Setup(a => a.MethodToImplement).Returns(typeof(AlternateTypeSelectorShould).GetMethod("ReturnMatchingInterceptors"));

            var interceptors = new IInterceptor[]
            {
                new AlternateTypeToCastleInterceptorAdapter(alternateMock1.Object, loggerMock.Object, new Mock <IMessageBroker>().Object, new Mock <IProxyFactory>().Object, () => new ExecutionTimer(Stopwatch.StartNew()), () => RuntimePolicy.On), new AlternateTypeToCastleInterceptorAdapter(alternateMock2.Object, loggerMock.Object, new Mock <IMessageBroker>().Object, new Mock <IProxyFactory>().Object, () => new ExecutionTimer(Stopwatch.StartNew()), () => RuntimePolicy.On)
            };
            var selector = new AlternateTypeSelector();

            var result = selector.SelectInterceptors(null, typeof(AlternateTypeSelectorShould).GetMethod("ReturnEmptyArrayWithoutMatch"), interceptors);

            Assert.Empty(result);
        }