public async Task DisposeIfDisposedTest() { var disposeCalled = false; var lazy = new DisposableAsyncLazy <byte>( _ => { return(Task.FromResult <byte>(12)); }, p => { Assert.AreEqual(12, p); disposeCalled = true; return(Task.CompletedTask); }, DisposableAsyncLazyOptions.None); await lazy; await lazy.DisposeAsync(); disposeCalled = false; await lazy.DisposeAsync(); Assert.IsFalse(disposeCalled); }
public async Task DisposalThrowsTest() { var lazy = new DisposableAsyncLazy <byte>( _ => { return(Task.FromResult <byte>(12)); }, p => { throw new Exception(); }, DisposableAsyncLazyOptions.None); await lazy; await Assert.ThrowsExceptionAsync <Exception>(async() => { await lazy.DisposeAsync(); }); }
public async Task DisposalThrowsTest() { var lazy = new DisposableAsyncLazy <byte>( _ => { return(Task.FromResult <byte>(12)); }, p => { throw new CustomException(); }, DisposableAsyncLazyOptions.None); await lazy; await Assert.ThrowsExceptionAsync <CustomException>(async() => { await lazy.DisposeAsync(); }); Assert.AreEqual(TaskStatus.RanToCompletion, lazy.GetDisposeTask().Status); }
public ValueTask DisposeAsync() { return(_underlyingManager.DisposeAsync()); }