Ejemplo n.º 1
0
        public void CreateService_MultipleCalls_InvokesLambdaEachTime(int times)
        {
            // Arrange

            var serviceProvider = new Mock <IServiceProvider>();

            var count   = 0;
            var factory = new LambdaServiceFactory(provider =>
            {
                Assert.Equal(serviceProvider.Object, provider);
                count++;

                return(null);
            });

            factory.Initialize(serviceProvider.Object);

            // Act

            foreach (var _ in Enumerable.Range(1, times))
            {
                factory.CreateService(typeof(object));
            }

            // Assert

            Assert.Equal(times, count);
        }
Ejemplo n.º 2
0
        public void CreateService_NotInitialized_InvalidOperationException()
        {
            // Arrange

            var factory = new LambdaServiceFactory(_ => null);

            // Act

            Assert.Throws <InvalidOperationException>(() => factory.CreateService(typeof(object)));
        }
Ejemplo n.º 3
0
        public void GetService_LambdaRegistered_ReturnsService()
        {
            // Arrange

            var obj     = new object();
            var factory = new LambdaServiceFactory(_ => obj);

            var provider = new CouchbaseServiceProvider(new[]
            {
                new KeyValuePair <Type, IServiceFactory>(typeof(object), factory)
            });

            // Act

            var result = provider.GetService(typeof(object));

            // Assert

            Assert.Equal(obj, result);
        }
Ejemplo n.º 4
0
        public void GetService_LambdaRegistered_LambdaGetsServiceProvider()
        {
            // Arrange

            IServiceProvider?calledWith = null;
            var factory = new LambdaServiceFactory(serviceProvider => {
                calledWith = serviceProvider;
                return(null);
            });

            var provider = new CouchbaseServiceProvider(new[]
            {
                new KeyValuePair <Type, IServiceFactory>(typeof(object), factory)
            });

            // Act

            provider.GetService(typeof(object));

            // Assert

            Assert.Equal(provider, calledWith);
        }
Ejemplo n.º 5
0
 internal void AddTransientService <T>(Func <IServiceProvider, T> factory)
 {
     _services[typeof(T)] = new LambdaServiceFactory(serviceProvider => factory(serviceProvider));
 }