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();
            });
        }
示例#3
0
        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);
        }
示例#4
0
 public ValueTask DisposeAsync()
 {
     return(_underlyingManager.DisposeAsync());
 }