public void ShouldRegisterOneSubscriber()
        {
            EventBroker broker = new EventBroker();

            EventHandler subscriber = delegate { };

            broker.RegisterSubscriber("SubscribedEvent1", subscriber);

            List<string> published = new List<string>(broker.RegisteredEvents);
            List<object> publishers = new List<object>(broker.GetPublishersFor("SubscribedEvent1"));
            List<EventHandler> subscribers = new List<EventHandler>(broker.GetSubscribersFor("SubscribedEvent1"));

            Assert.AreEqual(1, published.Count);
            Assert.AreEqual("SubscribedEvent1", published[0]);
            Assert.AreEqual(0, publishers.Count);
            Assert.AreEqual(1, subscribers.Count);
            Assert.AreSame(subscriber, subscribers[0]);
        }
        public void ShouldRegisterOnePublisherAndOneSubscriber()
        {
            EventBroker broker = new EventBroker();
            EventSource1 publisher = new EventSource1();
            string publishedEventName = "MyEvent";
            EventHandler subscriber = delegate { };

            broker.RegisterPublisher(publishedEventName, publisher, "Event1");
            broker.RegisterSubscriber(publishedEventName, subscriber);
            
            List<string> published = new List<string>(broker.RegisteredEvents);
            List<object> publishers = new List<object>(broker.GetPublishersFor(publishedEventName));
            List<EventHandler> subscribers = new List<EventHandler>(broker.GetSubscribersFor(publishedEventName));

            Assert.AreEqual(1, published.Count);
            Assert.AreEqual(publishedEventName, published[0]);

            Assert.AreEqual(1, publishers.Count);
            Assert.AreSame(publisher, publishers[0]);

            Assert.AreEqual(1, subscribers.Count);
            Assert.AreSame(subscriber, subscribers[0]);
        }
        public void ShouldCallSubscriberWhenPublisherFiresEvent()
        {
            EventBroker broker = new EventBroker();
            EventSource1 publisher = new EventSource1();
            string publishedEventName = "MyEvent";
            bool subscriberFired = false;
            EventHandler subscriber = delegate { subscriberFired = true;  };

            broker.RegisterPublisher(publishedEventName, publisher, "Event1");
            broker.RegisterSubscriber(publishedEventName, subscriber);

            publisher.FireEvent1();

            Assert.IsTrue(subscriberFired);
        }
        public void ShouldRemoveSubscriberFromListOnUnregistration()
        {
            EventBroker broker = new EventBroker();
            string publishedEventName = "SomeEvent";
            EventHandler subscriber = delegate { };
            broker.RegisterSubscriber(publishedEventName, subscriber);

            broker.UnregisterSubscriber(publishedEventName, subscriber);

            Assert.AreEqual(0, new List<EventHandler>(broker.GetSubscribersFor(publishedEventName)).Count);
        }