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);
        }
Пример #2
0
        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);
        }