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 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 ValueIsSetAndEventIsRaised() { // Arrange var scanner = new ReflectionPropertyScanner(); object newValue = null; var property = scanner.Scan(typeof(ClassWithPropertyAndEvents)) .FirstOrDefault(p => Equals(p.Path, (PropertyPath)"property")); var ob = new ClassWithPropertyAndEvents(); ob.Property = "banaan"; property.SetObject(ob); property.ValueChanged += (sender, e) => newValue = e.NewValue; // Act property.TrySetValue("fdsa"); // Assert Assert.AreEqual("fdsa", ob.Property); Assert.AreEqual("fdsa", newValue); }