Exemple #1
0
        public void Test_WeakCommandBinding_EnableProperty_Expression()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            Assert.IsFalse(view.Enable);

            new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
            .Initialize <WeakCommandBinding>()
            .AttachTargetEvent("TestViewEvent")
            .OfType <WeakCommandBinding>()
            .AddEnableProperty <TestView>(i => i.Enable);

            Assert.IsTrue(view.Enable);

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(1, viewModel.Age);

            Assert.IsTrue(view.Enable);

            view.RaiseTestViewEvent();
            Assert.AreEqual(2, viewModel.Age);

            Assert.IsFalse(view.Enable);

            view.RaiseTestViewEvent();

            Assert.IsFalse(view.Enable);
            Assert.AreEqual(2, viewModel.Age);
        }
        public void Test_BindingEngine_NotifyBinding()
        {
            var viewModel    = new TestViewModel();
            var view         = new TestView();
            int changedCount = 0;

            BindingEngine.SetNotifyBinding(viewModel, o => o.Age, view, null)
            .Initialize <WeakNotifyBinding>()
            .AttachSourceEvent("TestViewEvent")
            .OfType <WeakNotifyBinding>()
            .SetSourceChanged <WeakNotifyBinding>((source, args) => { changedCount++; });

            Assert.AreEqual(0, changedCount);

            view.RaiseTestViewEvent();

            Assert.AreEqual(1, changedCount);

            BindingEngine.SetNotifyBinding(viewModel, o => o.Age, view, null)
            .Initialize <WeakNotifyBinding>()
            .AttachSourceEvent("TestViewEvent")
            .OfType <WeakNotifyBinding>()
            .SetSourceChanged <WeakNotifyBinding>((source, args) => { changedCount++; });

            view.RaiseTestViewEvent();

            Assert.AreEqual(2, changedCount);
        }
Exemple #3
0
        public void Test_WeakCommandBinding_RemoveEnableProperty()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            Assert.IsFalse(view.Enable);

            WeakCommandBinding weakCommandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                                                    .Initialize <WeakCommandBinding>()
                                                    .AttachTargetEvent("TestViewEvent")
                                                    .OfType <WeakCommandBinding>()
                                                    .AddEnableProperty("Enable");

            Assert.IsTrue(view.Enable);

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(1, viewModel.Age);

            Assert.IsTrue(view.Enable);

            weakCommandBinding.RemoveEnableProperty("Enable");

            view.RaiseTestViewEvent();
            Assert.IsTrue(view.Enable);
        }
        public void Test_WeakBinding_Update()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            WeakBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                                  .Initialize <WeakPropertyBinding>()
                                  .SetMode(BindMode.TwoWay)
                                  .AttachTargetEvent("TestViewEvent");

            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            view.RaiseTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);

            binding.Update("Text2", viewModel, "Name");

            viewModel.Name = Name1;

            Assert.AreNotEqual(view.Text1, Name1);
            Assert.AreEqual(view.Text2, Name1);
        }
Exemple #5
0
        public void Test_WeakCommandBinding_CanExecuteChangedCallback()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            Assert.IsFalse(view.Enable);
            bool isEnable = false;

            WeakCommandBinding commandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                                                .Initialize <WeakCommandBinding>()
                                                .AttachTargetEvent("TestViewEvent")
                                                .OfType <WeakCommandBinding>()
                                                .AddEnableProperty("Enable")
                                                .Watch("Age")
                                                .SetCanExecuteChanged((sender, args) => { isEnable = args.CanExecute; });

            Assert.IsTrue(view.Enable);
            Assert.IsTrue(isEnable);

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(1, viewModel.Age);

            Assert.IsTrue(view.Enable);
            Assert.IsTrue(isEnable);

            commandBinding.SetCanExecuteChanged(null);

            viewModel.Age++;
            Assert.IsFalse(view.Enable);
            Assert.IsTrue(isEnable);
        }
Exemple #6
0
        public void Test_WeakCommandBinding_CanExecute()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
            .Initialize <WeakCommandBinding>()
            .AttachTargetEvent("TestViewEvent");

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(1, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(2, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(2, viewModel.Age);
        }
Exemple #7
0
        public void Test_WeakCommandBinding_UnWatch()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            Assert.IsFalse(view.Enable);

            WeakCommandBinding commandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                                                .Initialize <WeakCommandBinding>()
                                                .AttachTargetEvent("TestViewEvent")
                                                .OfType <WeakCommandBinding>()
                                                .AddEnableProperty("Enable")
                                                .Watch(viewModel, "Age");

            commandBinding.Watch(viewModel, "Age");

            Assert.IsTrue(view.Enable);

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(1, viewModel.Age);
            Assert.IsTrue(view.Enable);

            Exception exception = null;

            try
            {
                commandBinding.Watch(null, "Age");
            }
            catch (ArgumentNullException e)
            {
                exception = e;
            }
            Assert.IsNotNull(exception);

            viewModel.Age++;
            Assert.IsFalse(view.Enable);

            viewModel.Age--;
            Assert.IsTrue(view.Enable);

            commandBinding.UnWatch("Age");

            viewModel.Age++;
            Assert.IsTrue(view.Enable);

            commandBinding.Watch(viewModel, "Age");
            Assert.IsFalse(view.Enable);

            commandBinding.UnWatch(viewModel, "Age");
            viewModel.Age--;
            Assert.IsFalse(view.Enable);
        }
        public void Test_BindingEngine_CommandBinding_Expression()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            BindingEngine.SetCommandBinding(view, null, viewModel, i => i.AddAgeCommand)
            .Initialize <WeakCommandBinding>()
            .AttachTargetEvent("TestViewEvent");

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();

            Assert.AreEqual(1, viewModel.Age);
        }
Exemple #9
0
        public void Test_WeakCommandBinding_Parameter_2()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            new WeakCommandBinding(view, null, viewModel, "SetAgeCommand")
            .Initialize <WeakCommandBinding>()
            .AttachTargetEvent("TestViewEvent")
            .OfType <WeakCommandBinding>()
            .SetParameter(2, null);

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();

            Assert.AreEqual(2, viewModel.Age);
        }
        public void Test_BindingEngine_PropertyBinding_Expression()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            BindingEngine.SetPropertyBinding(view, o => o.Text1, viewModel, i => i.Name)
            .SetMode(BindMode.TwoWay)
            .AttachTargetEvent("TestViewEvent");

            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            view.RaiseTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);
        }
        public void Test_BindingEngine_GenericBinding()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            BindingEngine.SetBinding <WeakPropertyBinding>(view, "Text1", viewModel, "Name")
            .SetMode(BindMode.TwoWay)
            .AttachTargetEvent("TestViewEvent");

            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            view.RaiseTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);
        }
        public void Test_BindingEngine_PropertyBinding()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            var binding = BindingEngine.SetPropertyBinding(view, "Text1", viewModel, "Name")
                          .SetMode(BindMode.TwoWay)
                          .AttachTargetEvent("TestViewEvent");

            Assert.AreEqual("Name", binding.SourceProperty);
            Assert.AreEqual("Text1", binding.TargetProperty);

            viewModel.Name = Name1;

            Assert.AreEqual(Name1, view.Text1);

            view.Text1 = Name2;
            Assert.AreNotEqual(Name2, viewModel.Name);

            view.RaiseTestViewEvent();
            Assert.AreEqual(Name2, viewModel.Name);
        }
Exemple #13
0
        public void Test_MemoryLeak_WeakBinding_AttachEvent_2()
        {
            var viewModel  = new TestViewModel();
            var viewModel2 = new TestViewModel2();
            var reference  = new WeakReference(viewModel2);
            var reference2 = new WeakReference(viewModel);
            var view       = new TestView();
            var reference3 = new WeakReference(view);

            WeakBinding binding = new WeakPropertyBinding(viewModel2, "Name", viewModel, "Name")
                                  .Initialize <WeakPropertyBinding>()
                                  .SetMode(BindMode.TwoWay)
                                  .AttachTargetEvent(view, "TestViewEvent");

            viewModel.Name = Name1;

            Assert.AreEqual(viewModel2.Name, Name1);

            viewModel2.Name = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            view.RaiseTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);

            view = null;
            GC.Collect();
            Assert.IsFalse(reference3.IsAlive);

            viewModel2 = null;
            GC.Collect();
            Assert.IsFalse(reference.IsAlive);

            viewModel = null;
            GC.Collect();
            Assert.IsFalse(reference2.IsAlive);

            GC.KeepAlive(binding);
        }