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_WeakBinding_MemoryLeak() { var viewModel = new TestViewModel(); var view = new TestView(); int changed = 0; WeakPropertyBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize <WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachTargetEvent("TestViewEvent") .SetTargetChanged <WeakPropertyBinding>((sender, args) => { changed++; }); viewModel.Name = Name1; Assert.AreEqual(Name1, view.Text1); Assert.AreEqual(1, changed); viewModel.Name = Name2; Assert.AreEqual(Name2, view.Text1); Assert.AreEqual(2, changed); view = null; GC.Collect(); viewModel.Name = Name1; Assert.AreEqual(2, changed); }
public void Test_WeakPropertyBinding_PropertyGetter() { var viewModel = new TestViewModel(); var view = new TestView(); WeakPropertyBinding propertyBinding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize <WeakPropertyBinding>() .SetMode <WeakPropertyBinding>(BindMode.OneWay) .SetSourcePropertyGetter(data => ((TestViewModel)data.Source.Source).Name + "1"); viewModel.Name = Name1; Assert.AreEqual(view.Text1, Name1 + "1"); propertyBinding.Clear(); propertyBinding = new WeakPropertyBinding(viewModel, "Name", view, "Text1") .Initialize <WeakPropertyBinding>() .SetMode <WeakPropertyBinding>(BindMode.OneWayToSource) .SetTargetPropertyGetter(data => ((TestViewModel)data.Target.Source).Name + "2"); viewModel.Name = Name1; Assert.AreEqual(view.Text1, Name1 + "2"); }
public void Test_WeakPropertyBinding_PropertySetter() { var viewModel = new TestViewModel(); var view = new TestView(); WeakPropertyBinding propertyBinding = new WeakPropertyBinding(view, null, viewModel, "Name") .Initialize <WeakPropertyBinding>() .SetMode <WeakPropertyBinding>(BindMode.OneWay) .SetTargetPropertySetter( (data, value) => { ((TestView)data.Target.Source).Text1 = value.ToStringWithoutException(); }); viewModel.Name = Name1; Assert.AreEqual(view.Text1, Name1); propertyBinding.Clear(); new WeakPropertyBinding(viewModel, "Name", view, null) .Initialize <WeakPropertyBinding>() .SetMode <WeakPropertyBinding>(BindMode.OneWayToSource) .SetSourcePropertySetter( (data, value) => { ((TestView)data.Source.Source).Text1 = value.ToStringWithoutException(); }); viewModel.Name = Name2; Assert.AreEqual(view.Text1, Name2); }
public void Test_MemoryLeak_WeakBinding_AttachEvent() { var viewModel = new TestViewModel(); var viewModel2 = new TestViewModel2(); var reference = new WeakReference(viewModel2); var reference2 = new WeakReference(viewModel); WeakBinding binding = new WeakPropertyBinding(viewModel2, "Name", viewModel, "Name") .Initialize <WeakPropertyBinding>() .SetMode(BindMode.TwoWay) .AttachTargetEvent("TestViewModelEvent"); viewModel.Name = Name1; Assert.AreEqual(viewModel2.Name, Name1); viewModel2.Name = Name2; Assert.AreNotEqual(viewModel.Name, Name2); viewModel2.RaiseTestViewModelEvent(); Assert.AreEqual(viewModel.Name, Name2); viewModel2 = null; GC.Collect(); Assert.IsFalse(reference.IsAlive); viewModel = null; GC.Collect(); Assert.IsFalse(reference2.IsAlive); GC.KeepAlive(binding); }
public void Test_MemoryLeak_WeakBinding_Basic() { var viewModel = new TestViewModel(); var view = new TestView(); var reference = new WeakReference(view); var reference2 = new WeakReference(viewModel); var binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize <WeakPropertyBinding>() .SetMode(BindMode.OneWay); viewModel.Name = Name1; Assert.AreEqual(view.Text1, Name1); view = null; GC.Collect(); Assert.IsFalse(reference.IsAlive); viewModel = null; GC.Collect(); Assert.IsFalse(reference2.IsAlive); GC.KeepAlive(binding); }
public void Test_MemoryLeak_WeakBinding_AttachEvent() { var viewModel = new TestViewModel(); var viewModel2 = new TestViewModel2(); var reference = new WeakReference(viewModel2); var reference2 = new WeakReference(viewModel); WeakBinding binding = new WeakPropertyBinding(viewModel2, "Name", viewModel, "Name") .Initialize<WeakPropertyBinding>() .SetMode(BindMode.TwoWay) .AttachTargetEvent("TestViewModelEvent"); viewModel.Name = Name1; Assert.AreEqual(viewModel2.Name, Name1); viewModel2.Name = Name2; Assert.AreNotEqual(viewModel.Name, Name2); viewModel2.RaiseTestViewModelEvent(); Assert.AreEqual(viewModel.Name, Name2); viewModel2 = null; GC.Collect(); Assert.IsFalse(reference.IsAlive); viewModel = null; GC.Collect(); Assert.IsFalse(reference2.IsAlive); GC.KeepAlive(binding); }
public void Test_WeakBinding_GetBindSource() { var viewModel = new TestViewModel(); var view = new TestView(); WeakBinding binding = new WeakPropertyBinding(viewModel, "Name", view, "Text1") .Initialize <WeakPropertyBinding>() .SetMode(BindMode.TwoWay) .AttachSourceEvent(typeof(TestView), "StaticTestViewEvent"); viewModel.Name = Name1; Assert.AreEqual(view.Text1, Name1); view.Text1 = Name2; Assert.AreNotEqual(viewModel.Name, Name2); TestView.RaiseStaticTestViewEvent(); Assert.AreEqual(viewModel.Name, Name2); BindContext context = binding.GetBindContext(viewModel, "Name"); Assert.AreEqual(binding.BindTarget, context); BindContext source2 = binding.GetBindContext(view, "Text1"); Assert.AreEqual(binding.BindSource, source2); }
public void Test_WeakBinding_AttachSourceEvent_2() { var viewModel = new TestViewModel(); var view = new TestView(); var button = new Button(); WeakBinding binding = new WeakPropertyBinding(viewModel, "Name", view, "Text1") .Initialize <WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachSourceEvent(button, "Click"); view.Text1 = Name1; Assert.AreNotEqual(viewModel.Name, Name1); button.PerformClick(); Assert.AreEqual(viewModel.Name, Name1); binding.Clear(); viewModel = new TestViewModel(); view = new TestView(); button = new Button(); new WeakPropertyBinding(viewModel, "Name", view, "Text1") .Initialize <WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachSourceEvent(button, null, "Click"); view.Text1 = Name1; Assert.AreNotEqual(viewModel.Name, Name1); button.PerformClick(); Assert.AreEqual(viewModel.Name, Name1); }
public void Test_WeakBindEvent_NormalProperty() { var viewModel = new TestViewModel(); var view = new TestView(); var propertyBinding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize<WeakPropertyBinding>(); var weakEvent = new WeakEvent(viewModel); Assert.IsFalse(weakEvent.IsAttached); }
public void Test_WeakBindEvent_NormalProperty() { var viewModel = new TestViewModel(); var view = new TestView(); var propertyBinding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize <WeakPropertyBinding>(); var weakEvent = new WeakEvent(viewModel); Assert.IsFalse(weakEvent.IsAttached); }
public void Test_WeakBinding_DetachTargetEvent() { var viewModel = new TestViewModel(); var view = new TestView(); WeakBinding properyBinding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize <WeakPropertyBinding>() .AttachSourceEvent("TestViewModelEvent"); viewModel.Name = Name1; Assert.AreNotEqual(view.Text1, Name1); viewModel.RaiseTestViewModelEvent(); Assert.AreEqual(view.Text1, Name1); properyBinding.DetachTargetEvent(); viewModel.Name = Name2; Assert.AreNotEqual(view.Text1, Name2); }
public void Test_WeakBinding_DeActive() { var viewModel = new TestViewModel(); var view = new TestView(); WeakBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize <WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachTargetEvent("TestViewEvent"); viewModel.Name = Name1; binding.DeActivate(); viewModel.Name = Name2; Assert.AreNotEqual(view.Text1, Name2); binding.Activate(); Assert.AreEqual(view.Text1, Name2); }
public void Test_MemoryLeak_WeakPropertyBinding_Getter_Setter() { var viewModel = new TestViewModel(); var viewModel2 = new TestViewModel2(); var viewModel1 = new TestViewModel(); var viewModel21 = new TestViewModel2(); var reference = new WeakReference(viewModel1); var reference2 = new WeakReference(viewModel21); WeakBinding binding = new WeakPropertyBinding(viewModel2, null, viewModel, null) .Initialize <WeakPropertyBinding>() .SetMode <WeakPropertyBinding>(BindMode.TwoWay) .SetTargetPropertyGetter(arg => viewModel1.Name) .SetSourcePropertyGetter(arg => viewModel21.Name) .SetTargetPropertySetter((data, value) => viewModel1.Name = value.ToStringWithoutException()) .SetSourcePropertySetter((data, value) => viewModel21.Name = value.ToStringWithoutException()) .AttachTargetEvent("TestViewModelEvent") .AttachSourceEvent("TestViewModelEvent"); viewModel21.Name = Name1; viewModel.RaiseTestViewModelEvent(); Assert.AreEqual(viewModel1.Name, Name1); viewModel1.Name = Name2; viewModel2.RaiseTestViewModelEvent(); Assert.AreEqual(viewModel21.Name, Name2); viewModel1 = null; GC.Collect(); Assert.IsFalse(reference.IsAlive); viewModel21 = null; GC.Collect(); Assert.IsFalse(reference2.IsAlive); GC.KeepAlive(binding); }
public void Test_WeakBinding_DoConventions() { var viewModel = new TestViewModel(); var viewModel2 = new TestViewModel2(); var binding = new WeakPropertyBinding(viewModel2, "Name", viewModel, "Name") .Initialize <WeakPropertyBinding>(); binding.DeActivate(); Assert.IsFalse(binding.IsActivate); binding.Activate(); viewModel.Name = Name1; binding.DeActivate(); viewModel.Name = Name2; Assert.AreNotEqual(viewModel2.Name, Name2); binding.Activate(); Assert.AreEqual(viewModel2.Name, Name2); }
public void Test_MemoryLeak_WeakBinding_Basic() { var viewModel = new TestViewModel(); var view = new TestView(); var reference = new WeakReference(view); var reference2 = new WeakReference(viewModel); var binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize<WeakPropertyBinding>() .SetMode(BindMode.OneWay); viewModel.Name = Name1; Assert.AreEqual(view.Text1, Name1); view = null; GC.Collect(); Assert.IsFalse(reference.IsAlive); viewModel = null; GC.Collect(); Assert.IsFalse(reference2.IsAlive); GC.KeepAlive(binding); }
public void Test_WeakBinding_AttachSourceEvent_2() { var viewModel = new TestViewModel(); var view = new TestView(); var button = new Button(); WeakBinding binding = new WeakPropertyBinding(viewModel, "Name", view, "Text1") .Initialize<WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachSourceEvent(button, "Click"); view.Text1 = Name1; Assert.AreNotEqual(viewModel.Name, Name1); button.PerformClick(); Assert.AreEqual(viewModel.Name, Name1); binding.Clear(); viewModel = new TestViewModel(); view = new TestView(); button = new Button(); new WeakPropertyBinding(viewModel, "Name", view, "Text1") .Initialize<WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachSourceEvent(button, null, "Click"); view.Text1 = Name1; Assert.AreNotEqual(viewModel.Name, Name1); button.PerformClick(); Assert.AreEqual(viewModel.Name, Name1); }
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_WeakBinding_MemoryLeak() { var viewModel = new TestViewModel(); var view = new TestView(); int changed = 0; WeakPropertyBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize<WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachTargetEvent("TestViewEvent") .SetTargetChanged<WeakPropertyBinding>((sender, args) => { changed++; }); viewModel.Name = Name1; Assert.AreEqual(Name1, view.Text1); Assert.AreEqual(1, changed); viewModel.Name = Name2; Assert.AreEqual(Name2, view.Text1); Assert.AreEqual(2, changed); view = null; GC.Collect(); viewModel.Name = Name1; Assert.AreEqual(2, changed); }
public void Test_WeakBinding_GetBindSource() { var viewModel = new TestViewModel(); var view = new TestView(); WeakBinding binding = new WeakPropertyBinding(viewModel, "Name", view, "Text1") .Initialize<WeakPropertyBinding>() .SetMode(BindMode.TwoWay) .AttachSourceEvent(typeof(TestView), "StaticTestViewEvent"); viewModel.Name = Name1; Assert.AreEqual(view.Text1, Name1); view.Text1 = Name2; Assert.AreNotEqual(viewModel.Name, Name2); TestView.RaiseStaticTestViewEvent(); Assert.AreEqual(viewModel.Name, Name2); BindContext context = binding.GetBindContext(viewModel, "Name"); Assert.AreEqual(binding.BindTarget, context); BindContext source2 = binding.GetBindContext(view, "Text1"); Assert.AreEqual(binding.BindSource, source2); }
public void Test_WeakBinding_DoConventions() { var viewModel = new TestViewModel(); var viewModel2 = new TestViewModel2(); var binding = new WeakPropertyBinding(viewModel2, "Name", viewModel, "Name") .Initialize<WeakPropertyBinding>(); binding.DeActivate(); Assert.IsFalse(binding.IsActivate); binding.Activate(); viewModel.Name = Name1; binding.DeActivate(); viewModel.Name = Name2; Assert.AreNotEqual(viewModel2.Name, Name2); binding.Activate(); Assert.AreEqual(viewModel2.Name, Name2); }
public void Test_WeakBinding_DetachTargetEvent() { var viewModel = new TestViewModel(); var view = new TestView(); WeakBinding properyBinding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize<WeakPropertyBinding>() .AttachSourceEvent("TestViewModelEvent"); viewModel.Name = Name1; Assert.AreNotEqual(view.Text1, Name1); viewModel.RaiseTestViewModelEvent(); Assert.AreEqual(view.Text1, Name1); properyBinding.DetachTargetEvent(); viewModel.Name = Name2; Assert.AreNotEqual(view.Text1, Name2); }
public void Test_WeakBinding_DeActive() { var viewModel = new TestViewModel(); var view = new TestView(); WeakBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name") .Initialize<WeakPropertyBinding>() .SetMode(BindMode.OneWay) .AttachTargetEvent("TestViewEvent"); viewModel.Name = Name1; binding.DeActivate(); viewModel.Name = Name2; Assert.AreNotEqual(view.Text1, Name2); binding.Activate(); Assert.AreEqual(view.Text1, Name2); }
public void Test_MemoryLeak_WeakPropertyBinding_Getter_Setter() { var viewModel = new TestViewModel(); var viewModel2 = new TestViewModel2(); var viewModel1 = new TestViewModel(); var viewModel21 = new TestViewModel2(); var reference = new WeakReference(viewModel1); var reference2 = new WeakReference(viewModel21); WeakBinding binding = new WeakPropertyBinding(viewModel2, null, viewModel, null) .Initialize<WeakPropertyBinding>() .SetMode<WeakPropertyBinding>(BindMode.TwoWay) .SetTargetPropertyGetter(arg => viewModel1.Name) .SetSourcePropertyGetter(arg => viewModel21.Name) .SetTargetPropertySetter((data, value) => viewModel1.Name = value.ToStringWithoutException()) .SetSourcePropertySetter((data, value) => viewModel21.Name = value.ToStringWithoutException()) .AttachTargetEvent("TestViewModelEvent") .AttachSourceEvent("TestViewModelEvent"); viewModel21.Name = Name1; viewModel.RaiseTestViewModelEvent(); Assert.AreEqual(viewModel1.Name, Name1); viewModel1.Name = Name2; viewModel2.RaiseTestViewModelEvent(); Assert.AreEqual(viewModel21.Name, Name2); viewModel1 = null; GC.Collect(); Assert.IsFalse(reference.IsAlive); viewModel21 = null; GC.Collect(); Assert.IsFalse(reference2.IsAlive); GC.KeepAlive(binding); }