public async Task TestCacheOnSyncAsync() { var sync = new SyncResolver(new AResource { Data = 1 }); var c1 = new CachedResolver(sync); await test(c1); Assert.AreEqual(1, sync.ByUri); Assert.AreEqual(1, sync.ByCanonical); var async = new AsyncResolver(new AResource { Data = 1 }); var c2 = new CachedResolver(async); await test(c2); Assert.AreEqual(1, async.ByUriAsync); Assert.AreEqual(1, async.ByCanonicalAsync); var sasync = new SyncAsyncResolver(new AResource { Data = 1 }); var c3 = new CachedResolver(sasync); await test(c3); Assert.AreEqual(0, sasync.ByUri); // cache will always prefer the async Assert.AreEqual(0, sasync.ByCanonical); // cache will always prefer the async Assert.AreEqual(1, sasync.ByUriAsync); Assert.AreEqual(1, sasync.ByCanonicalAsync); async Task test(CachedResolver r) { #pragma warning disable CS0618 // Type or member is obsolete var result = r.ResolveByUri("t") as AResource; #pragma warning restore CS0618 // Type or member is obsolete Assert.AreEqual(1, result.Data); result = await r.ResolveByCanonicalUriAsync("t") as AResource; Assert.AreEqual(1, result.Data); } }
public async Task TestAdaptedSyncSource() { var adaptee = new SyncResolver(); var adapted = adaptee.AsAsync(); _ = await adapted.ResolveByUriAsync(""); _ = await adapted.ResolveByCanonicalUriAsync(""); _ = await adapted.ResolveByCanonicalUriAsync(""); Assert.AreEqual(2, adaptee.ByCanonical); Assert.AreEqual(1, adaptee.ByUri); // Now call the async adapted sync resolver synchronously ;-) TaskHelper.Await(() => adapted.ResolveByUriAsync("")); Assert.AreEqual(2, adaptee.ByUri); }