public void AutowireAllEventsOnSource()
        {
            // create the event source, and a listener to wire to an event (s) on the source
            PingSource   source   = new PingSource();
            PingListener listener = new PingListener();

            // wire them up (any methods on the listener that have a signature compatible
            // with any event exposed on the source will be wired up)
            IEventHandlerValue wirer = new AutoWiringEventHandlerValue();

            wirer.Wire(source, listener);

            // raise the event (s) on the source
            source.OnPinging();
            source.OnPing();
            source.OnPinged();

            // ascertain that the event listener was indeed notified of the raised event
            Assert.IsTrue(listener.GotPinging, "The listener was not notified of the raised event.");
            Assert.IsTrue(listener.GotPing, "The listener was not notified of the raised event.");
            Assert.IsTrue(listener.GotPinged, "The listener was not notified of the raised event.");
        }
        public void AllCompatibleSignaturesAreWired()
        {
            // create the event source, and a listener to wire to an event (s) on the source
            PingSource   source   = new PingSource();
            PingListener listener = new PingListener();

            // wire them up
            IEventHandlerValue wirer = new AutoWiringEventHandlerValue();

            wirer.EventName  = "Pinging";
            wirer.MethodName = ".+"; // both OnPinging and OnPinged have compatible sigs :'(
            wirer.Wire(source, listener);

            // raise the event (s) on the source
            source.OnPinging();

            // ascertain that the event listener was indeed notified of the raised event
            Assert.IsTrue(listener.GotPinging, "The listener was not notified of the raised event.");
            Assert.IsFalse(listener.GotPing, "The listener was (incorrectly) notified of the raised event.");
            // the moral of the story is...
            //     don't use greedy method name regex's for autowiring, be explicit
            Assert.IsTrue(listener.GotPinged, "The listener was not notified of the raised event.");
        }