public void NullEvent() { EventBrokerService service = new EventBrokerService(); SpyEventSource source = new SpyEventSource(); Assert.Throws <ArgumentNullException>(delegate { service.RegisterSource(source, null, "MyEvent"); }); }
public void NullSource() { EventBrokerService service = new EventBrokerService(); SpyEventSource source = new SpyEventSource(); EventInfo sourceEvent = source.GetType().GetEvent("MySource"); Assert.Throws <ArgumentNullException>(delegate { service.RegisterSource(null, sourceEvent, "MyEvent"); }); }
public void UnregisterSourceUnwiresHandler() { EventBrokerService service = new EventBrokerService(); SpyEventSource source = new SpyEventSource(); EventInfo sourceEvent = source.GetType().GetEvent("MySource"); service.RegisterSource(source, sourceEvent, "MyEvent"); service.UnregisterSource(source, "MyEvent"); Assert.False(source.HasHandlers); }
public void SourcesAreStoredWithWeakReferences() { SpyEventSource.FinalizerCalled = false; EventBrokerService service = new EventBrokerService(); EventInfo sourceEvent = typeof(SpyEventSource).GetEvent("MySource"); service.RegisterSource(new SpyEventSource(), sourceEvent, "MyEvent"); GC.Collect(); GC.WaitForPendingFinalizers(); Assert.True(SpyEventSource.FinalizerCalled); }
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 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 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 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)); }