public async void SmokeTestAsyncMissHit() { var path = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}"); Directory.CreateDirectory(path); AsyncCache cache = null; try { var builder = new HashBasedPathBuilder(path, 8192, '/', ".jpg"); cache = new AsyncCache(new AsyncCacheOptions(), new NullCacheManager(), builder,null); var keyBasis = new byte[] {6,1,2}; var result = await cache.GetOrCreateBytes(keyBasis, (token) => { return Task.FromResult(new Tuple<string, ArraySegment<byte>>( null, new ArraySegment<byte>(new byte[] {3, 2, 1}))); }, CancellationToken.None, false); Assert.NotNull(result.Data); await result.Data.DisposeAsync(); Assert.Equal("Miss", result.Status); await cache.AwaitEnqueuedTasks(); var result2 = await cache.GetOrCreateBytes(keyBasis, (token) => { return Task.FromResult(new Tuple<string, ArraySegment<byte>>( null, new ArraySegment<byte>(new byte[] {3, 2, 1}))); }, CancellationToken.None, false); Assert.NotNull(result2.Data); await result2.Data.DisposeAsync(); Assert.Equal("DiskHit", result2.Status); var hash = builder.HashKeyBasis(keyBasis); var expectedPhysicalPath = builder.GetPhysicalPathFromHash(hash); Assert.True(File.Exists(expectedPhysicalPath)); } finally { try { await cache.AwaitEnqueuedTasks(); } finally { Directory.Delete(path, true); } } }