public void ArrayInNestedOptionBinding()
        {
            var input = new Dictionary <string, string>
            {
                { "ObjectArray:0:ArrayInNestedOption:0", "0" },
                { "ObjectArray:0:ArrayInNestedOption:1", "1" },
                { "ObjectArray:1:ArrayInNestedOption:0", "10" },
                { "ObjectArray:1:ArrayInNestedOption:1", "11" },
                { "ObjectArray:1:ArrayInNestedOption:2", "12" },
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddInMemoryCollection(input);
            var config  = configurationBuilder.Build();
            var options = new OptionsWithArrays();

            config.FastBind(options);

            Assert.AreEqual(2, options.ObjectArray.Length);
            Assert.AreEqual(2, options.ObjectArray[0].ArrayInNestedOption.Length);
            Assert.AreEqual(3, options.ObjectArray[1].ArrayInNestedOption.Length);

            Assert.AreEqual(0, options.ObjectArray[0].ArrayInNestedOption[0]);
            Assert.AreEqual(1, options.ObjectArray[0].ArrayInNestedOption[1]);
            Assert.AreEqual(10, options.ObjectArray[1].ArrayInNestedOption[0]);
            Assert.AreEqual(11, options.ObjectArray[1].ArrayInNestedOption[1]);
            Assert.AreEqual(12, options.ObjectArray[1].ArrayInNestedOption[2]);
        }
        public void JaggedArrayBinding()
        {
            var input = new Dictionary <string, string>
            {
                { "JaggedArray:0:0", "00" },
                { "JaggedArray:0:1", "01" },
                { "JaggedArray:1:0", "10" },
                { "JaggedArray:1:1", "11" },
                { "JaggedArray:1:2", "12" },
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddInMemoryCollection(input);
            var config  = configurationBuilder.Build();
            var options = new OptionsWithArrays();

            config.FastBind(options);

            Assert.AreEqual(2, options.JaggedArray.Length);
            Assert.AreEqual(2, options.JaggedArray[0].Length);
            Assert.AreEqual(3, options.JaggedArray[1].Length);

            Assert.AreEqual("00", options.JaggedArray[0][0]);
            Assert.AreEqual("01", options.JaggedArray[0][1]);
            Assert.AreEqual("10", options.JaggedArray[1][0]);
            Assert.AreEqual("11", options.JaggedArray[1][1]);
            Assert.AreEqual("12", options.JaggedArray[1][2]);
        }
        public void BindAlreadyInitializedArray()
        {
            var input = new Dictionary <string, string>
            {
                { "AlreadyInitializedArray:0", "val0" },
                { "AlreadyInitializedArray:1", "val1" },
                { "AlreadyInitializedArray:2", "val2" },
                { "AlreadyInitializedArray:x", "valx" }
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddInMemoryCollection(input);
            var config = configurationBuilder.Build();

            var options = new OptionsWithArrays();

            config.FastBind(options);

            var array = options.AlreadyInitializedArray;

            Assert.AreEqual(7, array.Length);

            Assert.AreEqual(OptionsWithArrays.InitialValue, array[0]);
            Assert.IsNull(array[1]);
            Assert.IsNull(array[2]);
            Assert.AreEqual("val0", array[3]);
            Assert.AreEqual("val1", array[4]);
            Assert.AreEqual("val2", array[5]);
            Assert.AreEqual("valx", array[6]);
        }
        public void BindStringArray()
        {
            var input = new Dictionary <string, string>
            {
                { "StringArray:0", "val0" },
                { "StringArray:1", "val1" },
                { "StringArray:2", "val2" },
                { "StringArray:x", "valx" }
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddInMemoryCollection(input);
            var config = configurationBuilder.Build();

            var instance = new OptionsWithArrays();

            config.FastBind(instance);

            var array = instance.StringArray;

            Assert.AreEqual(4, array.Length);

            Assert.AreEqual("val0", array[0]);
            Assert.AreEqual("val1", array[1]);
            Assert.AreEqual("val2", array[2]);
            Assert.AreEqual("valx", array[3]);
        }
        public void BindAlreadyInitializedArray()
        {
            var input = new Dictionary <string, string>
            {
                { "AlreadyInitializedArray:0", "val0" },
                { "AlreadyInitializedArray:1", "val1" },
                { "AlreadyInitializedArray:2", "val2" },
                { "AlreadyInitializedArray:x", "valx" }
            };

            var builder = new ConfigurationBuilder(new MemoryConfigurationProvider(input));
            var config  = builder.Build();

            var options = new OptionsWithArrays();

            config.Bind(options);

            var array = options.AlreadyInitializedArray;

            Assert.Equal(7, array.Length);

            Assert.Equal(OptionsWithArrays.InitialValue, array[0]);
            Assert.Equal(null, array[1]);
            Assert.Equal(null, array[2]);
            Assert.Equal("val0", array[3]);
            Assert.Equal("val1", array[4]);
            Assert.Equal("val2", array[5]);
            Assert.Equal("valx", array[6]);
        }
        public void UnsupportedMultidimensionalArrays()
        {
            var input = new Dictionary <string, string>
            {
                { "DimensionalArray:0:0", "a" },
                { "DimensionalArray:0:1", "b" }
            };

            var builder = new ConfigurationBuilder(new MemoryConfigurationProvider(input));
            var config  = builder.Build();
            var options = new OptionsWithArrays();

            var exception = Assert.Throws <InvalidOperationException>(
                () => config.Bind(options));

            Assert.Equal(
                Resources.FormatError_UnsupportedMultidimensionalArray(typeof(string[, ])),
                exception.Message);
        }
Ejemplo n.º 7
0
        public void UnsupportedMultidimensionalArrays()
        {
            var input = new Dictionary <string, string>
            {
                { "DimensionalArray:0:0", "a" },
                { "DimensionalArray:0:1", "b" }
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddInMemoryCollection(input);
            var config  = configurationBuilder.Build();
            var options = new OptionsWithArrays();

            var exception = Assert.Throws <InvalidOperationException>(
                () => config.HzBind(options));
            //Assert.AreEqual(
            //    Resources.FormatError_UnsupportedMultidimensionalArray(typeof(string[,])),
            //    exception.Message);
        }