public void Subscription_MismatchingPropertyChanged_DoesNotInvokeHandler() { TestDerivedObject test = new TestDerivedObject(); bool called = false; test.SubscribeToPropertyChanged(x => x.ValueProperty, x => called = true); test.ObjectProperty = new object(); Assert.IsFalse(called, "SubscribeToPropertyChanged should not invoke handler when other properties change"); }
public void Subscription_MatchingPropertyChanged_InvokesHandler() { TestDerivedObject test = new TestDerivedObject(); bool called = false; test.SubscribeToPropertyChanged(x => x.ValueProperty, x => called = true); test.ValueProperty = 13; Assert.IsTrue(called, "SubscribeToPropertyChanged should invoke handler when property changes"); }
public void Subscription_ReturnsUnsubscribableDelegate() { TestDerivedObject test = new TestDerivedObject(); bool called = false; var unsubscribe = test.SubscribeToPropertyChanged(x => x.ValueProperty, x => called = true); test.PropertyChanged -= unsubscribe; test.ValueProperty = 13; Assert.IsFalse(called, "SubscribeToPropertyChanged should not invoke handler when unsubscribed"); }
public void TestDerivedSubscription() { TestDerivedObject test = new TestDerivedObject(); bool called = false; // Ensure the PropertyChangedEventHandler.Raise extension method will not fail when its "this" parameter is null test.ObjectProperty = new object(); test.SubscribeToPropertyChanged(x => x.ValueProperty, x => called = true); Assert.AreEqual(false, called); test.ObjectProperty = new object(); Assert.AreEqual(false, called); test.ValueProperty = 13; Assert.AreEqual(true, called); }