public void ResolveManifestToken_caches_based_on_connection_server_and_database()
        {
            var resolver = new DefaultManifestTokenResolver();

            Assert.Equal("1908", resolver.ResolveManifestToken(CreateConnection <FakeSqlConnection>("1908", "Cheese", "Pickle")));

            // The following call should still return 1908 because the cache is being used
            Assert.Equal("1908", resolver.ResolveManifestToken(CreateConnection <FakeSqlConnection>("2108", "Cheese", "Pickle")));

            // Each of the following calls should miss the cache and return the new manifest token value
            Assert.Equal("2110", resolver.ResolveManifestToken(CreateConnection <FakeSqlConnection>("2110", "Beer", "Pickle")));
            Assert.Equal("2111", resolver.ResolveManifestToken(CreateConnection <FakeSqlConnection>("2111", "Cheese", "Chips")));

#if !NET40
            // Only on .NET 4.5 because provider lookup will fail on .NET 4 unless we jump through hoops to register
            Assert.Equal("2109", resolver.ResolveManifestToken(CreateConnection <DerivedFakeSqlConnection>("2109", "Cheese", "Pickle")));
#endif
        }