public void WhenAssociatedObjectIsUnloadedAndDiscarded_ShouldBeGarbageCollected() { InteractionRequest <INotification> request = new InteractionRequest <INotification>(); TestableInteractionRequestTrigger trigger = new TestableInteractionRequestTrigger(); MockFrameworkElement associatedObject = new MockFrameworkElement(); trigger.Attach(associatedObject); trigger.SourceObject = request; WeakReference weakTrigger = new WeakReference(trigger); trigger = null; GC.Collect(); Assert.IsTrue(weakTrigger.IsAlive); associatedObject.RaiseUnloaded(); associatedObject = null; GC.Collect(); Assert.IsFalse(weakTrigger.IsAlive); }
public void WhenAssociatedObjectIsReloaded_ShouldReactToEventBeingRaisedAgain() { InteractionRequest <INotification> request = new InteractionRequest <INotification>(); TestableInteractionRequestTrigger trigger = new TestableInteractionRequestTrigger(); MockFrameworkElement associatedObject = new MockFrameworkElement(); trigger.Attach(associatedObject); trigger.SourceObject = request; Assert.IsTrue(trigger.ExecutionCount == 0); request.Raise(new Notification()); Assert.IsTrue(trigger.ExecutionCount == 1); associatedObject.RaiseUnloaded(); request.Raise(new Notification()); Assert.IsTrue(trigger.ExecutionCount == 1); associatedObject.RaiseLoaded(); request.Raise(new Notification()); Assert.IsTrue(trigger.ExecutionCount == 2); }