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."); }