예제 #1
0
        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());
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }