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);
        }
Beispiel #2
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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);
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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);
        }
Beispiel #23
0
        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);
        }
Beispiel #24
0
        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);
        }
Beispiel #26
0
        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);
        }
Beispiel #27
0
        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);
        }
Beispiel #29
0
        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);
        }
Beispiel #32
0
        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);
        }
Beispiel #33
0
        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);
        }
Beispiel #35
0
        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);
        }
Beispiel #37
0
        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);
        }
Beispiel #39
0
        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);
        }
Beispiel #40
0
        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);
        }
Beispiel #41
0
        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);
        }
Beispiel #42
0
        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);
        }
Beispiel #43
0
        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);
        }
Beispiel #44
0
        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);
        }
Beispiel #45
0
        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);
        }
Beispiel #46
0
        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);
        }
Beispiel #47
0
        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);
        }
Beispiel #48
0
        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);
        }
Beispiel #49
0
        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);
        }
Beispiel #50
0
        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);
        }
Beispiel #53
0
        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);
        }
Beispiel #54
0
        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);
        }