Skip to content

Commit 614adb0

Browse files
committed
Refactoring
1 parent ba7e92c commit 614adb0

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

tests/Microsoft.DependencyInjection.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Specification.Tests" Version="1.1.1" />
10+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Specification.Tests" Version="2.0.0" />
1111
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
1212
<PackageReference Include="xunit" Version="2.3.1" />
1313
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />

tests/UnityDependencyInjectionTests.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
24
using Microsoft.Extensions.DependencyInjection;
35
using Microsoft.Extensions.DependencyInjection.Specification;
6+
using Microsoft.Extensions.DependencyInjection.Specification.Fakes;
7+
using Xunit;
48

59
namespace Unity.Microsoft.DependencyInjection.Tests
610
{
@@ -10,5 +14,34 @@ protected override IServiceProvider CreateServiceProvider(IServiceCollection ser
1014
{
1115
return ServiceProvider.ConfigureServices(serviceCollection);
1216
}
17+
18+
[Fact]
19+
public void Disposes_InReverseOrderOfCreation()
20+
{
21+
TestServiceCollection serviceCollection = new TestServiceCollection();
22+
ServiceCollectionServiceExtensions.AddSingleton<FakeDisposeCallback>(serviceCollection);
23+
ServiceCollectionServiceExtensions.AddTransient<IFakeOuterService, FakeDisposableCallbackOuterService>(serviceCollection);
24+
ServiceCollectionServiceExtensions.AddSingleton<IFakeMultipleService, FakeDisposableCallbackInnerService>(serviceCollection);
25+
ServiceCollectionServiceExtensions.AddScoped<IFakeMultipleService, FakeDisposableCallbackInnerService>(serviceCollection);
26+
ServiceCollectionServiceExtensions.AddTransient<IFakeMultipleService, FakeDisposableCallbackInnerService>(serviceCollection);
27+
ServiceCollectionServiceExtensions.AddSingleton<IFakeService, FakeDisposableCallbackInnerService>(serviceCollection);
28+
IServiceProvider provider1 = this.CreateServiceProvider(serviceCollection);
29+
FakeDisposeCallback callback = ServiceProviderServiceExtensions.GetService<FakeDisposeCallback>(provider1);
30+
IFakeOuterService service = ServiceProviderServiceExtensions.GetService<IFakeOuterService>(provider1);
31+
((IDisposable)provider1).Dispose();
32+
Assert.Equal<object>(service, callback.Disposed[0]);
33+
Assert.Equal<IFakeMultipleService>(Enumerable.Reverse<IFakeMultipleService>(service.MultipleServices),
34+
Enumerable.OfType<IFakeMultipleService>(Enumerable.Take<object>(Enumerable.Skip<object>((IEnumerable<object>)callback.Disposed, 1), 3)));
35+
Assert.Equal<object>(service.SingleService, callback.Disposed[4]);
36+
}
37+
38+
internal class TestServiceCollection : List<ServiceDescriptor>,
39+
IServiceCollection,
40+
IList<ServiceDescriptor>,
41+
ICollection<ServiceDescriptor>,
42+
IEnumerable<ServiceDescriptor>
43+
{
44+
}
45+
1346
}
1447
}

0 commit comments

Comments
 (0)