public void SetProperty_GivenSimplePropertyFilter_WhenSecondOrderUnset_IgnoresNestedPropertyChange() { var secondOrder = GetSecondOrderObject(); var p = new PropertyChangedTrigger(secondOrder, "Child", null, _logger); bool triggered = false; p.Activate(null); // hook up the event after the first depth is set so that the trigger must come from next depth. p.Triggered += (sender, args) => { triggered = true; }; // unset the nested property secondOrder.Child.Child = null; Assert.IsFalse(triggered); }
public void SetProperty_GivenThirdOrderNesting_WhenThirdOrderSet_RaisesTriggeredEvent() { var thirdOrder = GetThirdOrderObject(); var p = new PropertyChangedTrigger(thirdOrder, "Child.Child.Child", null, _logger); bool triggered = false; int triggeredBy = -1; p.Triggered += (sender, args) => { triggeredBy = ((args.GetTripOrigin().Signal as BoundPropertyChangedEventArgs).PropertyOwner as NotifyPropertyChangedImpl).NestLevel; triggered = true; }; p.Activate(null); thirdOrder.Child.Child.Child = null; Assert.IsTrue(triggered); Assert.AreEqual(2, triggeredBy); }
public void SetProperty_GivenSimplePropertyFilter_WhenFirstOrdeSet_RaisesTriggeredEvent() { var firstOrder = new NotifyPropertyChangedImpl(0); var p = new PropertyChangedTrigger(firstOrder, "Child", null, _logger); bool triggered = false; int triggeredBy = -1; p.Triggered += (sender, args) => { triggeredBy = ((args.GetTripOrigin().Signal as BoundPropertyChangedEventArgs).PropertyOwner as NotifyPropertyChangedImpl).NestLevel; triggered = true; }; p.Activate(null); firstOrder.Child = new NotifyPropertyChangedImpl(1); Assert.IsTrue(triggered); Assert.AreEqual(0, triggeredBy); }