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