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); }
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); }
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); }