Ejemplo n.º 1
0
        public void BindingBackAssert <TTargetProperty>(
            CalcBinding.Binding calcBinding,
            INotifyPropertyChanged source, Func <object> sourcePropertyGetter,
            FrameworkElement targetObject, DependencyProperty targetProperty,
            Action <TTargetProperty> targetPropertySetter,
            TTargetProperty targetPropertyValue1, TTargetProperty targetPropertyValue2,
            object sourcePropertyValue1, object sourcePropertyValue2)
        {
            targetObject.DataContext = source;

            var bindingExpression = calcBinding.ProvideValue(new ServiceProviderMock(targetObject, targetProperty));

            targetObject.SetValue(targetProperty, bindingExpression);

            //act
            targetPropertySetter(targetPropertyValue1);

            //assert
            var realSourcePropertyValue1 = sourcePropertyGetter();

            Assert.AreEqual(sourcePropertyValue1, realSourcePropertyValue1);

            //act
            targetPropertySetter(targetPropertyValue2);

            //assert
            var realSourcePropertyValue2 = sourcePropertyGetter();

            Assert.AreEqual(sourcePropertyValue2, realSourcePropertyValue2);
        }
Ejemplo n.º 2
0
        public void BindingAssert <TTargetProperty>(
            CalcBinding.Binding calcBinding, INotifyPropertyChanged source,
            FrameworkElement targetObject, DependencyProperty targetProperty,
            Func <TTargetProperty> targetPropertyGetter,
            Action sourcePropertySetter1, TTargetProperty targetValue1,
            Action sourcePropertySetter2, TTargetProperty targetValue2
            )
        {
            //var test = new ExampleViewModel();

            targetObject.DataContext = source;

            var bindingExpression = calcBinding.ProvideValue(new ServiceProviderMock(targetObject, targetProperty));

            targetObject.SetValue(targetProperty, bindingExpression);

            //act
            sourcePropertySetter1();

            //assert
            var realValue1 = targetPropertyGetter();

            Assert.AreEqual(targetValue1, realValue1);

            //act
            sourcePropertySetter2();

            //assert
            var realValue2 = targetPropertyGetter();

            Assert.AreEqual(targetValue2, realValue2);
        }
Ejemplo n.º 3
0
        public void DataTriggerTest()
        {
            var viewModel = new ExampleViewModel()
            {
                A = 1, B = 1
            };
            var text = new TextBox
            {
                DataContext = viewModel
            };

            var dataTrigger1 = new DataTrigger
            {
                Value = true
            };

            dataTrigger1.Setters.Add(new Setter {
                Property = TextBox.BackgroundProperty, Value = Brushes.Red
            });
            dataTrigger1.Setters.Add(new Setter {
                Property = TextBox.IsEnabledProperty, Value = true
            });

            var calcBinding1 = new CalcBinding.Binding("(A+B)>10");

            var bindingExpression1 = calcBinding1.ProvideValue(
                new ServiceProviderMock(dataTrigger1, typeof(DataTrigger).GetProperty("Binding"), null)
                .WithNullXamlSchemaContextProvider()
                );

            dataTrigger1.Binding = bindingExpression1 as BindingBase;

            var dataTrigger2 = new DataTrigger
            {
                Value = true,
            };

            dataTrigger2.Setters.Add(new Setter {
                Property = TextBox.BackgroundProperty, Value = Brushes.Green
            });
            dataTrigger2.Setters.Add(new Setter {
                Property = TextBox.IsEnabledProperty, Value = false
            });

            var calcBinding2 = new CalcBinding.Binding("(A+B)<=10");

            var bindingExpression2 = calcBinding2.ProvideValue(
                new ServiceProviderMock(dataTrigger2, typeof(DataTrigger).GetProperty("Binding"), null)
                .WithNullXamlSchemaContextProvider()
                );

            dataTrigger2.Binding = bindingExpression2 as BindingBase;

            var style = new Style();

            style.Triggers.Add(dataTrigger1);
            style.Triggers.Add(dataTrigger2);

            text.Style = style;

            // act, assert
            viewModel.A = 5;
            viewModel.B = 7;

            Assert.AreEqual(Brushes.Red, text.Background);
            Assert.AreEqual(true, text.IsEnabled);

            viewModel.B = 2;

            Assert.AreEqual(Brushes.Green, text.Background);
            Assert.AreEqual(false, text.IsEnabled);
        }