public void IsInvokableWithDefaultParametersIsCorrect(Type type, bool expectedIsInvokableWithDefaultParameters, params string[] resolvableMemberNames) { var constructor = type.GetTypeInfo().GetConstructors()[0]; var members = resolvableMemberNames.ToDictionary(x => x, x => (IConfigurationSection)null); var orderInfo = new ConstructorOrderInfo(constructor, members, Resolver.Empty); Assert.Same(constructor, orderInfo.Constructor); Assert.Equal(expectedIsInvokableWithDefaultParameters, orderInfo.IsInvokableWithDefaultParameters); }
public void TotalParametersIsCorrect(Type type, int expectedTotalParameters) { var constructor = type.GetTypeInfo().GetConstructors()[0]; var members = new Dictionary <string, IConfigurationSection>(); var orderInfo = new ConstructorOrderInfo(constructor, members, Resolver.Empty); Assert.Same(constructor, orderInfo.Constructor); Assert.Equal(expectedTotalParameters, orderInfo.TotalParameters); }
public void CompareToReturnsTheCorrectValue(Type lhsConstructorType, Type rhsConstructorType, int expectedComparisonValue, params string[] resolvableMemberNames) { var lhsConstructor = lhsConstructorType.GetTypeInfo().GetConstructors()[0]; var rhsConstructor = rhsConstructorType.GetTypeInfo().GetConstructors()[0]; var members = resolvableMemberNames.ToDictionary(x => x, x => (IConfigurationSection)null); var lhs = new ConstructorOrderInfo(lhsConstructor, members, Resolver.Empty); var rhs = new ConstructorOrderInfo(rhsConstructor, members, Resolver.Empty); var actual = lhs.CompareTo(rhs); Assert.Equal(expectedComparisonValue, actual); }
public void AlternateNameIsUsed(Type type, string configurationMemberName) { var constructor = type.GetConstructors()[0]; var members = new Dictionary <string, IConfigurationSection>() { { configurationMemberName, null } }; var orderInfo = new ConstructorOrderInfo(constructor, members, Resolver.Empty); Assert.True(orderInfo.IsInvokableWithoutDefaultParameters); Assert.True(orderInfo.IsInvokableWithDefaultParameters); Assert.Equal(1, orderInfo.MatchedParameters); Assert.Empty(orderInfo.MissingParameterNames); }
public void GivenTheBestMatchingConstructorHasParametersNotMappedToAConfigurationChild_ThrowsArgumentException() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary <string, string> { { "foo:bar", "123" }, }) .Build(); var fooSection = config.GetSection("foo"); var actual = Assert.Throws <InvalidOperationException>(() => fooSection.Create <TwoArgConstructor>()); #if DEBUG var constructorOrderInfo = new ConstructorOrderInfo( typeof(TwoArgConstructor).GetTypeInfo().GetConstructors()[0], new Dictionary <string, IConfigurationSection> { { "bar", null } }, Resolver.Empty); var expected = Exceptions.MissingRequiredConstructorParameters(fooSection, constructorOrderInfo); Assert.Equal(expected.Message, actual.Message); #endif }