public async Task BindComplexCollectionFromIndexes_InfiniteIndexes() { // Arrange var valueProvider = new SimpleValueProvider { { "someName[0]", "42" }, { "someName[1]", "100" }, { "someName[3]", "400" } }; var bindingContext = GetModelBindingContext(valueProvider); var binder = new CollectionModelBinder <int>(CreateIntBinder(), NullLoggerFactory.Instance); // Act var boundCollection = await binder.BindComplexCollectionFromIndexes(bindingContext, indexNames : null); // Assert Assert.Equal(new[] { 42, 100 }, boundCollection.Model.ToArray()); // This uses the default IValidationStrategy Assert.DoesNotContain(boundCollection, bindingContext.ValidationState.Keys); }
public async Task BindComplexCollectionFromIndexes_FiniteIndexes() { // Arrange var valueProvider = new SimpleValueProvider { { "someName[foo]", "42" }, { "someName[baz]", "200" } }; var bindingContext = GetModelBindingContext(valueProvider); var binder = new CollectionModelBinder <int>(CreateIntBinder(), NullLoggerFactory.Instance); // Act var collectionResult = await binder.BindComplexCollectionFromIndexes( bindingContext, new[] { "foo", "bar", "baz" }); // Assert Assert.Equal(new[] { 42, 0, 200 }, collectionResult.Model.ToArray()); // This requires a non-default IValidationStrategy var strategy = Assert.IsType <ExplicitIndexCollectionValidationStrategy>(collectionResult.ValidationStrategy); Assert.Equal(new[] { "foo", "bar", "baz" }, strategy.ElementKeys); }