public void Set_ModelBinder_And_ValueProviders()
        {
            HttpConfiguration    config = new HttpConfiguration();
            ModelBinderAttribute attr   = new ValueProviderAttribute(typeof(CustomValueProviderFactory))
            {
                BinderType = typeof(CustomModelBinderProvider)
            };
            IEnumerable <ValueProviderFactory> vpfs = attr.GetValueProviderFactories(config);

            Assert.IsType <CustomModelBinderProvider>(attr.GetModelBinderProvider(config));
            Assert.Equal(1, vpfs.Count());
            Assert.IsType <CustomValueProviderFactory>(vpfs.First());
        }
        public void Get_ModelBinder_From_Empty_Attribute()
        {
            HttpConfiguration config = new HttpConfiguration();

            config.Services.Replace(typeof(ModelBinderProvider), new CustomModelBinderProvider());

            // binder = null, so pulls default from config. But attribute still has value by specifying the value providers.
            ModelBinderAttribute attr = new ValueProviderAttribute(typeof(CustomValueProviderFactory));

            // Act
            IModelBinder binder = attr.GetModelBinder(config, null);

            // Assert
            Assert.Null(attr.BinderType); // using the default
            Assert.NotNull(binder);
            Assert.IsType <CustomModelBinder>(binder);
        }