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 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 NotifyPropertyChangedPropertyClone() { int cnt = 0; var props = new NotifyPropertyChangedPropertyScanner().Scan(typeof(NotifyPropertyChangedClass)); foreach (var prop in props) { object o1 = new NotifyPropertyChangedClass(); object o2 = new NotifyPropertyChangedClass(); CloneYieldsIndependentPropertiesWithSameObject(prop, o1); ClonedPropertyCanChangeObjectIndependently(prop, o1, o2); ClonedPropertyCanChangeObjectIndependently(prop, o2, null); cnt++; } Assert.IsTrue(cnt > 0); }
public void BindObjectsOfDifferentTypesReflectedToNotprop() { // Arrange var bnd = new Binder(); bnd.PropertyScanner.Add(new ReflectionPropertyScanner()); bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner()); var ob1 = new NotifyPropertyChangedClass(); 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 ValueIsSetAndEventIsRaised() { // Arrange var scanner = new NotifyPropertyChangedPropertyScanner(); object newValue = null; var property = scanner.Scan(typeof(NotifyPropertyChangedClass)) .FirstOrDefault(p => Equals(p.Path, (PropertyPath)"property")); var ob = new NotifyPropertyChangedClass(); ob.Property = "banaan"; property.SetObject(ob); property.ValueChanged += (sender, e) => newValue = e.NewValue; // Act property.TrySetValue("asdf"); // Assert Assert.AreEqual("asdf", ob.Property); Assert.AreEqual("asdf", newValue); }