public void NullMethod() { EventBrokerService service = new EventBrokerService(); SpyEventSink sink = new SpyEventSink(); Assert.Throws <ArgumentNullException>(delegate { service.RegisterSink(sink, null, "MyEvent"); }); }
public void NullEventID() { EventBrokerService service = new EventBrokerService(); SpyEventSink sink = new SpyEventSink(); MethodInfo sinkMethod = sink.GetType().GetMethod("MySink"); Assert.Throws <ArgumentNullException>(delegate { service.RegisterSink(sink, sinkMethod, null); }); }
public void InvalidMethodSignature() { EventBrokerService service = new EventBrokerService(); SpyEventSink sink = new SpyEventSink(); MethodInfo sinkMethod = sink.GetType().GetMethod("NonSinkMethod"); Assert.Throws <ArgumentException>(delegate { service.RegisterSink(sink, sinkMethod, "MyEvent"); }); }
public void ExceptionsAreCollectedAndRethrown() { EventBrokerService service = new EventBrokerService(); SpyEventSource source = new SpyEventSource(); ExceptionThrowingSink sink1 = new ExceptionThrowingSink(); ExceptionThrowingSink sink2 = new ExceptionThrowingSink(); EventInfo sourceEvent = source.GetType().GetEvent("MySource"); MethodInfo sinkMethod = sink1.GetType().GetMethod("MySink"); service.RegisterSink(sink1, sinkMethod, "MyEvent"); service.RegisterSink(sink2, sinkMethod, "MyEvent"); service.RegisterSource(source, sourceEvent, "MyEvent"); EventBrokerException ex = Assert.Throws <EventBrokerException>(delegate { source.InvokeMySource(); }); Assert.Equal(2, ex.Exceptions.Count); }
public void RegistrationSourceFirst() { EventBrokerService service = new EventBrokerService(); SpyEventSource source = new SpyEventSource(); SpyEventSink sink = new SpyEventSink(); EventInfo sourceEvent = source.GetType().GetEvent("MySource"); MethodInfo sinkMethod = sink.GetType().GetMethod("MySink"); service.RegisterSource(source, sourceEvent, "MyEvent"); service.RegisterSink(sink, sinkMethod, "MyEvent"); source.InvokeMySource(); Assert.Equal(source.SourceText, sink.EventValue); }
public void SinksAreStoredWithWeakReferences() { EventBrokerService service = new EventBrokerService(); MethodInfo sinkMethod = typeof(ExceptionThrowingSink).GetMethod("MySink"); service.RegisterSink(new ExceptionThrowingSink(), sinkMethod, "MyEvent"); GC.Collect(); GC.WaitForPendingFinalizers(); Assert.DoesNotThrow(delegate { service.Fire("MyEvent", this, new EventArgs <string>("Hello world")); }); }
public void UnregisterSinkUnwiresHandler() { EventBrokerService service = new EventBrokerService(); SpyEventSource source = new SpyEventSource(); SpyEventSink sink = new SpyEventSink(); EventInfo sourceEvent = source.GetType().GetEvent("MySource"); MethodInfo sinkMethod = sink.GetType().GetMethod("MySink"); service.RegisterSource(source, sourceEvent, "MyEvent"); service.RegisterSink(sink, sinkMethod, "MyEvent"); service.UnregisterSink(sink, "MyEvent"); source.InvokeMySource(); Assert.False(sink.WasCalled); }
public override object BuildUp(IBuilderContext context, object buildKey, object existing) { IEventBrokerPolicy policy = context.Policies.Get <IEventBrokerPolicy>(buildKey); EventBrokerService service = context.Locator.Get <EventBrokerService>(); if (policy != null && service != null) { foreach (KeyValuePair <string, MethodInfo> kvp in policy.Sinks) { service.RegisterSink(existing, kvp.Value, kvp.Key); } foreach (KeyValuePair <string, EventInfo> kvp in policy.Sources) { service.RegisterSource(existing, kvp.Value, kvp.Key); } } return(base.BuildUp(context, buildKey, existing)); }