public void TryGetReader_ReturnsCachedDelegate_WhenTypeImplementsMultipleIAsyncEnumerableContracts() { // Arrange var options = new MvcOptions(); var readerFactory = new AsyncEnumerableReader(options); var asyncEnumerable1 = new MultiAsyncEnumerable(); var asyncEnumerable2 = new MultiAsyncEnumerable(); // Act Assert.True(readerFactory.TryGetReader(asyncEnumerable1.GetType(), out var reader1)); Assert.True(readerFactory.TryGetReader(asyncEnumerable2.GetType(), out var reader2)); // Assert Assert.Same(reader1, reader2); }
public async Task Reader_ReadsIAsyncEnumerable_ImplementingMultipleAsyncEnumerableInterfaces() { // This test ensures the reader does not fail if you have a type that implements IAsyncEnumerable for multiple Ts // Arrange var options = new MvcOptions(); var readerFactory = new AsyncEnumerableReader(options); var asyncEnumerable = new MultiAsyncEnumerable(); // Act var result = readerFactory.TryGetReader(asyncEnumerable.GetType(), out var reader); // Assert Assert.True(result); var readCollection = await reader(asyncEnumerable, default); var collection = Assert.IsAssignableFrom <ICollection <object> >(readCollection); Assert.Equal(new[] { "0", "1", "2", }, collection); }