public void StrategyDoesntOverwriteAnExistingPolicy() { MockBuilderContext context = CreateContext(); NamedTypeBuildKey buildKey = NamedTypeBuildKey.Make <object>(); EventBrokerInfoPolicy policy = new EventBrokerInfoPolicy(); context.Policies.Set <IEventBrokerInfoPolicy>(policy, buildKey); context.ExecuteBuildUp(buildKey, null); IEventBrokerInfoPolicy setPolicy = context.Policies.Get <IEventBrokerInfoPolicy>(buildKey); Assert.AreSame(policy, setPolicy); }
public void ReflectingOverObjectWithoutSubscriptionResultsInEmptyPolicy() { MockBuilderContext context = CreateContext(); NamedTypeBuildKey buildKey = NamedTypeBuildKey.Make <object>(); context.ExecuteBuildUp(buildKey, null); IEventBrokerInfoPolicy policy = context.Policies.Get <IEventBrokerInfoPolicy>(buildKey); Assert.IsNotNull(policy); List <PublicationInfo> publications = new List <PublicationInfo>(policy.Publications); List <SubscriptionInfo> subscriptions = new List <SubscriptionInfo>(policy.Subscriptions); Assert.AreEqual(0, publications.Count); Assert.AreEqual(0, subscriptions.Count); }
public void ReflectingOverSubscribingTypeResultsInCorrectPolicy() { MockBuilderContext context = CreateContext(); NamedTypeBuildKey buildKey = NamedTypeBuildKey.Make <OneEventSubscriber>(); context.ExecuteBuildUp(buildKey, null); IEventBrokerInfoPolicy policy = context.Policies.Get <IEventBrokerInfoPolicy>(buildKey); Assert.IsNotNull(policy); List <PublicationInfo> publications = new List <PublicationInfo>(policy.Publications); List <SubscriptionInfo> subscriptions = new List <SubscriptionInfo>(policy.Subscriptions); Assert.AreEqual(0, publications.Count); CollectionAssert.AreEqual(new SubscriptionInfo[] { new SubscriptionInfo("copy", typeof(OneEventSubscriber).GetMethod("OnCopy")) }, subscriptions); }
public void ReflectingOverPublishingTypeResultsInCorrectPolicy() { MockBuilderContext context = CreateContext(); NamedTypeBuildKey buildKey = NamedTypeBuildKey.Make <OneEventPublisher>(); context.ExecuteBuildUp(buildKey, null); IEventBrokerInfoPolicy policy = context.Policies.Get <IEventBrokerInfoPolicy>(buildKey); Assert.IsNotNull(policy); List <PublicationInfo> publications = new List <PublicationInfo>(policy.Publications); List <SubscriptionInfo> subscriptions = new List <SubscriptionInfo>(policy.Subscriptions); Assert.AreEqual(0, subscriptions.Count); CollectionAssert.AreEqual(new PublicationInfo[] { new PublicationInfo("paste", "Pasting") }, publications); }
public void OneTypeCanPublishAndSubscribeMultipleTimes() { MockBuilderContext context = CreateContext(); NamedTypeBuildKey buildKey = NamedTypeBuildKey.Make <ClipboardManager>(); context.ExecuteBuildUp(buildKey, null); IEventBrokerInfoPolicy policy = context.Policies.Get <IEventBrokerInfoPolicy>(buildKey); Assert.IsNotNull(policy); List <PublicationInfo> publications = new List <PublicationInfo>(policy.Publications); List <SubscriptionInfo> subscriptions = new List <SubscriptionInfo>(policy.Subscriptions); publications.Sort( delegate(PublicationInfo a, PublicationInfo b) { return(a.PublishedEventName.CompareTo(b.PublishedEventName)); }); subscriptions.Sort( delegate(SubscriptionInfo a, SubscriptionInfo b) { return(a.PublishedEventName.CompareTo(b.PublishedEventName)); }); CollectionAssert.AreEqual( new PublicationInfo[] { new PublicationInfo("copy", "Copy"), new PublicationInfo("cut", "Cut"), new PublicationInfo("paste", "Paste"), }, publications); CollectionAssert.AreEqual( new SubscriptionInfo[] { new SubscriptionInfo("clipboard data available", typeof(ClipboardManager).GetMethod("OnClipboardDataAvailable")), new SubscriptionInfo("copy", typeof(ClipboardManager).GetMethod("OnCopy")), }, subscriptions); }
public override void PreBuildUp(IBuilderContext context) { if (context.Existing != null) { IEventBrokerInfoPolicy policy = context.Policies.Get <IEventBrokerInfoPolicy>(context.BuildKey); if (policy != null) { EventBroker broker = GetBroker(context); foreach (PublicationInfo pub in policy.Publications) { broker.RegisterPublisher(pub.PublishedEventName, context.Existing, pub.EventName); } foreach (SubscriptionInfo sub in policy.Subscriptions) { broker.RegisterSubscriber(sub.PublishedEventName, (EventHandler)Delegate.CreateDelegate( typeof(EventHandler), context.Existing, sub.Subscriber)); } } } }