public async Task Methods_delegate_to_configured_store_creator(bool async)
        {
            var creator = new FakeDatabaseCreator();

            var context = InMemoryTestHelpers.Instance.CreateContext(
                new ServiceCollection().AddSingleton <IDatabaseCreator>(creator));

            if (async)
            {
                Assert.True(await context.Database.EnsureCreatedAsync());
                Assert.Equal(1, creator.EnsureCreatedAsyncCount);

                Assert.True(await context.Database.EnsureDeletedAsync());
                Assert.Equal(1, creator.EnsureDeletedAsyncCount);

                Assert.True(await context.Database.CanConnectAsync());
                Assert.Equal(1, creator.CanConnectAsyncCount);
            }
            else
            {
                Assert.True(context.Database.EnsureCreated());
                Assert.Equal(1, creator.EnsureCreatedCount);

                Assert.True(context.Database.EnsureDeleted());
                Assert.Equal(1, creator.EnsureDeletedCount);

                Assert.True(context.Database.CanConnect());
                Assert.Equal(1, creator.CanConnectCount);
            }
        }
        public async Task CanConnect_methods_throw_if_not_implemented(bool async)
        {
            var creator = new FakeDatabaseCreator();

            var context = InMemoryTestHelpers.Instance.CreateContext(
                new ServiceCollection().AddSingleton <IDatabaseCreator>(creator));

            if (async)
            {
                await Assert.ThrowsAsync <NotImplementedException>(() => context.Database.CanConnectAsync());
            }
            else
            {
                Assert.Throws <NotImplementedException>(() => context.Database.CanConnect());
            }
        }