#pragma warning disable xUnit1024 // Test methods cannot have overloads
        public new void ResolvesMixedOpenClosedGenericsAsEnumerable()
#pragma warning restore xUnit1024 // Test methods cannot have overloads
        {
            // Arrange
            var serviceCollection = new TestServiceCollection();
            var instance          = new FakeOpenGenericService <PocoClass>(null);

            serviceCollection.AddTransient <PocoClass, PocoClass>();
            serviceCollection.AddSingleton(typeof(IFakeOpenGenericService <PocoClass>), typeof(FakeService));
            serviceCollection.AddSingleton(typeof(IFakeOpenGenericService <>), typeof(FakeOpenGenericService <>));
            serviceCollection.AddSingleton <IFakeOpenGenericService <PocoClass> >(instance);

            var serviceProvider = CreateServiceProvider(serviceCollection);

            var enumerable = serviceProvider.GetService <IEnumerable <IFakeOpenGenericService <PocoClass> > >().ToArray();
            var service    = serviceProvider.GetService <IFakeOpenGenericService <PocoClass> >();

            // Assert
            Assert.Equal(3, enumerable.Length);
            Assert.NotNull(enumerable[0]);
            Assert.NotNull(enumerable[1]);
            Assert.NotNull(enumerable[2]);

            Assert.Contains(instance, enumerable);
            Assert.Equal(instance, service);
            Assert.IsType <FakeService>(enumerable[0]);
        }
Beispiel #2
0
        public void ResolvesMixedOpenClosedGenericsAsEnumerable()
        {
            // Arrange
            var serviceCollection = new TestServiceCollection();
            var instance          = new FakeOpenGenericService <PocoClass>(null);

            serviceCollection.AddTransient <PocoClass, PocoClass>();
            serviceCollection.AddSingleton(typeof(IFakeOpenGenericService <PocoClass>), typeof(FakeService));
            serviceCollection.AddSingleton(typeof(IFakeOpenGenericService <>), typeof(FakeOpenGenericService <>));
            serviceCollection.AddSingleton <IFakeOpenGenericService <PocoClass> >(instance);

            var serviceProvider = CreateServiceProvider(serviceCollection);

            var enumerable = serviceProvider.GetService <IEnumerable <IFakeOpenGenericService <PocoClass> > >().ToArray();

            // Assert
            Assert.Equal(3, enumerable.Length);
            Assert.NotNull(enumerable[0]);
            Assert.NotNull(enumerable[1]);
            Assert.NotNull(enumerable[2]);

            Assert.Equal(instance, enumerable[2]);

            // Lamar is NOT making this assumption about ordering
            //Assert.IsType<FakeService>(enumerable[0]);
        }
        protected override void ConfigureService(IServiceContext serviceContext)
        {
            var instance = new FakeOpenGenericService <PocoClass>(null);

            serviceContext.AddType <PocoClass, PocoClass>(Lifetime.Singleton);
            serviceContext.AddType(typeof(IFakeOpenGenericService <PocoClass>), typeof(FakeService), Lifetime.Singleton);
            serviceContext.AddType(typeof(IFakeOpenGenericService <>), typeof(FakeOpenGenericService <>), Lifetime.Singleton);
            serviceContext.AddInstance <IFakeOpenGenericService <PocoClass> >(instance);
        }
        public void ResolvesMixedOpenClosedGenericsAsEnumerable()
        {
            // Arrange
            var container = new StashboxContainer();
            var instance  = new FakeOpenGenericService <PocoClass>(null);

            container.Register <PocoClass, PocoClass>();
            container.RegisterSingleton(typeof(IFakeOpenGenericService <PocoClass>), typeof(FakeService));
            container.RegisterSingleton(typeof(IFakeOpenGenericService <>), typeof(FakeOpenGenericService <>));
            container.RegisterInstance <IFakeOpenGenericService <PocoClass> >(instance);

            var enumerable = container.Resolve <IEnumerable <IFakeOpenGenericService <PocoClass> > >().ToArray();

            // Assert
            Assert.Equal(3, enumerable.Length);
            Assert.NotNull(enumerable[0]);
            Assert.NotNull(enumerable[1]);
            Assert.NotNull(enumerable[2]);

            Assert.Equal(instance, enumerable[2]);
            Assert.IsType <FakeService>(enumerable[0]);
        }