예제 #1
0
        public void ShouldRegisterOnePublisher()
        {
            EventBroker broker = new EventBroker();
            EventSource1 publisher = new EventSource1();

            broker.RegisterPublisher("PublishedEvent1", publisher, "Event1");

            List<string> published = new List<string>(broker.RegisteredEvents);
            List<object> publishers = new List<object>(broker.GetPublishersFor("PublishedEvent1"));

            Assert.IsTrue(published.Contains("PublishedEvent1"));
            Assert.AreEqual(1, publishers.Count);
            Assert.AreSame(publisher, publishers[0]);
        }
예제 #2
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);
        }
예제 #3
0
        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 StrategyProperlyWiresEvents()
        {
            MockBuilderContext context = CreateContext();
            NamedTypeBuildKey buildKey = NamedTypeBuildKey.Make<ClipboardManager>();

            EventBroker broker = new EventBroker();
            var brokerLifetime = new ExternallyControlledLifetimeManager();
            brokerLifetime.SetValue(broker);
            context.Policies.Set<ILifetimePolicy>(brokerLifetime, NamedTypeBuildKey.Make<EventBroker>());

            EventBrokerInfoPolicy policy = new EventBrokerInfoPolicy();
            policy.AddPublication("cut", "Cut");
            policy.AddPublication("copy", "Copy");
            policy.AddPublication("paste", "Paste");

            policy.AddSubscription("copy", typeof(ClipboardManager).GetMethod("OnCopy"));
            policy.AddSubscription("clipboard data available",
                                   typeof(ClipboardManager).GetMethod("OnClipboardDataAvailable"));

            context.Policies.Set<IEventBrokerInfoPolicy>(policy, buildKey);

            ClipboardManager existing = new ClipboardManager();

            context.ExecuteBuildUp(buildKey, existing);

            List<string> registeredEvents = new List<string>(broker.RegisteredEvents);
            registeredEvents.Sort();

            List<string> expectedEvents = new List<string>(new string[]
            {
                "cut",
                "copy",
                "paste",
                "clipboard data available"
            });
            expectedEvents.Sort();

            CollectionAssert.AreEqual(expectedEvents, registeredEvents);
        }
예제 #5
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]);
        }
예제 #6
0
        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);
        }
예제 #7
0
        public void ShouldRemovePublisherFromListOnUnregistration()
        {
            EventBroker broker = new EventBroker();
            EventSource1 publisher = new EventSource1();
            string publishedEventName = "MyEvent";
            broker.RegisterPublisher(publishedEventName, publisher, "Event1");

            broker.UnregisterPublisher(publishedEventName, publisher, "Event1");

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