namespace R3.Tests.OperatorTests; public class ToAsyncEnumerableTest { [Fact] async Task Test() { var publisher = new Subject(); var cts = new CancellationTokenSource(); var e = publisher.ToAsyncEnumerable(cts.Token); publisher.OnNext(1); publisher.OnNext(10); publisher.OnNext(100); publisher.OnCompleted(); var l = new List(); await foreach (var item in e) { l.Add(item); } l.ShouldBe([1, 10, 100]); } [Fact] async Task Cancel() { var publisher = new Subject(); var cts = new CancellationTokenSource(); var disposed = false; var e = publisher.Do(onDispose: () => disposed = true).ToAsyncEnumerable(cts.Token); publisher.OnNext(1); publisher.OnNext(10); publisher.OnNext(100); // publisher.OnCompleted(); var l = new List(); await Assert.ThrowsAsync(async () => { await foreach (var item in e) { l.Add(item); if (item == 10) { cts.Cancel(); } } }); l.ShouldBe([1, 10, 100]); disposed.ShouldBeTrue(); } }