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>()); }
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); }
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); }
private static SomeSettings GetSettings() { var settingsFiller = new SettingsFiller(); return(settingsFiller.CreateWithSettings <SomeSettings>()); }