public void NonPublicModeBindStillIgnoresReadonly(string property) { var dic = new Dictionary <string, string> { { property, "stuff" }, }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); var options = new ComplexOptions(); config.Bind(options, o => o.BindNonPublicProperties = true); Assert.Null(options.GetType().GetTypeInfo().GetDeclaredProperty(property).GetValue(options)); }
public void GetCanReadStaticProperty() { var dic = new Dictionary <string, string> { { "StaticProperty", "stuff" }, }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); var options = new ComplexOptions(); config.Bind(options); Assert.Equal("stuff", ComplexOptions.StaticProperty); }
public void BindCanSetNonPublicWhenSet(string property) { var dic = new Dictionary <string, string> { { property, "stuff" }, }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); var options = new ComplexOptions(); config.Bind(options, o => o.BindNonPublicProperties = true); Assert.Equal("stuff", options.GetType().GetTypeInfo().GetDeclaredProperty(property).GetValue(options)); }
public void GetIgnoresTests(string property) { var dic = new Dictionary <string, string> { { property, "stuff" }, }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); var options = new ComplexOptions(); config.Bind(options); Assert.Null(options.GetType().GetTypeInfo().GetDeclaredProperty(property).GetValue(options)); }
public void CanBindToObjectProperty() { var dic = new Dictionary <string, string> { { "Object", "whatever" } }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); var options = new ComplexOptions(); config.Bind(options); Assert.Equal("whatever", options.Object); }
public void GetCanReadComplexProperties() { var dic = new Dictionary <string, string> { { "Integer", "-2" }, { "Boolean", "TRUe" }, { "Nested:Integer", "11" } }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); var options = new ComplexOptions(); config.Bind(options); Assert.True(options.Boolean); Assert.Equal(-2, options.Integer); Assert.Equal(11, options.Nested.Integer); }
public void GetDefaultsWhenDataDoesNotExist() { var dic = new Dictionary <string, string> { }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); Assert.False(config.GetValue <bool>("Boolean")); Assert.Equal(0, config.GetValue <int>("Integer")); Assert.Equal(0, config.GetValue <int>("Nested:Integer")); Assert.Null(config.GetValue <ComplexOptions>("Object")); Assert.True(config.GetValue("Boolean", true)); Assert.Equal(3, config.GetValue("Integer", 3)); Assert.Equal(1, config.GetValue("Nested:Integer", 1)); var foo = new ComplexOptions(); Assert.Same(config.GetValue("Object", foo), foo); }
public void ThrowsIfPropertyInConfigMissingInNestedModel() { var dic = new Dictionary <string, string> { { "Nested:ThisDoesNotExistInTheModel", "42" }, { "Integer", "-2" }, { "Boolean", "TRUe" }, { "Nested:Integer", "11" } }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(dic); var config = configurationBuilder.Build(); var instance = new ComplexOptions(); string expectedMessage = SR.Format(SR.Error_MissingConfig, nameof(BinderOptions.ErrorOnUnknownConfiguration), nameof(BinderOptions), typeof(NestedOptions), "'ThisDoesNotExistInTheModel'"); var ex = Assert.Throws <InvalidOperationException>( () => config.Bind(instance, o => o.ErrorOnUnknownConfiguration = true)); Assert.Equal(expectedMessage, ex.Message); }