Example #1
0
        private static SettingsFiller GetSettingsFillerWithDefaultCtor()
        {
            SettingsFillerStaticDefaults.DefaultDefaultRawSettingsProvider = new FromFuncProvider(key => key.ToString().Last().ToString());
            var settingsFiller = new SettingsFiller();

            return(settingsFiller);
        }
        public void SettingsFillerTest_NoChooser()
        {
            var rawSettingsProvider = new FromFuncProvider(key => key.ToString().Last().ToString());
            var settingsFiller      = new SettingsFiller(null, rawSettingsProvider);

            Assert.AreEqual(SettingsFillerStaticDefaults.DefaultSettingsConverterChooser, settingsFiller.SettingsConverterChooser);
        }
        private static SettingsFiller GetBasicSettingsFiller()
        {
            var converterChooser    = new SettingsConverterChooser(new[] { new StringToFrameworkTypesConverter() });
            var rawSettingsProvider = new FromFuncProvider(key => key.ToString().Last().ToString());
            var settingsFiller      = new SettingsFiller(converterChooser, rawSettingsProvider);

            return(settingsFiller);
        }
        public void NotInvariantCultureTest()
        {
            var converterChooser    = new SettingsConverterChooser(new[] { new StringToFrameworkTypesConverter() });
            var rawSettingsProvider = new FromFuncProvider(_ => "1 000,1");
            var settingsFiller      = new SettingsFiller(converterChooser, rawSettingsProvider);

            Assert.ThrowsException <RapidSettingsException>(() => settingsFiller.CreateWithSettings <NonInvariantDoubleSettings>());
        }
Example #5
0
        public void EndToEndTest()
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json")
                                .Build();

            var settingsFiller = new SettingsFiller(defaultRawSettingsProvider: new FromIConfigurationProvider(configuration));

            var settings = settingsFiller.CreateWithSettings <SomeSettings>();

            Assert.AreEqual("String", settings.TestString);
            Assert.AreEqual(5, settings.TestInt);
            Assert.AreEqual(4.5, settings.TestDouble);
            Assert.AreEqual(1.2, settings.TestNullableDouble);

            var expectedList = new List <long> {
                1, 2, 3
            };

            CollectionAssert.AreEqual(expectedList, settings.TestList.ToList());

            var expectedKvps = new KeyValuePair <string, int>[]
            {
                new KeyValuePair <string, int>("A", 1),
                new KeyValuePair <string, int>("B", 2),
            };

            Assert.IsTrue(!settings.TestDict.Except(expectedKvps).Any());

            var expectedDict = new Dictionary <string, Dictionary <string, Dictionary <string, List <int> > > >
            {
                {
                    "A", new Dictionary <string, Dictionary <string, List <int> > >
                    {
                        {
                            "B", new Dictionary <string, List <int> > {
                                { "C", new List <int> {
                                      1, 2, 3
                                  } }
                            }
                        },
                        {
                            "B1", new Dictionary <string, List <int> > {
                                { "C1", new List <int> {
                                      4, 5, 6
                                  } }
                            }
                        },
                    }
                },
            };

            var expectedDictJson = JsonSerializer.Serialize(expectedDict);
            var actualDictJson   = JsonSerializer.Serialize(settings.TestComplexDict);

            Assert.AreEqual(expectedDictJson, actualDictJson);
        }
        public void SettingsFillerTest_NoProvider()
        {
            var converterChooser = new SettingsConverterChooser(new[] { new StringToFrameworkTypesConverter() });
            var settingsFiller   = new SettingsFiller(converterChooser, null);

            foreach (var settingsProviderWithKey in SettingsFillerStaticDefaults.DefaultRawSettingsProviders)
            {
                Assert.IsTrue(settingsFiller.RawSettingsProvidersByNames.ContainsKey(settingsProviderWithKey.Key));
                Assert.AreEqual(settingsFiller.RawSettingsProvidersByNames[settingsProviderWithKey.Key], settingsProviderWithKey.Value);
            }
        }
        private static SettingsFiller GetAdvancedSettingsFiller()
        {
            var converterChooser     = new SettingsConverterChooser(new IRawSettingsConverter[] { new StringToFrameworkTypesConverter(), new SuperConverter() });
            var funcSettingsProvider = new FromFuncProvider(key => new C());
            var envSettingsProvider  = new FromEnvironmentProvider();
            var settingsFiller       = new SettingsFiller(converterChooser, new Dictionary <string, IRawSettingsProvider> {
                { "func", funcSettingsProvider }, { "env", envSettingsProvider }
            }, funcSettingsProvider);

            return(settingsFiller);
        }
        public void NonNumericSimpleFrameworkStructsTest()
        {
            var converterChooser    = new SettingsConverterChooser(new[] { new StringToFrameworkTypesConverter() });
            var rawSettingsProvider = new FromFuncProvider(key =>
            {
                switch (key)
                {
                case string x when x.EndsWith(typeof(Guid).Name, StringComparison.InvariantCultureIgnoreCase):
                    return(Guid.NewGuid().ToString());

                case string x when x.EndsWith(typeof(bool).Name, StringComparison.InvariantCultureIgnoreCase):
                    return(bool.TrueString);

                case string x when x.EndsWith(typeof(string).Name, StringComparison.InvariantCultureIgnoreCase):
                    return("asdf");

                case string x when x.EndsWith(typeof(TimeSpan).Name, StringComparison.InvariantCultureIgnoreCase):
                    return("12:13:14");

                case string x when x.EndsWith(typeof(DateTime).Name, StringComparison.InvariantCultureIgnoreCase):
                    return("2000-01-01");

                case string x when x.EndsWith(typeof(DateTimeOffset).Name, StringComparison.InvariantCultureIgnoreCase):
                    return("2000-01-01");

                case string x when x.EndsWith(typeof(Uri).Name, StringComparison.InvariantCultureIgnoreCase):
                    return("https://nuget.org");

                case string x when x.EndsWith(typeof(DirectoryInfo).Name, StringComparison.InvariantCultureIgnoreCase):
                    return("D:\\SomeFolder");

                case string x when x.EndsWith(typeof(FileInfo).Name, StringComparison.InvariantCultureIgnoreCase):
                    return("filename.txt");

                default:
                    throw new ArgumentOutOfRangeException($"{nameof(key)} with value {key} is out of range of handled keys!");
                }
            });

            var settingsFiller = new SettingsFiller(converterChooser, rawSettingsProvider);

            var settings = settingsFiller.CreateWithSettings <NonNumericFrameworkTypesSettings>();

            Assert.AreEqual(true, settings.SomeBoolean);
            Assert.IsTrue(settings.SomeGuid != default(Guid));
            Assert.AreEqual("asdf", settings.SomeString);
            Assert.AreEqual(TimeSpan.Parse("12:13:14", CultureInfo.InvariantCulture), settings.SomeTimeSpan);
            Assert.AreEqual(DateTime.Parse("2000-01-01", CultureInfo.InvariantCulture), settings.SomeDateTime);
            Assert.AreEqual(DateTimeOffset.Parse("2000-01-01", CultureInfo.InvariantCulture), settings.SomeDateTimeOffset);
            Assert.AreEqual(new Uri("https://nuget.org"), settings.SomeUri);
            Assert.AreEqual(new DirectoryInfo("D:\\SomeFolder").FullName, settings.SomeDirectoryInfo.FullName);
            Assert.AreEqual(new FileInfo("filename.txt").FullName, settings.SomeFileInfo.FullName);
        }
Example #9
0
        private static SomeSettings GetSettings()
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json")
                                .Build();

            var settingsFiller = new SettingsFiller(
                settingsConverterChooser: SettingsFillerStaticDefaults.DefaultSettingsConverterChooser,
                rawSettingsProvidersByNames: SettingsFillerStaticDefaults.DefaultRawSettingsProviders,
                defaultRawSettingsProvider: new FromIConfigurationProvider(configuration));

            return(settingsFiller.CreateWithSettings <SomeSettings>());
        }
 public void SettingsFillerTest_NoProviders()
 {
     var converterChooser = new SettingsConverterChooser(new[] { new StringToFrameworkTypesConverter() });
     var settingsFiller   = new SettingsFiller(converterChooser, (IDictionary <string, IRawSettingsProvider>)null);
 }
Example #11
0
        private static SomeSettings GetSettings()
        {
            var settingsFiller = new SettingsFiller();

            return(settingsFiller.CreateWithSettings <SomeSettings>());
        }