Ejemplo n.º 1
0
            public void NullMethod()
            {
                EventBrokerService service = new EventBrokerService();
                SpyEventSink       sink    = new SpyEventSink();

                Assert.Throws <ArgumentNullException>(delegate
                {
                    service.RegisterSink(sink, null, "MyEvent");
                });
            }
Ejemplo n.º 2
0
            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);
                });
            }
Ejemplo n.º 3
0
            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");
                });
            }
Ejemplo n.º 4
0
            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);
            }
Ejemplo n.º 5
0
            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);
            }
Ejemplo n.º 6
0
            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"));
                });
            }
Ejemplo n.º 7
0
            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);
            }
Ejemplo n.º 8
0
        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));
        }