public void PropertyChangedShouldFireWhenClassFiresIt()
 {
     var testSubject = new _ObjWithPropertyChangeNotification();
     testSubject.MonitorEvents();
     testSubject.FireDescriptionChangedBecauseTestSaidTo();
     testSubject.ShouldRaisePropertyChangeFor(s => s.Description);
 }
 public void ShouldFirePropertyChangedWhenDependencyChanges()
 {
     var source = new _ObjWithPropertyChangeNotification();
     var listener = new _ObjWithPropagation(source);
     listener.MonitorEvents();
     source.FireDescriptionChangedBecauseTestSaidTo();
     listener.ShouldRaisePropertyChangeFor(l => l.DependsOnDescription);
 }
 public void ForPropertyShouldWrapAnActionAndCallItOnlyIfCalledWithPropertyChangeForTheRightProperty()
 {
     var source = new _ObjWithPropertyChangeNotification();
     bool wasCalled = false;
     var testSubject = source.ForProperty(() => source.Description, () => wasCalled = true);
     testSubject(null, new PropertyChangedEventArgs("NotDescription"));
     wasCalled.Should().BeFalse();
     testSubject(null, new PropertyChangedEventArgs("Description"));
     wasCalled.Should().BeTrue();
 }
 public _ObjWithPropagation([NotNull] _ObjWithPropertyChangeNotification source)
 {
     _source = source;
     this.Propagate(() => DependsOnDescription).From(source, src => src.Description);
 }