public void ReplaceParentChangesChildrenIfParentDifferentTypes() { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new ReflectionPropertyScanner()); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var view = new MockView { Control = new MockControl("ViewOrig") }; var vm = new MockViewModel2 { Control = new MockControlViewModel("VmOrig") }; _bindings = bnd.Bind(new object[] { vm, view }); // Act view.Control = new MockControl("ViewNew") { Text = "banaan", Size = 11 }; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual("banaan", vm.Control.Text); Assert.AreEqual(11, vm.Control.Size); }
public void BindObjectsOfDifferentTypesResultsInPropertiesBeingSetOnce() { // Arrange int ob1cnt = 0, ob2cnt = 0; var bnd = new Binder(); bnd.PropertyScanner.Add(new ReflectionPropertyScanner()); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var ob1 = new NotifyPropertyChangedClass(); var ob2 = new ClassWithPropertyAndEvents(); ob1.PropertyChanged += delegate { ob1cnt++; }; ob2.PropertyChanged += delegate { ob2cnt++; }; _bindings = bnd.Bind(new object[] { ob1, ob2 }); ob1cnt = 0; ob2cnt = 0; // Act ob2.Property = "a"; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual(1, ob1cnt); Assert.AreEqual(1, ob2cnt); }
public void BindDifferentlyDistributedObjectHierarchiesChangeParent() { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new ReflectionPropertyScanner()); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var ob1 = new Abcd1(); var ob2 = new Abcd2(); var ob3 = new Abcd3(); _bindings = bnd.Bind(new object[] { ob1, ob2, ob3 }); ob2.AaaBee.CeeDee.Eee = "x"; // Act Abcd2.AB oldAaaBee = ob2.AaaBee; ob2.AaaBee = new Abcd2.AB { CeeDee = new Abcd2.CD { Eee = "y" } }; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual("y", ob1.Aaa.Bee.Cee.Dee.Eee); Assert.AreEqual("y", ob3.Aaa.BeeCee.Dee.Eee); Assert.AreEqual("x", oldAaaBee.CeeDee.Eee); }
public void BindThreeNotifyPropertyChangedObjects() { { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var ob1 = new NotifyPropertyChangedClass(); var ob2 = new NotifyPropertyChangedClass(); var ob3 = new NotifyPropertyChangedClass(); _bindings = bnd.Bind(new object[] { ob1, ob2, ob3 }); // Act ob1.Property = "a"; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual("a", ob1.Property); Assert.AreEqual("a", ob2.Property); Assert.AreEqual("a", ob3.Property); } { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var ob1 = new NotifyPropertyChangedClass(); var ob2 = new NotifyPropertyChangedClass(); var ob3 = new NotifyPropertyChangedClass(); _bindings = bnd.Bind(new object[] { ob1, ob2, ob3 }); // Act ob2.Property = "a"; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual("a", ob1.Property); Assert.AreEqual("a", ob2.Property); Assert.AreEqual("a", ob3.Property); } { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var ob1 = new NotifyPropertyChangedClass(); var ob2 = new NotifyPropertyChangedClass(); var ob3 = new NotifyPropertyChangedClass(); _bindings = bnd.Bind(new object[] { ob1, ob2, ob3 }); // Act ob3.Property = "a"; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual("a", ob1.Property); Assert.AreEqual("a", ob2.Property); Assert.AreEqual("a", ob3.Property); } }
public void BindReflectedObjects() { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new ReflectionPropertyScanner()); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var ob1 = new ClassWithPropertyAndEvents(); var ob2 = new ClassWithPropertyAndEvents(); _bindings = bnd.Bind(new object[] { ob1, ob2 }); // Act ob2.Property = "a"; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual("a", ob1.Property); }
public void BindSpecialPropertyOnExtensionsWithNotifyPropertyChanged() { // Arrange var bnd = new Binder(); var customExtensionsScanner = new TypeExtensionsScanner(bnd.PropertyScanner); customExtensionsScanner.AdapterRegistry.Register <MockViewExtensions>(); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); bnd.PropertyScanner.Add(customExtensionsScanner); var ob1 = new MockView(); var ob2 = new MockViewModel(); _bindings = bnd.Bind(new object[] { ob1, ob2 }); // Act ob2.SpecialProperty = 666; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual(666, ob1.GetSpecialProperty()); }
public void ReplaceParentWithSameTypeChangesParentAndLeavesChildrenAlone() { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new ReflectionPropertyScanner()); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var view = new MockView { Control = new MockControl("ViewOrig") { Text = "Appel", Size = 100 } }; var viewCtl = view.Control; var vm = new MockView { Control = new MockControl("VmOrig") { Text = "Peer", Size = 200 } }; var vmCtl = vm.Control; _bindings = bnd.Bind(new object[] { vm, view }); // Act view.Control = new MockControl("ViewNew") { Text = "banaan", Size = 11 }; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreSame(view.Control, vm.Control); Assert.AreEqual("Appel", viewCtl.Text); Assert.AreEqual(100, viewCtl.Size); Assert.AreEqual("Peer", vmCtl.Text); Assert.AreEqual(200, vmCtl.Size); }
public void BindViewToViewmodel() { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new ReflectionPropertyScanner()); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var view = new MockView { Control = new MockControl("ViewOrig") }; var vm = new MockViewModel(); _bindings = bnd.Bind(new object[] { vm, view }); // Act view.Control.Text = "banaan"; view.Control.Size = 11; // Assert Assert.Greater(_bindings.Count(), 0); Assert.AreEqual("banaan", vm.ControlText); Assert.AreEqual(11, vm.ControlSize); }