public async Task Create_NullableTypeMismatch_ThrowsExpectedError() { // Arrange IBindingProvider product = new DataBindingProvider(); string parameterName = "p"; Type parameterType = typeof(int?); BindingProviderContext context = CreateBindingContext(parameterName, parameterType); // Act IBinding binding = await product.TryCreateAsync(context); // Assert Assert.NotNull(binding); var functionBindingContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, null); var valueBindingContext = new ValueBindingContext(functionBindingContext, CancellationToken.None); var bindingData = new Dictionary <string, object> { { "p", "123" } }; var bindingContext = new BindingContext(valueBindingContext, bindingData); var ex = await Assert.ThrowsAsync <InvalidOperationException>(async() => { await binding.BindAsync(bindingContext); }); Assert.Equal("Binding data for 'p' is not of expected type Nullable<Int32>.", ex.Message); }
public async Task Create_HandlesNullableTypes() { // Arrange IBindingProvider product = new DataBindingProvider(); string parameterName = "p"; Type parameterType = typeof(int?); BindingProviderContext context = CreateBindingContext(parameterName, parameterType); // Act IBinding binding = await product.TryCreateAsync(context); // Assert Assert.NotNull(binding); var functionBindingContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, null); var valueBindingContext = new ValueBindingContext(functionBindingContext, CancellationToken.None); var bindingData = new Dictionary <string, object> { { "p", 123 } }; var bindingContext = new BindingContext(valueBindingContext, bindingData); var valueProvider = await binding.BindAsync(bindingContext); var value = valueProvider.GetValue(); Assert.Equal(123, value); bindingData["p"] = null; bindingContext = new BindingContext(valueBindingContext, bindingData); valueProvider = await binding.BindAsync(bindingContext); value = valueProvider.GetValue(); Assert.Null(value); }
public void Create_ReturnsBinding_IfContainsResolvedGenericParameter() { // Arrange IBindingProvider product = new DataBindingProvider(); string parameterName = "Parameter"; Type parameterType = typeof(IEnumerable <int>); BindingProviderContext context = CreateBindingContext(parameterName, parameterType); // Act IBinding binding = product.TryCreateAsync(context).GetAwaiter().GetResult(); // Assert Assert.NotNull(binding); }
public void Create_ReturnsNull_IfByRefParameter() { // Arrange IBindingProvider product = new DataBindingProvider(); string parameterName = "Parameter"; Type parameterType = typeof(int).MakeByRefType(); BindingProviderContext context = CreateBindingContext(parameterName, parameterType); // Act IBinding binding = product.TryCreateAsync(context).GetAwaiter().GetResult(); // Assert Assert.Null(binding); }