コード例 #1
0
        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);
        }
コード例 #8
0
        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));
        }
コード例 #10
0
        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>()));
        }