public void ShouldLetPublisherBeGarbageCollected() { var pub = new Publisher1(); var pubReference = new WeakReference(pub); var receiver1 = new EventReceiver1(); pub.MyTestEvent += receiver1.Callback; pub.Publish(); Assert.That(receiver1.CallCounter, Is.EqualTo(1)); pub = null; GC.Collect(); Assert.That(pubReference.IsAlive, Is.False); }
public void PerTestSetUp() { EventReceiver1 = new EventReceiver1(); EventReceiver2 = new EventReceiver2(); _myTestHandler = new WeakEvent<EventHandler<EventArgs1>>(); }
public void ShouldIgnoreGarbageCollectedSubscribers() { var handler = new WeakEvent<EventHandler<EventArgs1>>(); var receiver = new EventReceiver1(); var receiverReference = new WeakReference(receiver); var args = new EventArgs1(2); var sender = new object(); handler.Add(receiver.Callback); handler.Raise(sender, args); receiver = null; GC.Collect(); Assert.That(receiverReference.IsAlive, Is.False); handler.Raise(sender, args); Assert.That(handler.ListenersCount, Is.EqualTo(0)); }