public static void GetValue_GivenNullVersion_ThrowsArgmentNullException()
        {
            var dictionary = new Dictionary <Version, Func <int> >
            {
                [new Version(1, 0)] = () => 1,
                [new Version(1, 1)] = () => 2
            };
            var versionDictionary = new VersionResolvingFactory <int>(dictionary);

            Assert.That(() => versionDictionary.GetValue(null), Throws.ArgumentNullException);
        }
        public static void GetValue_GivenVersionMoreThanHighestInCtor_ReturnsHighestInCtor()
        {
            var dictionary = new Dictionary <Version, Func <int> >
            {
                [new Version(1, 0)] = () => 1,
                [new Version(1, 1)] = () => 2
            };
            var versionDictionary = new VersionResolvingFactory <int>(dictionary);

            var value = versionDictionary.GetValue(new Version(2, 0));

            Assert.That(value, Is.EqualTo(2));
        }
        public static void GetValue_GivenVersionAboveMiddle_ReturnsValueFromMiddleVersion()
        {
            var dictionary = new Dictionary <Version, Func <int> >
            {
                [new Version(1, 0)] = () => 1,
                [new Version(1, 1)] = () => 2,
                [new Version(2, 0)] = () => 3
            };
            var versionDictionary = new VersionResolvingFactory <int>(dictionary);

            var value = versionDictionary.GetValue(new Version(1, 5));

            Assert.That(value, Is.EqualTo(2));
        }
        private async Task <Option <IDatabaseSequenceProvider> > LoadVersionedSequenceProvider()
        {
            var version = await Dialect.GetDatabaseVersionAsync(Connection, CancellationToken.None).ConfigureAwait(false);

            var factories = new Dictionary <Version, Func <IDatabaseSequenceProvider> >
            {
                [new Version(9, 6)]  = () => new PostgreSqlDatabaseSequenceProviderBase(DbConnection, IdentifierDefaults, IdentifierResolver),
                [new Version(10, 0)] = () => new Versions.V10.PostgreSqlDatabaseSequenceProvider(DbConnection, IdentifierDefaults, IdentifierResolver)
            };
            var versionLookup = new VersionResolvingFactory <IDatabaseSequenceProvider>(factories);
            var result        = versionLookup.GetValue(version);

            return(Option <IDatabaseSequenceProvider> .Some(result));
        }