public void AddKeyedConfigs() { var builder = new NeoConfigurationBuilder(); var myConfigs = new Dictionary <string, MyConfig> { { "one", new MyConfig { Name = "One", SubConfig = new MySubConfig { SubName = "Sub One" } } }, { "two", new MyConfig { Name = "Two", SubConfig = new MySubConfig { SubName = "Sub Two" } } } }; builder.AddJson(JsonConvert.SerializeObject(myConfigs)); var configuration = builder.Build(); var services = new ServiceCollection(); services.AddKeyedConfig <MyConfig>(configuration); var serviceProvider = services.BuildServiceProvider(); var configs = serviceProvider.GetRequiredService <IKeyedConfigs <MyConfig> >(); CollectionAssert.AreEqual(ToEnumerable(myConfigs), ToEnumerable(configs)); Assert.IsNotNull(serviceProvider.GetRequiredService <IReadOnlyDictionary <string, MyConfig> >()); Assert.IsNotNull(serviceProvider.GetRequiredService <IConfig>()); IEnumerable <string> ToEnumerable(IReadOnlyDictionary <string, MyConfig> dict) => dict.OrderBy(x => x.Key).Select(kv => $"{kv.Key} {kv.Value}"); }
public void AddConfigValueTypeTest(object obj) { var expected = new ValueTypeConfig { ShortValue = 1, UshortValue = 2, IntValue = 3, UIntValue = 4, LongValue = 5, ULongValue = 6, FloatValue = (float)-37.825039, DoubleValue = 144.971512, DecimalValue = (decimal) - 37.81612, CharValue = 'a', StringValue = "abc", DateTime = new DateTime(2020, 6, 26) }; var configuration = new NeoConfigurationBuilder().AddJson(JsonConvert.SerializeObject(obj)).Build(); var services = new ServiceCollection(); services.AddConfig <ValueTypeConfig>(configuration); Assert.AreEqual(JsonConvert.SerializeObject(expected), JsonConvert.SerializeObject(services.BuildServiceProvider().GetRequiredService <ValueTypeConfig>())); }
public void AddJsonTest(object a, object b, object merged) { var builder = new NeoConfigurationBuilder(); builder.AddJson(JsonConvert.SerializeObject(a)); builder.AddJson(JsonConvert.SerializeObject(b)); Assert.AreEqual(JsonConvert.SerializeObject(merged), (builder.Build() as INeoConfiguration)?.ToJson()); }
public void KeyIndexTest(object value) { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject(new { Value = value })); var key = "Value"; var configuration = new ConfigurationBuilder().AddJsonFile(file).Build(); var neoConfiguration = new NeoConfigurationBuilder().AddJsonFile(file).Build(); Assert.AreEqual(configuration[key], neoConfiguration[key]); }
public void GetSectionBasicValueTest(object value) { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject(new { Value = value })); var key = "Value"; var configurationSection = new ConfigurationBuilder().AddJsonFile(file).Build().GetSection(key); var neoConfigurationSection = new NeoConfigurationBuilder().AddJsonFile(file).Build().GetSection(key); Assert.AreEqual(configurationSection.Key, neoConfigurationSection.Key); Assert.AreEqual(configurationSection.Path, configurationSection.Path); Assert.AreEqual(configurationSection.Value, neoConfigurationSection.Value); }
public void NotExistingTest() { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject(new { Value = "abc" })); const string key = "Value1"; var configurationSection = new ConfigurationBuilder().AddJsonFile(file).Build().GetSection(key); var neoConfigurationSection = new NeoConfigurationBuilder().AddJsonFile(file).Build().GetSection(key); Assert.AreEqual(configurationSection.Key, neoConfigurationSection.Key); Assert.AreEqual(configurationSection.Path, configurationSection.Path); Assert.AreEqual(configurationSection.Value, neoConfigurationSection.Value); }
public void MultiLevelTest() { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject(new { One = new { Two = 1 } })); const string one = "One"; const string two = "Two"; var configurationSection = new ConfigurationBuilder().AddJsonFile(file).Build().GetSection(one).GetSection(two); var neoConfigurationSection = new NeoConfigurationBuilder().AddJsonFile(file).Build().GetSection(one).GetSection(two); Assert.AreEqual(configurationSection.Key, neoConfigurationSection.Key); Assert.AreEqual(configurationSection.Path, configurationSection.Path); Assert.AreEqual(configurationSection.Value, neoConfigurationSection.Value); }
public void ListBindingWithNull() { var builder = new NeoConfigurationBuilder(); var configuration = builder.Build(); var services = new ServiceCollection(); services.AddConfig <ListConfig>(configuration); var serviceProvider = services.BuildServiceProvider(); var config = serviceProvider.GetRequiredService <ListConfig>(); Assert.IsNotNull(config); Assert.IsEmpty(config); }
public void GetChildrenOfValueTypeTest(object obj) { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject(new { obj })); var configuration = new ConfigurationBuilder().AddJsonFile(file).Build().GetSection("obj"); var neoConfiguration = new NeoConfigurationBuilder().AddJsonFile(file).Build().GetSection("obj"); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Path).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Path).OrderBy(x => x)); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Key).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Key).OrderBy(x => x)); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Value).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Value).OrderBy(x => x)); }
public void ListBinding(string value, int count) { var builder = new NeoConfigurationBuilder(); builder.AddJson($"{{\"{nameof(ListConfig)}\": {value}}}"); var configuration = builder.Build(); var services = new ServiceCollection(); services.AddConfig <ListConfig>(configuration); var serviceProvider = services.BuildServiceProvider(); var config = serviceProvider.GetRequiredService <ListConfig>(); Assert.AreEqual(count, config.Count); }
public void GetChildrenTest() { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject( new { One = 1, Two = "two", Three = new[] { 1, 2, 3 }, Four = new { Five = "five", Six = "six" } })); var configuration = new ConfigurationBuilder().AddJsonFile(file).Build(); var neoConfiguration = new NeoConfigurationBuilder().AddJsonFile(file).Build(); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Path).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Path).OrderBy(x => x)); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Key).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Key).OrderBy(x => x)); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Value).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Value).OrderBy(x => x)); }
public void GetChildrenOfArrayTest() { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject(new { arr = new List <int> { 1, 2, 3 } })); var configuration = new ConfigurationBuilder().AddJsonFile(file).Build().GetSection("arr"); var neoConfiguration = new NeoConfigurationBuilder().AddJsonFile(file).Build().GetSection("arr"); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Path).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Path).OrderBy(x => x)); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Key).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Key).OrderBy(x => x)); CollectionAssert.AreEqual(configuration.GetChildren().Select(x => x.Value).OrderBy(x => x), neoConfiguration.GetChildren().Select(x => x.Value).OrderBy(x => x)); }
public void GetSectionArrayTest() { var file = $"{Guid.NewGuid()}.json"; File.WriteAllText(file, JsonConvert.SerializeObject(new { Value = new List <int> { 1, 2, 3 } })); var key = "Value"; var configurationSection = new ConfigurationBuilder().AddJsonFile(file).Build().GetSection(key); var neoConfigurationSection = new NeoConfigurationBuilder().AddJsonFile(file).Build().GetSection(key); for (var i = -1; i <= 3; i++) { Assert.AreEqual(configurationSection.GetSection(i.ToString()).Key, neoConfigurationSection.GetSection(i.ToString()).Key); Assert.AreEqual(configurationSection.GetSection(i.ToString()).Path, configurationSection.GetSection(i.ToString()).Path); Assert.AreEqual(configurationSection.GetSection(i.ToString()).Value, neoConfigurationSection.GetSection(i.ToString()).Value); } }
public void AddConfigTestWithParameter() { var services = new ServiceCollection(); var baseConfig = new BaseConfig { Name = "base name" }; services.AddSingleton(baseConfig); var configuration = new NeoConfigurationBuilder().AddJson(JsonConvert.SerializeObject( new { MyConfig = new { Value = "new value", SubConfig = new { Value = "new sub value" } } })).Build(); services.AddConfig <MyConfig>(configuration); var expected = new MyConfig(baseConfig) { Value = "new value", SubConfig = new SubConfig(baseConfig) { Value = "new sub value" } }; Assert.AreEqual(JsonConvert.SerializeObject(expected), JsonConvert.SerializeObject(services.BuildServiceProvider().GetRequiredService <MyConfig>())); }