public void DisposeCalledForMultipleDisposableServicesCreatedByActivator()
        {
            var interceptorActivator = new DefaultGrpcInterceptorActivator <DisposableGrpcInterceptor>(Mock.Of <IServiceProvider>());
            var interceptor1         = (DisposableGrpcInterceptor)interceptorActivator.Create();
            var interceptor2         = (DisposableGrpcInterceptor)interceptorActivator.Create();
            var interceptor3         = (DisposableGrpcInterceptor)interceptorActivator.Create();

            interceptorActivator.Release(interceptor3);
            interceptorActivator.Release(interceptor2);
            interceptorActivator.Release(interceptor1);

            Assert.True(interceptor1.Disposed);
            Assert.True(interceptor2.Disposed);
            Assert.True(interceptor3.Disposed);
        }
예제 #2
0
        public void DisposeNotCalledForUndisposableServicesCreatedByActivator()
        {
            var interceptorActivator = new DefaultGrpcInterceptorActivator <GrpcInterceptor>(Mock.Of <IServiceProvider>());
            var interceptor          = (GrpcInterceptor)interceptorActivator.Create();

            interceptorActivator.Release(interceptor);

            Assert.False(interceptor.Disposed);
        }
예제 #3
0
        public void Release_MultipleDisposableCreatedByActivator_DisposeCalled()
        {
            // Arrange
            var interceptorRegistration = CreateRegistration <DisposableGrpcInterceptor>();

            var interceptorActivator = new DefaultGrpcInterceptorActivator <DisposableGrpcInterceptor>();
            var interceptorHandle1   = interceptorActivator.Create(Mock.Of <IServiceProvider>(), interceptorRegistration);
            var interceptorHandle2   = interceptorActivator.Create(Mock.Of <IServiceProvider>(), interceptorRegistration);
            var interceptorHandle3   = interceptorActivator.Create(Mock.Of <IServiceProvider>(), interceptorRegistration);

            // Act
            interceptorActivator.Release(interceptorHandle3);
            interceptorActivator.Release(interceptorHandle2);
            interceptorActivator.Release(interceptorHandle1);

            // Assert
            Assert.True(((DisposableGrpcInterceptor)interceptorHandle1.Instance).Disposed);
            Assert.True(((DisposableGrpcInterceptor)interceptorHandle2.Instance).Disposed);
            Assert.True(((DisposableGrpcInterceptor)interceptorHandle3.Instance).Disposed);
        }
예제 #4
0
        public void Create_NotResolvedFromServiceProvider_CreatedByActivator()
        {
            // Arrange
            var activator = new DefaultGrpcInterceptorActivator <GrpcInterceptor>();

            // Act
            var handle = activator.Create(Mock.Of <IServiceProvider>(), CreateRegistration <GrpcInterceptor>());

            // Assert
            Assert.NotNull(handle.Instance);
            Assert.IsTrue(handle.Created);
        }
예제 #5
0
        public void Release_NonDisposableCreatedByActivator_DisposeNotCalled()
        {
            // Arrange
            var interceptorActivator = new DefaultGrpcInterceptorActivator <GrpcInterceptor>();
            var interceptorHandle    = interceptorActivator.Create(Mock.Of <IServiceProvider>(), CreateRegistration <GrpcInterceptor>());
            var interceptorInstance  = (GrpcInterceptor)interceptorHandle.Instance;

            // Act
            interceptorActivator.Release(interceptorHandle);

            // Assert
            Assert.False(interceptorInstance.Disposed);
        }
예제 #6
0
        public void Create_ResolvedFromServiceProvider_NotCreatedByActivator()
        {
            // Arrange
            var interceptor         = new GrpcInterceptor();
            var mockServiceProvider = new Mock <IServiceProvider>();

            mockServiceProvider
            .Setup(sp => sp.GetService(typeof(GrpcInterceptor)))
            .Returns(interceptor);
            var activator = new DefaultGrpcInterceptorActivator <GrpcInterceptor>();

            // Act
            var handle = activator.Create(mockServiceProvider.Object, CreateRegistration <GrpcInterceptor>());

            // Assert
            Assert.AreSame(handle.Instance, interceptor);
            Assert.IsFalse(handle.Created);
        }
예제 #7
0
        public void DisposeNotCalledForServicesResolvedFromServiceProvider()
        {
            var mockServiceProvider = new Mock <IServiceProvider>();

            mockServiceProvider
            .Setup(sp => sp.GetService(typeof(DisposableGrpcInterceptor)))
            .Returns(() =>
            {
                return(new DisposableGrpcInterceptor());
            });

            var interceptorActivator = new DefaultGrpcInterceptorActivator <DisposableGrpcInterceptor>(mockServiceProvider.Object);
            var interceptor          = (DisposableGrpcInterceptor)interceptorActivator.Create();

            interceptorActivator.Release(interceptor);

            Assert.False(interceptor.Disposed);
        }
예제 #8
0
        public void Release_ResolvedFromServiceProvider_DisposeNotCalled()
        {
            // Arrange
            var mockServiceProvider = new Mock <IServiceProvider>();

            mockServiceProvider
            .Setup(sp => sp.GetService(typeof(DisposableGrpcInterceptor)))
            .Returns(() =>
            {
                return(new DisposableGrpcInterceptor());
            });

            var interceptorActivator = new DefaultGrpcInterceptorActivator <DisposableGrpcInterceptor>();
            var interceptorHandle    = interceptorActivator.Create(mockServiceProvider.Object, CreateRegistration <DisposableGrpcInterceptor>());
            var interceptorInstance  = (DisposableGrpcInterceptor)interceptorHandle.Instance;

            // Act
            interceptorActivator.Release(interceptorHandle);

            // Assert
            Assert.False(interceptorInstance.Disposed);
        }