Skip to content

Commit

Permalink
Test badly formed container
Browse files Browse the repository at this point in the history
  • Loading branch information
maryamariyan committed Oct 11, 2022
1 parent 54b1af1 commit 54e17ae
Showing 1 changed file with 30 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,26 @@ public void GetServiceOrCreateInstanceUnregisteredService()
}
}

[Fact]
public void CreateInstance_BadlyConfiguredIServiceProviderIsService_ProperlyCreatesUnambiguousInstance()
{
if (SupportsIServiceProviderIsService)
{
return;
}

var serviceCollection = new TestServiceCollection()
.AddScoped<FakeService1>();
var fakeIServiceProviderIsService = new FakeIServiceProviderIsService();

serviceCollection.AddScoped<IServiceProviderIsService>((p) => (IServiceProviderIsService)fakeIServiceProviderIsService);
var serviceProvider = CreateServiceProvider(serviceCollection);

var instance = ActivatorUtilities.CreateInstance<FakeService2>(serviceProvider);
Assert.NotNull(instance);
Assert.True(fakeIServiceProviderIsService.Called);
}

[Theory]
[MemberData(nameof(CreateInstanceFuncs))]
public void CreateInstance_NullInstance_HandlesBadInputWithInvalidOperationException(CreateInstanceFunc createFunc)
Expand Down Expand Up @@ -431,6 +451,16 @@ public void CreateInstance_CapturesInnerException_OfTargetInvocationException()
Assert.Equal(msg, ex.Message);
}

private class FakeIServiceProviderIsService : IServiceProviderIsService
{
public FakeIServiceProviderIsService() { }
public bool Called { get; set; }
public bool IsService(Type serviceType) { Called = true; return false; }
}

private class FakeService1 { public FakeService1() { } }
private class FakeService2 { public FakeService2(FakeService1 fakeService) { } }

private abstract class AbstractFoo
{
// The constructor should be public, since that is checked as well.
Expand Down

0 comments on commit 54e17ae

Please sign in to comment.