public void Binding_TwoWayFromEditTextToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new EditText(Application.Context); _binding = new Binding<string, string>( control1, () => control1.Text, control2, () => control2.Text, BindingMode.TwoWay) .UpdateSourceTrigger<View.LongClickEventArgs>("LongClick") .ObserveTargetEvent<View.LongClickEventArgs>("LongClick"); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, control2.Text); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(string.Empty, control2.Text); control1.PerformLongClick(); Assert.AreEqual(control1.Text, control2.Text); var newValue = value + "Suffix"; control2.Text = newValue; Assert.AreEqual(newValue, control2.Text); Assert.AreEqual(value, control1.Text); control2.PerformLongClick(); Assert.AreEqual(control2.Text, control1.Text); }
public void SetCommand_OnBarButtonWithBinding_ParameterShouldUpdate() { var value = DateTime.Now.Ticks.ToString(); var vmSource = new TestViewModel { Model = new TestModel { MyProperty = value } }; var vmTarget = new TestViewModel(); var control = new UIBarButtonItemEx(); _binding = new Binding<string, string>( vmSource, () => vmSource.Model.MyProperty); control.SetCommand( "Clicked", vmTarget.SetPropertyCommand, _binding); Assert.IsNull(vmTarget.TargetProperty); control.PerformEvent(); Assert.AreEqual(value, vmTarget.TargetProperty); value += "Test"; vmSource.Model.MyProperty = value; control.PerformEvent(); Assert.AreEqual(value, vmTarget.TargetProperty); }
public void BindingSource_NewBindingWithPrivateProperty_NoError() { // For comparison only var vmSource = new TestViewModel { Model = new TestModel { MyProperty = "Initial value" } }; var vmTarget = new TestViewModel(); _binding = new Binding<string, string>( vmSource, () => vmSource.Model.MyProperty, vmTarget, () => vmTarget.TargetProperty); Assert.AreEqual(vmSource.Model.MyProperty, vmTarget.TargetProperty); var newValue1 = DateTime.Now.Ticks.ToString(); vmSource.Model.MyProperty = newValue1; Assert.AreEqual(vmSource.Model.MyProperty, vmTarget.TargetProperty); // Actual test VmSourcePrivate = new TestViewModel { Model = new TestModel { MyProperty = "Initial value" } }; VmTarget = new TestViewModel(); _binding = new Binding<string, string>( VmSourcePrivate, () => VmSourcePrivate.Model.MyProperty, VmTarget, () => VmTarget.TargetProperty); Assert.AreEqual(VmSourcePrivate.Model.MyProperty, VmTarget.TargetProperty); var newValue2 = DateTime.Now.Ticks.ToString(); VmSourcePrivate.Model.MyProperty = newValue2; Assert.AreEqual(VmSourcePrivate.Model.MyProperty, VmTarget.TargetProperty); }
public void Binding_OneWayFromCheckBoxToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UISwitchEx(); var control2 = new UISwitchEx(); _binding = new Binding<bool, bool>( control1, () => control1.On, control2, () => control2.On); Assert.IsFalse(control1.On); Assert.IsFalse(control2.On); control1.On = true; Assert.IsTrue(control1.On); Assert.IsTrue(control2.On); }
public void Binding_OneWayFromCheckBoxToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UITextViewEx(); var control2 = new UISwitchEx(); _binding = new Binding<bool, string>( control2, () => control2.On, control1, () => control1.Text); Assert.AreEqual("False", control1.Text); Assert.IsFalse(control2.On); control2.On = true; Assert.AreEqual("True", control1.Text); Assert.IsTrue(control2.On); }
public void Binding_OneWayFromCheckBoxToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new CheckBox(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding<bool, bool>( control1, () => control1.Checked, control2, () => control2.Checked); Assert.IsFalse(control1.Checked); Assert.IsFalse(control2.Checked); control1.Checked = true; Assert.IsTrue(control1.Checked); Assert.IsTrue(control2.Checked); }
public void Binding_OneWayFromCheckBoxToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding<bool, string>( control2, () => control2.Checked, control1, () => control1.Text); Assert.AreEqual("False", control1.Text); Assert.IsFalse(control2.Checked); control2.Checked = true; Assert.AreEqual("True", control1.Text); Assert.IsTrue(control2.Checked); }
public void Binding_OneWayFromCheckBoxToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding<bool, string>( control2, () => control2.Checked, control1, () => control1.Text) .UpdateSourceTrigger(); // LostFocus doesn't work programatically with CheckBoxes Assert.AreEqual("False", control1.Text); Assert.IsFalse(control2.Checked); control2.Checked = true; Assert.IsTrue(control2.Checked); Assert.AreEqual("True", control1.Text); }
public void Binding_OneWayFromCheckBoxToCheckBoxWithObserveEvent_BindingGetsUpdated() { var control1 = new CheckBox(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding<bool, bool>( control1, () => control1.Checked, control2, () => control2.Checked) .ObserveSourceEvent(); // LostFocus doesn't work programatically with CheckBoxes Assert.IsFalse(control1.Checked); Assert.IsFalse(control2.Checked); control1.Checked = true; Assert.IsTrue(control1.Checked); Assert.IsTrue(control2.Checked); }
public void Binding_OneWayFromCheckBoxToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new CheckBox(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding<bool, bool>( control1, () => control1.Checked, control2, () => control2.Checked) .UpdateSourceTrigger<CompoundButton.CheckedChangeEventArgs>("CheckedChange"); Assert.IsFalse(control1.Checked); Assert.IsFalse(control2.Checked); control1.Checked = true; Assert.IsTrue(control1.Checked); Assert.IsTrue(control2.Checked); }
public void Binding_OneWayFromCheckBoxToCheckBoxWithObserveEvent_BindingGetsUpdated() { var control1 = new CheckBox(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding<bool, bool>( control1, () => control1.Checked, control2, () => control2.Checked) .ObserveSourceEvent(UpdateTriggerMode.PropertyChanged); Assert.IsFalse(control1.Checked); Assert.IsFalse(control2.Checked); control1.Checked = true; Assert.IsTrue(control1.Checked); Assert.IsTrue(control2.Checked); }
public void Binding_OneWayFromCheckBoxToEditTextWithObserveEvent_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding<bool, string>( control2, () => control2.Checked, control1, () => control1.Text) .ObserveSourceEvent<CompoundButton.CheckedChangeEventArgs>("CheckedChange"); Assert.AreEqual("False", control1.Text); Assert.IsFalse(control2.Checked); control2.Checked = true; Assert.AreEqual("True", control1.Text); Assert.IsTrue(control2.Checked); }
public void Binding_OneWayFromEditTextToEditTextWithObserveEvent_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new EditText(Application.Context); _binding = new Binding<string, string>( control1, () => control1.Text, control2, () => control2.Text) .ObserveSourceEvent<View.LongClickEventArgs>("LongClick"); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, control2.Text); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(string.Empty, control2.Text); control1.PerformLongClick(); Assert.AreEqual(control1.Text, control2.Text); }
public void Binding_OneWayFromCheckBoxToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UISwitchEx(); _binding = new Binding<bool, string>( control1, () => control1.On, vm, () => vm.Model.MyProperty); Assert.AreEqual("False", vm.Model.MyProperty); Assert.IsFalse(control1.On); control1.On = true; Assert.AreEqual("True", vm.Model.MyProperty); Assert.IsTrue(control1.On); }
public void Binding_OneWayFromCheckBoxToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new CheckBox(Application.Context); _binding = new Binding<bool, string>( control1, () => control1.Checked, vm, () => vm.Model.MyProperty); Assert.AreEqual("False", vm.Model.MyProperty); Assert.IsFalse(control1.Checked); control1.Checked = true; Assert.AreEqual("True", vm.Model.MyProperty); Assert.IsTrue(control1.Checked); }
public void Binding_OneWayFromCheckBoxToViewModelWithObserveEvent_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new CheckBox(Application.Context); _binding = new Binding<bool, string>( control1, () => control1.Checked, vm, () => vm.Model.MyProperty) .ObserveSourceEvent(); // LostFocus doesn't work programatically with CheckBoxes Assert.AreEqual("False", vm.Model.MyProperty); Assert.IsFalse(control1.Checked); control1.Checked = true; Assert.IsTrue(control1.Checked); Assert.AreEqual("True", vm.Model.MyProperty); }
public void Binding_OneWayFromCheckBoxToViewModelWithObserveEvent_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new CheckBox(Application.Context); _binding = new Binding<bool, string>( control1, () => control1.Checked, vm, () => vm.Model.MyProperty) .ObserveSourceEvent<CompoundButton.CheckedChangeEventArgs>("CheckedChange"); Assert.AreEqual("False", vm.Model.MyProperty); Assert.IsFalse(control1.Checked); control1.Checked = true; Assert.AreEqual("True", vm.Model.MyProperty); Assert.IsTrue(control1.Checked); }
public void BindingTarget_NewBindingWithPrivateProperty_NoError() { VmSource = new TestViewModel { Model = new TestModel { MyProperty = "Initial value" } }; VmTargetPrivate = new TestViewModel(); _binding = new Binding<string, string>( VmSource, () => VmSource.Model.MyProperty, VmTargetPrivate, () => VmTargetPrivate.TargetProperty); Assert.AreEqual(VmSource.Model.MyProperty, VmTargetPrivate.TargetProperty); var newValue = DateTime.Now.Ticks.ToString(); VmSource.Model.MyProperty = newValue; Assert.AreEqual(VmSource.Model.MyProperty, VmTargetPrivate.TargetProperty); }
public void Binding_OneWayFromEditTextToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UITextViewEx(); _binding = new Binding <string, string>( control1, () => control1.Text, vm, () => vm.Model.MyProperty); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); }
public void Binding_OneWayFromEditTextToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new EditText(Application.Context); _binding = new Binding <string, string>( control1, () => control1.Text, control2, () => control2.Text) .UpdateSourceTrigger(UpdateTriggerMode.LostFocus); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(string.Empty, control2.Text); var value = DateTime.Now.Ticks.ToString(); control1.RequestFocus(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(string.Empty, control2.Text); control1.ClearFocus(); Assert.AreEqual(control1.Text, control2.Text); }
public void Binding_OneWayFromEditTextToViewModelWithObserveEvent_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new EditText(Application.Context); _binding = new Binding <string, string>( control1, () => control1.Text, vm, () => vm.Model.StringProperty); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, vm.Model.StringProperty); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(control1.Text, vm.Model.StringProperty); }
public void Binding_OneWayFromEditTextToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding <string, bool>( control1, () => control1.Text, control2, () => control2.Checked) .UpdateSourceTrigger(UpdateTriggerMode.LostFocus); Assert.AreEqual(string.Empty, control1.Text); Assert.IsFalse(control2.Checked); var value = "True"; control1.RequestFocus(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsFalse(control2.Checked); control1.ClearFocus(); Assert.IsTrue(control2.Checked); }
public void Binding_OneWayFromViewModelToEditText_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UITextViewEx(); _binding = new Binding <string, string>( vm, () => vm.Model.StringProperty, control1, () => control1.Text); Assert.AreEqual(null, vm.Model.StringProperty); Assert.AreEqual(string.Empty, control1.Text); var value = DateTime.Now.Ticks.ToString(); vm.Model.StringProperty = value; Assert.AreEqual(value, vm.Model.StringProperty); Assert.AreEqual(vm.Model.StringProperty, control1.Text); }
public void BindingValueChanged_NewBindingWithPrivateFieldAndNoTarget_ValueChangedFires() { var valueChangedFired = false; _vmSourcePrivate = new TestViewModel { Model = new TestModel { StringProperty = "Initial value" } }; var bindingGeneric = new Binding <string, string>( _vmSourcePrivate, () => _vmSourcePrivate.Model.StringProperty); _binding = bindingGeneric; _binding.ValueChanged += (s, e) => { valueChangedFired = true; }; Assert.IsFalse(valueChangedFired); Assert.AreEqual( _vmSourcePrivate.Model.StringProperty, bindingGeneric.Value); var newValue = DateTime.Now.Ticks.ToString(); _vmSourcePrivate.Model.StringProperty = newValue; Assert.IsTrue(valueChangedFired); Assert.AreEqual( newValue, bindingGeneric.Value); }
public void Binding_TwoWayFromEditTextToCheckBoxWithObserveEvent_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding <string, bool>( control1, () => control1.Text, control2, () => control2.Checked, BindingMode.TwoWay); Assert.AreEqual(string.Empty, control1.Text); Assert.IsFalse(control2.Checked); var value = "True"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsTrue(control2.Checked); control2.Checked = false; Assert.IsFalse(control2.Checked); Assert.AreEqual("False", control1.Text); }
public void Binding_DifferentTypeFallbackValue_ShouldGetConvertedWithoutError() { var vmSource = new TestViewModel { Model = new TestModel { DoubleProperty = 5.0 } }; var vmTarget = new TestViewModel { Model = new TestModel() }; const double fallbackValue = 9.0; _binding = new Binding <double, string>( vmSource, () => vmSource.Model.DoubleProperty, vmTarget, () => vmTarget.Model.StringProperty); Assert.AreEqual(vmSource.Model.DoubleProperty.ToString(), vmTarget.Model.StringProperty); _binding = new Binding <double, string>( vmSource, () => vmSource.Model.DoubleProperty, vmTarget, () => vmTarget.Model.StringProperty, fallbackValue: fallbackValue); Assert.AreEqual(vmSource.Model.DoubleProperty.ToString(), vmTarget.Model.StringProperty); vmSource.Model = null; Assert.AreEqual(fallbackValue.ToString(), vmTarget.Model.StringProperty); }
public void Binding_NoErrors_ShouldUpdateTargetValue() { var vmSource = new TestViewModel { Model = new TestModel { StringProperty = "Hello world" } }; var vmTarget = new TestViewModel(); _binding = new Binding <string, string>( vmSource, () => vmSource.Model.StringProperty, vmTarget, () => vmTarget.TargetProperty); Assert.AreEqual(vmSource.Model.StringProperty, vmTarget.TargetProperty); var newValue = DateTime.Now.Ticks.ToString(); vmSource.Model.StringProperty = newValue; Assert.AreEqual(vmSource.Model.StringProperty, vmTarget.TargetProperty); }
public void BindingSource_NewBindingWithVar_NoError() { var vmSource = new TestViewModel { Model = new TestModel { StringProperty = "Initial value" } }; VmTarget = new TestViewModel(); _binding = new Binding <string, string>( vmSource, () => vmSource.Model.StringProperty, VmTarget, () => VmTarget.TargetProperty); Assert.AreEqual(vmSource.Model.StringProperty, VmTarget.TargetProperty); var newValue = DateTime.Now.Ticks.ToString(); vmSource.Model.StringProperty = newValue; Assert.AreEqual(vmSource.Model.StringProperty, VmTarget.TargetProperty); }
public void BindingTarget_NewBindingWithPublicField_NoError() { VmSource = new TestViewModel { Model = new TestModel { MyProperty = "Initial value" } }; _vmTarget = new TestViewModel(); _binding = new Binding <string, string>( VmSource, () => VmSource.Model.MyProperty, _vmTarget, () => _vmTarget.TargetProperty); Assert.AreEqual(VmSource.Model.MyProperty, _vmTarget.TargetProperty); var newValue = DateTime.Now.Ticks.ToString(); VmSource.Model.MyProperty = newValue; Assert.AreEqual(VmSource.Model.MyProperty, _vmTarget.TargetProperty); }
public void Binding_TwoWayFromCheckBoxToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new EditText(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding <bool, string>( control2, () => control2.Checked, control1, () => control1.Text, BindingMode.TwoWay); Assert.AreEqual("False", control1.Text); Assert.IsFalse(control2.Checked); control2.Checked = true; Assert.AreEqual("True", control1.Text); Assert.IsTrue(control2.Checked); var value = "False"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsFalse(control2.Checked); }
public void Binding_TwoWayFromCheckBoxToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UITextViewEx(); var control2 = new UISwitchEx(); _binding = new Binding <bool, string>( control2, () => control2.On, control1, () => control1.Text, BindingMode.TwoWay); Assert.AreEqual("False", control1.Text); Assert.IsFalse(control2.On); control2.On = true; Assert.AreEqual("True", control1.Text); Assert.IsTrue(control2.On); var value = "False"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsFalse(control2.On); }
public void Binding_OneWayFromEditTextToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new EditText(Application.Context); _binding = new Binding <string, string>( control1, () => control1.Text, vm, () => vm.Model.MyProperty) .UpdateSourceTrigger <TextChangedEventArgs>("TextChanged"); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); }
public void Binding_TwoWayFromCheckBoxToCheckBoxWithObserveEvent_BindingGetsUpdated() { var control1 = new CheckBox(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding <bool, bool>( control1, () => control1.Checked, control2, () => control2.Checked, BindingMode.TwoWay) .ObserveSourceEvent <CompoundButton.CheckedChangeEventArgs>("CheckedChange") .ObserveTargetEvent <CompoundButton.CheckedChangeEventArgs>("CheckedChange"); Assert.IsFalse(control1.Checked); Assert.IsFalse(control2.Checked); control1.Checked = true; Assert.IsTrue(control1.Checked); Assert.IsTrue(control2.Checked); control2.Checked = false; Assert.IsFalse(control2.Checked); Assert.IsFalse(control1.Checked); }
public void Binding_TwoWayFromEditTextToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UITextViewEx(); var control2 = new UISwitchEx(); _binding = new Binding <string, bool>( control1, () => control1.Text, control2, () => control2.On, BindingMode.TwoWay); Assert.AreEqual(string.Empty, control1.Text); Assert.IsFalse(control2.On); var value = "True"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsTrue(control2.On); control2.On = false; Assert.IsFalse(control2.On); Assert.AreEqual("False", control1.Text); }
public void BindingValueChanged_SetBindingWithPublicPropertyAndNoTarget_ValueChangedFires() { var valueChangedFired = false; VmSource = new TestViewModel { Model = new TestModel { StringProperty = "Initial value" } }; var bindingGeneric = this.SetBinding( () => VmSource.Model.StringProperty); _binding = bindingGeneric; _binding.ValueChanged += (s, e) => { valueChangedFired = true; }; Assert.IsFalse(valueChangedFired); Assert.AreEqual( VmSource.Model.StringProperty, bindingGeneric.Value); var newValue = DateTime.Now.Ticks.ToString(); VmSource.Model.StringProperty = newValue; Assert.IsTrue(valueChangedFired); Assert.AreEqual( newValue, bindingGeneric.Value); }
public void Binding_TwoWayFromCheckBoxToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new CheckBox(Application.Context); var control2 = new CheckBox(Application.Context); _binding = new Binding <bool, bool>( control1, () => control1.Checked, control2, () => control2.Checked, BindingMode.TwoWay) .UpdateSourceTrigger() .ObserveTargetEvent(); Assert.IsFalse(control1.Checked); Assert.IsFalse(control2.Checked); control1.Checked = true; Assert.IsTrue(control1.Checked); Assert.IsTrue(control2.Checked); control2.Checked = false; Assert.IsFalse(control2.Checked); Assert.IsFalse(control1.Checked); }
public void BindingTarget_NewBindingWithPrivateProperty_NoError() { VmSource = new TestViewModel { Model = new TestModel { StringProperty = "Initial value" } }; VmTargetPrivate = new TestViewModel(); _binding = new Binding <string, string>( VmSource, () => VmSource.Model.StringProperty, VmTargetPrivate, () => VmTargetPrivate.TargetProperty); Assert.AreEqual(VmSource.Model.StringProperty, VmTargetPrivate.TargetProperty); var newValue = DateTime.Now.Ticks.ToString(); VmSource.Model.StringProperty = newValue; Assert.AreEqual(VmSource.Model.StringProperty, VmTargetPrivate.TargetProperty); }
public void BindingValueChangedControl_SetBindingWithPrivateField_ValueChangedFires() { #if ANDROID _sourcePrivate = new EditText(Application.Context); #elif __IOS__ _sourcePrivate = new UITextViewEx(); #endif var valueChangedFired = false; VmTarget = new TestViewModel(); var bindingGeneric = this.SetBinding( () => _sourcePrivate.Text, () => VmTarget.TargetProperty); _binding = bindingGeneric; _binding.ValueChanged += (s, e) => { valueChangedFired = true; }; Assert.IsFalse(valueChangedFired); Assert.AreEqual( _sourcePrivate.Text, bindingGeneric.Value); var newValue = DateTime.Now.Ticks.ToString(); _sourcePrivate.Text = newValue; Assert.IsTrue(valueChangedFired); Assert.AreEqual( newValue, bindingGeneric.Value); }
public void Binding_TwoWayFromCheckBoxToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UISwitchEx(); var control2 = new UISwitchEx(); _binding = new Binding <bool, bool>( control1, () => control1.On, control2, () => control2.On, BindingMode.TwoWay) .UpdateSourceTrigger() .UpdateTargetTrigger(); Assert.IsFalse(control1.On); Assert.IsFalse(control2.On); control1.On = true; Assert.IsTrue(control1.On); Assert.IsTrue(control2.On); control2.On = false; Assert.IsFalse(control2.On); Assert.IsFalse(control1.On); }
public void Binding_OneWayFromEditTextToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UITextViewEx(); var control2 = new UISwitchEx(); _binding = new Binding<string, bool>( control1, () => control1.Text, control2, () => control2.On) .ObserveSourceEvent("Changed"); Assert.AreEqual(string.Empty, control1.Text); Assert.IsFalse(control2.On); var value = "True"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsTrue(control2.On); }
public void Binding_TwoWayFromViewModelToEditTextWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UITextViewEx(); _binding = new Binding<string, string>( vm, () => vm.Model.MyProperty, control1, () => control1.Text, BindingMode.TwoWay) .ObserveTargetEvent("Changed"); Assert.AreEqual(null, vm.Model.MyProperty); Assert.AreEqual(string.Empty, control1.Text); var value = DateTime.Now.Ticks.ToString(); vm.Model.MyProperty = value; Assert.AreEqual(value, vm.Model.MyProperty); Assert.AreEqual(vm.Model.MyProperty, control1.Text); value += "Suffix"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); }
public void Binding_TwoWayFromViewModelToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UISwitchEx(); _binding = new Binding<string, bool>( vm, () => vm.Model.MyProperty, control1, () => control1.On, BindingMode.TwoWay) .ObserveTargetEvent("ValueChanged"); Assert.AreEqual(null, vm.Model.MyProperty); Assert.IsFalse(control1.On); vm.Model.MyProperty = "True"; Assert.AreEqual("True", vm.Model.MyProperty); Assert.IsTrue(control1.On); control1.On = false; Assert.IsFalse(control1.On); Assert.AreEqual("False", vm.Model.MyProperty); }
public void Binding_TwoWayFromEditTextToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UITextViewEx(); var control2 = new UITextViewEx(); _binding = new Binding<string, string>( control1, () => control1.Text, control2, () => control2.Text, BindingMode.TwoWay) .ObserveSourceEvent("Changed") .ObserveTargetEvent("Changed"); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, control2.Text); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(control1.Text, control2.Text); value += "Suffix"; control2.Text = value; Assert.AreEqual(value, control2.Text); Assert.AreEqual(control2.Text, control1.Text); }
public void Binding_TwoWayFromCheckBoxToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UISwitchEx(); _binding = new Binding<bool, string>( control1, () => control1.On, vm, () => vm.Model.MyProperty, BindingMode.TwoWay) .ObserveSourceEvent("ValueChanged"); Assert.AreEqual("False", vm.Model.MyProperty); Assert.IsFalse(control1.On); control1.On = true; Assert.AreEqual("True", vm.Model.MyProperty); Assert.IsTrue(control1.On); var value = "False"; vm.Model.MyProperty = value; Assert.AreEqual(value, vm.Model.MyProperty); Assert.IsFalse(control1.On); }
public void Binding_TwoWayFromCheckBoxToEditTextWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UITextViewEx(); var control2 = new UISwitchEx(); _binding = new Binding<bool, string>( control2, () => control2.On, control1, () => control1.Text, BindingMode.TwoWay) .ObserveSourceEvent("ValueChanged") .ObserveTargetEvent("Changed"); Assert.AreEqual("False", control1.Text); Assert.IsFalse(control2.On); control2.On = true; Assert.AreEqual("True", control1.Text); Assert.IsTrue(control2.On); var value = "False"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsFalse(control2.On); }
public void Binding_TwoWayFromCheckBoxToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UISwitchEx(); var control2 = new UISwitchEx(); _binding = new Binding<bool, bool>( control1, () => control1.On, control2, () => control2.On, BindingMode.TwoWay) .ObserveSourceEvent("ValueChanged") .ObserveTargetEvent("ValueChanged"); Assert.IsFalse(control1.On); Assert.IsFalse(control2.On); control1.On = true; Assert.IsTrue(control1.On); Assert.IsTrue(control2.On); control2.On = false; Assert.IsFalse(control2.On); Assert.IsFalse(control1.On); }
public void Binding_OneWayFromViewModelToEditText_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UITextViewEx(); _binding = new Binding<string, string>( vm, () => vm.Model.MyProperty, control1, () => control1.Text); Assert.AreEqual(null, vm.Model.MyProperty); Assert.AreEqual(string.Empty, control1.Text); var value = DateTime.Now.Ticks.ToString(); vm.Model.MyProperty = value; Assert.AreEqual(value, vm.Model.MyProperty); Assert.AreEqual(vm.Model.MyProperty, control1.Text); }
public void Binding_OneWayFromViewModelToCheckBox_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UISwitchEx(); _binding = new Binding<string, bool>( vm, () => vm.Model.MyProperty, control1, () => control1.On); Assert.AreEqual(null, vm.Model.MyProperty); Assert.IsFalse(control1.On); vm.Model.MyProperty = "True"; Assert.AreEqual("True", vm.Model.MyProperty); Assert.IsTrue(control1.On); }
public void Binding_OneWayFromEditTextToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UITextViewEx(); _binding = new Binding<string, string>( control1, () => control1.Text, vm, () => vm.Model.MyProperty) .ObserveSourceEvent("Changed"); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); }
public void BindingDeepPath_DeepSourceExistingPathChangingObjects_NoError() { VmSource = new TestViewModel { Nested = new TestViewModel { Nested = new TestViewModel { Model = new TestModel { StringProperty = "Initial value" } } } }; VmTarget = new TestViewModel(); _binding = new Binding <string, string>( VmSource, () => VmSource.Nested.Nested.Model.StringProperty, VmTarget, () => VmTarget.TargetProperty); Assert.AreEqual(VmSource.Nested.Nested.Model.StringProperty, VmTarget.TargetProperty); var newValue = DateTime.Now.Ticks.ToString(); VmSource.Nested.Nested.Model.StringProperty = newValue; Assert.AreEqual(VmSource.Nested.Nested.Model.StringProperty, VmTarget.TargetProperty); const string value2 = "Value 2"; VmSource.Nested = new TestViewModel { Nested = new TestViewModel { Model = new TestModel { StringProperty = value2 } } }; Assert.AreEqual(value2, VmTarget.TargetProperty); const string value3 = "Value 3"; VmSource.Nested.Nested = new TestViewModel { Model = new TestModel { StringProperty = value3 } }; Assert.AreEqual(value3, VmTarget.TargetProperty); const string value4 = "Value 4"; VmSource.Nested.Nested.Model = new TestModel { StringProperty = value4 }; Assert.AreEqual(value4, VmTarget.TargetProperty); const string value5 = "Value 5"; VmSource.Nested.Nested.Model.StringProperty = value5; Assert.AreEqual(value5, VmTarget.TargetProperty); }
public void Binding_TwoWayFromEditTextToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UITextViewEx(); _binding = new Binding<string, string>( control1, () => control1.Text, vm, () => vm.Model.MyProperty, BindingMode.TwoWay) .UpdateSourceTrigger(UpdateTriggerMode.PropertyChanged); Assert.AreEqual(string.Empty, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); var value = DateTime.Now.Ticks.ToString(); control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.AreEqual(control1.Text, vm.Model.MyProperty); value += "Suffix"; vm.Model.MyProperty = value; Assert.AreEqual(value, vm.Model.MyProperty); Assert.AreEqual(vm.Model.MyProperty, control1.Text); }
public void Binding_TwoWayFromEditTextToCheckBoxWithUpdateTrigger_BindingGetsUpdated() { var control1 = new UITextViewEx(); var control2 = new UISwitchEx(); _binding = new Binding<string, bool>( control1, () => control1.Text, control2, () => control2.On, BindingMode.TwoWay) .UpdateSourceTrigger(UpdateTriggerMode.PropertyChanged) .UpdateTargetTrigger(UpdateTriggerMode.PropertyChanged); Assert.AreEqual(string.Empty, control1.Text); Assert.IsFalse(control2.On); var value = "True"; control1.Text = value; Assert.AreEqual(value, control1.Text); Assert.IsTrue(control2.On); control2.On = false; Assert.IsFalse(control2.On); Assert.AreEqual("False", control1.Text); }
Binding_MultipleLevelsOfNullWithConverter_ShouldCallConverterWithNullThenTargetNullValueButNotFallbackValue( ) { var vmSource = new TestViewModel(); var vmTarget = new TestViewModel(); const string fallbackValue = "Fallback value"; const string targetNullValue = "Target null value"; const string suffix = "Suffix"; var converterWasCalledWithNull = 0; var converterWasCalledWithTargetNullValue = 0; var converterWasCalledWithFallbackValue = 0; _binding = new Binding <string, string>( vmSource, () => vmSource.Nested.Model.StringProperty, vmTarget, () => vmTarget.TargetProperty, BindingMode.Default, fallbackValue, targetNullValue) .ConvertSourceToTarget( v => { if (v == null) { converterWasCalledWithNull++; return(null); } switch (v) { case fallbackValue: converterWasCalledWithFallbackValue++; break; case targetNullValue: converterWasCalledWithTargetNullValue++; break; } return(v + suffix); }); Assert.AreEqual(fallbackValue, vmTarget.TargetProperty); Assert.AreEqual(0, converterWasCalledWithNull); Assert.AreEqual(0, converterWasCalledWithFallbackValue); Assert.AreEqual(0, converterWasCalledWithTargetNullValue); vmSource.Nested = new TestViewModel(); Assert.AreEqual(fallbackValue, vmTarget.TargetProperty); Assert.AreEqual(0, converterWasCalledWithNull); Assert.AreEqual(0, converterWasCalledWithFallbackValue); Assert.AreEqual(0, converterWasCalledWithTargetNullValue); vmSource.Nested.Model = new TestModel(); Assert.AreEqual(targetNullValue + suffix, vmTarget.TargetProperty); Assert.AreEqual(1, converterWasCalledWithNull); Assert.AreEqual(0, converterWasCalledWithFallbackValue); Assert.AreEqual(1, converterWasCalledWithTargetNullValue); vmSource.Nested.Model.StringProperty = DateTime.Now.Ticks.ToString(); Assert.AreEqual(vmSource.Nested.Model.StringProperty + suffix, vmTarget.TargetProperty); Assert.AreEqual(1, converterWasCalledWithNull); Assert.AreEqual(0, converterWasCalledWithFallbackValue); Assert.AreEqual(1, converterWasCalledWithTargetNullValue); }
public void Binding_SetBindingWithPrivateField_ShouldCreateBinding() { // Just for comparison var vm = new TestViewModel { Model = new TestModel { StringProperty = "Initial value for local var" } }; #if ANDROID var textBox = new EditText(Application.Context); #elif __IOS__ var textBox = new UITextViewEx(); #endif _binding = new Binding <string, string>( vm, () => vm.Model.StringProperty, textBox, () => textBox.Text); Assert.IsNotNull(_binding); Assert.AreEqual(textBox.Text, vm.Model.StringProperty); vm.Model.StringProperty = "New value"; Assert.AreEqual(textBox.Text, vm.Model.StringProperty); _vmField = new TestViewModel { Model = new TestModel { StringProperty = "Initial value for field" } }; _binding = new Binding <string, string>( _vmField, () => _vmField.Model.StringProperty, textBox, () => textBox.Text); Assert.IsNotNull(_binding); Assert.AreEqual(textBox.Text, _vmField.Model.StringProperty); _vmField.Model.StringProperty = "New value"; Assert.AreEqual(textBox.Text, _vmField.Model.StringProperty); VmSource = new TestViewModel { Model = new TestModel { StringProperty = "Initial value for public property" } }; #if ANDROID TextBox = new EditText(Application.Context); #elif __IOS__ TextBox = new UITextViewEx(); #endif _binding = this.SetBinding( () => VmSource.Model.StringProperty, () => TextBox.Text); Assert.IsNotNull(_binding); Assert.AreEqual(textBox.Text, _vmField.Model.StringProperty); _vmField.Model.StringProperty = "New value"; Assert.AreEqual(textBox.Text, _vmField.Model.StringProperty); _vmField.Model.StringProperty = "Initial value for field again"; _binding = this.SetBinding( () => _vmField.Model.StringProperty, () => TextBox.Text); Assert.IsNotNull(_binding); Assert.AreEqual(textBox.Text, _vmField.Model.StringProperty); _vmField.Model.StringProperty = "New value"; Assert.AreEqual(textBox.Text, _vmField.Model.StringProperty); }