示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }