public async Task ClearAllEntries()
        {
            // arrange
            FetchDataDelegate <string, string> fetch = async keys =>
                                                       await Task.FromResult(new IResult <string> [0])
                                                       .ConfigureAwait(false);

            var options = new DataLoaderOptions <string>
            {
                Batching = false
            };
            var loader = new DataLoader <string, string>(options, fetch);

            loader.Set("Foo", Task.FromResult("Bar"));
            loader.Set("Bar", Task.FromResult("Baz"));

            // act
            IDataLoader <string, string> result = loader.Clear();

            // assert
            Func <Task> verify = () => loader.LoadAsync("Foo", "Bar");

            Assert.Equal(loader, result);
            await Assert.ThrowsAsync <InvalidOperationException>(verify)
            .ConfigureAwait(false);
        }
        public void ClearNoException()
        {
            // arrange
            FetchDataDelegate <string, string> fetch = TestHelpers.CreateFetch <string, string>();
            var batchScheduler = new ManualBatchScheduler();
            var loader         = new DataLoader <string, string>(batchScheduler, fetch);

            // act
            Action verify = () => loader.Clear();

            // assert
            Assert.Null(Record.Exception(verify));
        }
        public void ClearNoException()
        {
            // arrange
            FetchDataDelegate <string, string> fetch = CreateFetch <string, string>();
            var batchScheduler = new ManualBatchScheduler();
            var loader         = new DataLoader <string, string>(fetch, batchScheduler);

            // act
            void Verify() => loader.Clear();

            // assert
            Assert.Null(Record.Exception(Verify));
        }
        public void ClearNoException()
        {
            // arrange
            FetchDataDelegate <string, string> fetch = async keys =>
                                                       await Task.FromResult(new IResult <string> [0])
                                                       .ConfigureAwait(false);

            var options = new DataLoaderOptions <string>();
            var loader  = new DataLoader <string, string>(options, fetch);

            // act
            Action verify = () => loader.Clear();

            // assert
            Assert.Null(Record.Exception(verify));
        }
        public void ClearAllEntries()
        {
            // arrange
            FetchDataDelegate <string, string> fetch = CreateFetch <string, string>();
            var batchScheduler = new ManualBatchScheduler();
            var cache          = new TaskCache(10);
            var options        = new DataLoaderOptions {
                Cache = cache
            };
            var loader = new DataLoader <string, string>(fetch, batchScheduler, options);

            loader.Set("Foo", Task.FromResult("Bar"));
            loader.Set("Bar", Task.FromResult("Baz"));

            // act
            loader.Clear();

            // assert
            Assert.Equal(0, cache.Usage);
        }