Add test coverage for Flags enum binding

This commit is contained in:
Kiran Challa 2015-12-07 14:01:13 -08:00
parent f9f59fe58b
commit ceaa9a9251
1 changed files with 35 additions and 0 deletions

View File

@ -189,6 +189,32 @@ namespace Microsoft.AspNet.Mvc.ModelBinding.Test
Assert.True(bindingContext.ModelState.ContainsKey("theModelName"));
}
[Theory]
[InlineData("0", 0)]
[InlineData("1", 1)]
[InlineData("13", 13)]
[InlineData("Value1", 1)]
[InlineData("Value8, Value4", 12)]
public async Task BindModel_BindsFlagsEnumModels(string flagsEnumValue, int expected)
{
// Arrange
var bindingContext = GetBindingContext(typeof(FlagsEnum));
bindingContext.ValueProvider = new SimpleValueProvider
{
{ "theModelName", flagsEnumValue }
};
var binder = new SimpleTypeModelBinder();
// Act
var result = await binder.BindModelAsync(bindingContext);
// Assert
Assert.True(result.IsModelSet);
var boundModel = Assert.IsType<FlagsEnum>(result.Model);
Assert.Equal((FlagsEnum)expected, boundModel);
}
private static ModelBindingContext GetBindingContext(Type modelType)
{
return new ModelBindingContext
@ -203,5 +229,14 @@ namespace Microsoft.AspNet.Mvc.ModelBinding.Test
private sealed class TestClass
{
}
[Flags]
private enum FlagsEnum
{
Value1 = 1,
Value2 = 2,
Value4 = 4,
Value8 = 8
}
}
}