public void WeakEventListenerDead3() { List <int> list = new List <int>(); WeakEventListener <TestGarbage, int, int, int> listener; { var garbage = new TestGarbage(list); listener = new WeakEventListener <TestGarbage, int, int, int>(garbage, (target, i, i2, i3) => {}); } GC.Collect(); Assert.That(listener.IsDead()); }
public void LifeTimeEventListenerDontHoldGarbage() { var slot = new EventSlot(); List <int> list = new List <int>(); { TestGarbage garbage = new TestGarbage(list); var listener = DelegateEventListeners.LifeTime((t) => t.Callback(), garbage); slot.Register(listener); } GC.Collect(); slot.Trigger(); Assert.AreEqual(0, list.Count); }
public void LifeTimeEventListenerStillAlive() { var slot = new EventSlot(); List <int> list = new List <int>(); TestGarbage garbage = new TestGarbage(list); var listener = DelegateEventListeners.LifeTime((t) => t.Callback(), garbage); slot.Register(listener); GC.Collect(); slot.Trigger(); garbage.Nothing = 2; Assert.AreEqual(1, list.Count); }