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 Binding_ConverterWithFallbackValue_ErrorInConverterShouldUseFallbackValue() { var vmSource = new TestViewModel { Model = new TestModel { MyProperty = "Initial value" } }; var vmTarget = new TestViewModel(); const string fallbackValue = "Fallback value"; const string targetNullValue = "Target null value"; _binding = new Binding<string, string>( vmSource, () => vmSource.Model.MyProperty, vmTarget, () => vmTarget.TargetProperty, BindingMode.Default, fallbackValue, targetNullValue) .ConvertSourceToTarget( value => { throw new InvalidCastException("Only for test"); }); Assert.AreEqual(fallbackValue, vmTarget.TargetProperty); vmSource.Model.MyProperty = "New value"; Assert.AreEqual(fallbackValue, vmTarget.TargetProperty); }
public void Binding_MultipleLevelsOfNull_ShouldUseFallbackValueThenTargetNullValue() { var vmSource = new TestViewModel(); var vmTarget = new TestViewModel(); const string fallbackValue = "Fallback value"; const string targetNullValue = "Target null value"; _binding = new Binding<string, string>( vmSource, () => vmSource.Nested.Model.MyProperty, vmTarget, () => vmTarget.TargetProperty, BindingMode.Default, fallbackValue, targetNullValue); Assert.AreEqual(fallbackValue, vmTarget.TargetProperty); vmSource.Nested = new TestViewModel(); Assert.AreEqual(fallbackValue, vmTarget.TargetProperty); vmSource.Nested.Model = new TestModel(); Assert.AreEqual(targetNullValue, vmTarget.TargetProperty); vmSource.Nested.Model.MyProperty = DateTime.Now.Ticks.ToString(); Assert.AreEqual(vmSource.Nested.Model.MyProperty, vmTarget.TargetProperty); }
public void BindingConverter_ConvertDateTimeTwoWayToText_NoError() { var now = DateTime.Now; Vm = new TestViewModel { Date = now }; #if ANDROID Text = new EditText(Application.Context); #elif __IOS__ Text = new UITextViewEx(); #endif this.SetBinding( () => Vm.Date, () => Text.Text, BindingMode.TwoWay) .ConvertSourceToTarget(d => d.Date.ToShortDateString()) .ConvertTargetToSource(d => DateTime.ParseExact(d, "dd/MM/yyyy", CultureInfo.InvariantCulture)); Assert.AreEqual(now, Vm.Date); Assert.AreEqual(now.ToShortDateString(), Text.Text); Vm.Date += TimeSpan.FromDays(3); Assert.AreEqual((now + TimeSpan.FromDays(3)).ToShortDateString(), Text.Text); var newDateString = "13/04/1971"; var newDate = new DateTime(1971, 4, 13); Text.Text = newDateString; Assert.AreEqual(newDateString, Text.Text); Assert.AreEqual(newDate, Vm.Date); }
public void BindingConverter_ConvertDateTimeToText_NoError() { var now = DateTime.Now; Vm = new TestViewModel { Date = now }; #if ANDROID Text = new EditText(Application.Context); #elif __IOS__ Text = new UITextViewEx(); #endif this.SetBinding( () => Vm.Date, () => Text.Text) .ConvertSourceToTarget(d => d.Date.ToShortDateString()); Assert.AreEqual(now, Vm.Date); Assert.AreEqual(now.ToShortDateString(), Text.Text); Vm.Date += TimeSpan.FromDays(3); Assert.AreEqual((now + TimeSpan.FromDays(3)).ToShortDateString(), Text.Text); }
public void ObservableTableViewController_WithListAndDefaultReuseId() { Vm = GetViewModel(); var table = Vm.ItemsList.GetController(CreateCell, BindCell); table.TableView = new UITableView(); Assert.AreEqual(null, table.ReuseId); }
public void ObservableTableViewController_WithListAndSetReuseId() { Vm = GetViewModel(); const string reuseId = "1234"; var table = Vm.ItemsList.GetController(CreateCell, BindCell, reuseId); table.TableView = new UITableView(); Assert.AreEqual(reuseId, table.ReuseId); }
public void SetCommand_OnBarButtonNoValueNoEventName_ClickEventShouldBeUsed() { var value = DateTime.Now.Ticks.ToString(); var vmTarget = new TestViewModel(); vmTarget.Configure(value); var control = new UIBarButtonItemEx(); control.SetCommand(vmTarget.SetPropertyWithoutValueCommand); Assert.IsNull(vmTarget.TargetProperty); control.PerformEvent(); Assert.AreEqual(value, vmTarget.TargetProperty); }
public void SetCommand_OnButtonNoValueNoEventName_ClickEventShouldBeUsed() { var value = DateTime.Now.Ticks.ToString(); var vmTarget = new TestViewModel(); vmTarget.Configure(value); var button = new Button(Application.Context); button.SetCommand(vmTarget.SetPropertyWithoutValueCommand); Assert.IsNull(vmTarget.TargetProperty); button.PerformClick(); 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 SetCommand_OnButtonExWithSimpleValue_NoError() { var value = DateTime.Now.Ticks.ToString(); var vmTarget = new TestViewModel(); var button = new ButtonEx(Application.Context); button.SetCommand( "Click", vmTarget.SetPropertyCommand, value); Assert.IsNull(vmTarget.TargetProperty); button.PerformClick(); Assert.AreEqual(value, vmTarget.TargetProperty); }
public void Binding_OneWayFromCheckBoxToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UISwitchEx(); var 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); var 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<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 Binding_OneWayFromCheckBoxToViewModelWithObserveEvent_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new CheckBox(Application.Context); var 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 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_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 Binding_TwoWayFromEditTextToViewModelWithUpdateTrigger_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new UITextViewEx(); var 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 SetCommand_OnButtonWithBinding_ParameterShouldUpdate() { var value = DateTime.Now.Ticks.ToString(); var vmSource = new TestViewModel { Model = new TestModel { MyProperty = value } }; var vmTarget = new TestViewModel(); var button = new Button(Application.Context); var binding = new Binding<string, string>( vmSource, () => vmSource.Model.MyProperty); button.SetCommand( "Click", vmTarget.SetPropertyCommand, binding); Assert.IsNull(vmTarget.TargetProperty); button.PerformClick(); Assert.AreEqual(value, vmTarget.TargetProperty); value += "Test"; vmSource.Model.MyProperty = value; button.PerformClick(); Assert.AreEqual(value, vmTarget.TargetProperty); }
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 SetCommand_OnCheckBoxWithSimpleValueNoEventName_ClickEventShouldBeUsed() { var value = DateTime.Now.Ticks.ToString(); var vmTarget = new TestViewModel(); var checkBox = new CheckBox(Application.Context); checkBox.SetCommand<string, CompoundButton.CheckedChangeEventArgs>( vmTarget.SetPropertyCommand, value); Assert.IsNull(vmTarget.TargetProperty); checkBox.PerformClick(); Assert.AreEqual(value, vmTarget.TargetProperty); }
public void SetCommand_OnCheckBoxWithBindingNoEventName_ParameterShouldUpdate() { var value = DateTime.Now.Ticks.ToString(); var vmSource = new TestViewModel { Model = new TestModel { MyProperty = value } }; var vmTarget = new TestViewModel(); var checkBox = new CheckBox(Application.Context); var binding = new Binding<string, string>( vmSource, () => vmSource.Model.MyProperty); checkBox.SetCommand<string, CompoundButton.CheckedChangeEventArgs>( vmTarget.SetPropertyCommand, binding); Assert.IsNull(vmTarget.TargetProperty); checkBox.PerformClick(); Assert.AreEqual(value, vmTarget.TargetProperty); value += "Test"; vmSource.Model.MyProperty = value; checkBox.PerformClick(); Assert.AreEqual(value, vmTarget.TargetProperty); }
public void SetCommand_OnCheckBoxNoValue_NoError() { var value = DateTime.Now.Ticks.ToString(); var vmTarget = new TestViewModel(); vmTarget.Configure(value); var checkBox = new CheckBox(Application.Context); checkBox.SetCommand<CompoundButton.CheckedChangeEventArgs>( "CheckedChange", vmTarget.SetPropertyWithoutValueCommand); Assert.IsNull(vmTarget.TargetProperty); checkBox.PerformClick(); Assert.AreEqual(value, vmTarget.TargetProperty); }
public void Binding_TwoWayFromViewModelToEditTextWithObserveEvent_BindingGetsUpdated() { var vm = new TestViewModel { Model = new TestModel() }; var control1 = new EditText(Application.Context); var binding = new Binding<string, string>( vm, () => vm.Model.MyProperty, control1, () => control1.Text, BindingMode.TwoWay) .ObserveTargetEvent(UpdateTriggerMode.LostFocus); 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); var newValue = value + "Suffix"; control1.RequestFocus(); control1.Text = newValue; Assert.AreEqual(newValue, control1.Text); Assert.AreEqual(value, vm.Model.MyProperty); control1.ClearFocus(); Assert.AreEqual(newValue, vm.Model.MyProperty); }
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_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 SetCommand_WithICommandOnButtonNoValueNoEventName_ClickEventShouldBeUsed() { var vmTarget = new TestViewModel(); var button = new Button(Application.Context); button.SetCommand(vmTarget.TestCommandImpl); var castedCommand = (CommandImpl)vmTarget.TestCommandImpl; Assert.IsNull(castedCommand.Parameter); button.PerformClick(); Assert.AreEqual(TestViewModel.ValueForCommand, castedCommand.Parameter); }
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 SetCommand_WithICommandOnCheckBoxNoValueNoEventName_ClickEventShouldBeUsed() { var vmTarget = new TestViewModel(); var checkBox = new CheckBox(Application.Context); checkBox.SetCommand<CompoundButton.CheckedChangeEventArgs>(vmTarget.TestCommandImpl); var castedCommand = (CommandImpl)vmTarget.TestCommandImpl; Assert.IsNull(castedCommand.Parameter); checkBox.PerformClick(); Assert.AreEqual(TestViewModel.ValueForCommand, castedCommand.Parameter); }