Example #1
0
        public void ShouldForwardArgs()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            var args = new EventArgs1(2);

            handler.Raise(null, args);

            Assert.That(EventReceiver1.Args, Is.EqualTo(args));
        }
Example #2
0
 public void Callback(object sender, EventArgs1 args)
 {
     Sender = sender;
     Args = args;
     CallCounter++;
 }
Example #3
0
        public void ShouldForwardSender()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            var args = new EventArgs1(2);
            var sender = new object();

            handler.Raise(sender, args);

            Assert.That(EventReceiver1.Sender, Is.EqualTo(sender));
        }
Example #4
0
        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));
        }