public void Should_be_successful_with_delegate_types(Type delegateType)
        {
            // Arrange

            // Act
            var result = DelegateProxyGenerator.GenerateProxy(delegateType, A.Dummy <IFakeCallProcessorProvider>());

            // Assert
            result.ProxyWasSuccessfullyGenerated.Should().BeTrue();
        }
        public void Should_create_proxy_of_the_specified_type(Type delegateType)
        {
            // Arrange

            // Act
            var result = DelegateProxyGenerator.GenerateProxy(delegateType, A.Dummy <IFakeCallProcessorProvider>());

            // Assert
            result.GeneratedProxy.GetType().Should().Be(delegateType);
        }
Exemple #3
0
        private Type GenerateProxyType <TDelegate>()
        {
            var scope          = generator.ProxyBuilder.ModuleScope;
            var proxyGenerator = new DelegateProxyGenerator(scope, typeof(TDelegate))
            {
                Logger = generator.ProxyBuilder.Logger
            };

            return(proxyGenerator.GetProxyType());
        }
        public void Should_fail_for_non_delegate_types(Type nonDelegateType)
        {
            // Arrange

            // Act
            var result = DelegateProxyGenerator.GenerateProxy(nonDelegateType, A.Dummy <IFakeCallProcessorProvider>());

            // Assert
            result.ProxyWasSuccessfullyGenerated.Should().BeFalse();
            result.ReasonForFailure.Should().Be("The delegate proxy generator can only create proxies for delegate types.");
        }
        private Type GetProxyType(IProxyBuilder builder, Type targetDelegateType)
        {
            var scope     = builder.ModuleScope;
            var logger    = builder.Logger;
            var generator = new DelegateProxyGenerator(scope, targetDelegateType)
            {
                Logger = logger
            };

            return(generator.GetProxyType());
        }
        public void Should_ensure_fake_call_processor_is_initialized_but_not_fetched_when_no_method_on_fake_is_called()
        {
            // Arrange
            var fakeCallProcessorProvider = A.Fake <IFakeCallProcessorProvider>();

            // Act
            var proxyGeneratorResult = DelegateProxyGenerator.GenerateProxy(typeof(Action), fakeCallProcessorProvider);

            // Assert
            A.CallTo(() => fakeCallProcessorProvider.Fetch(A <object> ._)).MustNotHaveHappened();
            A.CallTo(() => fakeCallProcessorProvider.EnsureInitialized(proxyGeneratorResult.GeneratedProxy)).MustHaveHappened();
        }
        private T GenerateProxy <T>(Action <IInterceptedFakeObjectCall> fakeCallProcessorAction)
        {
            var fakeCallProcessor = A.Fake <IFakeCallProcessor>();

            A.CallTo(() => fakeCallProcessor.Process(A <IInterceptedFakeObjectCall> ._)).Invokes(fakeCallProcessorAction);

            var fakeCallProcessorProvider = A.Fake <IFakeCallProcessorProvider>();

            A.CallTo(() => fakeCallProcessorProvider.Fetch(A <object> ._)).Returns(fakeCallProcessor);

            return((T)DelegateProxyGenerator.GenerateProxy(typeof(T), fakeCallProcessorProvider).GeneratedProxy);
        }
Exemple #8
0
            public CreationResult CreateFake(Type typeOfFake, IProxyOptions proxyOptions, DummyCreationSession session, IDummyValueResolver resolver)
            {
                if (proxyOptions.Attributes.Any())
                {
                    return(CreationResult.FailedToCreateFake(typeOfFake, "Faked delegates cannot have custom attributes applied to them."));
                }

                if (proxyOptions.ArgumentsForConstructor != null && proxyOptions.ArgumentsForConstructor.Any())
                {
                    return(CreationResult.FailedToCreateFake(typeOfFake, "Faked delegates cannot be made using explicit constructor arguments."));
                }

                if (proxyOptions.AdditionalInterfacesToImplement.Any())
                {
                    return(CreationResult.FailedToCreateFake(typeOfFake, "Faked delegates cannot be made to implement additional interfaces."));
                }

                var fakeCallProcessorProvider = this.fakeCallProcessorProviderFactory(typeOfFake, proxyOptions);
                var proxyGeneratorResult      = DelegateProxyGenerator.GenerateProxy(typeOfFake, fakeCallProcessorProvider);

                return(proxyGeneratorResult.ProxyWasSuccessfullyGenerated
                    ? CreationResult.SuccessfullyCreated(proxyGeneratorResult.GeneratedProxy)
                    : CreationResult.FailedToCreateFake(typeOfFake, proxyGeneratorResult.ReasonForFailure));
            }
 public ProxyGeneratorSelector(DelegateProxyGenerator delegateProxyGenerator, IProxyGenerator defaultProxyGenerator)
 {
     this.delegateProxyGenerator = delegateProxyGenerator;
     this.defaultProxyGenerator  = defaultProxyGenerator;
 }
 public ProxyGeneratorSelectorTests()
 {
     this.delegateProxyGenerator = A.Fake <DelegateProxyGenerator>();
     this.defaultProxyGenerator  = A.Fake <IProxyGenerator>();
     this.selector = new ProxyGeneratorSelector(this.delegateProxyGenerator, this.defaultProxyGenerator);
 }
Exemple #11
0
 public bool IsResponsibleForCreating(Type typeOfFake) => DelegateProxyGenerator.CanGenerateProxy(typeOfFake, out _);
Exemple #12
0
 public DelegateProxyGeneratorTests()
 {
     this.generator = new DelegateProxyGenerator();
 }