public void SubscriberCleanup( EventBroker eventBroker, SimpleEvent.EventPublisher publisher, SimpleEvent.EventSubscriber subscriber, SimpleEvent.EventSubscriber subscriberThatIsCollected, SimpleEvent.RegisterableEventSubscriber registerableSubscriberThatIsCollected, WeakReference referenceOnSubscriberThatIsCollected, WeakReference referenceOnRegisterableSubscriberThatIsCollected) { "Establish an event broker".x(() => eventBroker = new EventBroker()); "Establish a registered publisher".x(() => { publisher = new SimpleEvent.EventPublisher(); eventBroker.Register(publisher); }); "Establish a registered subscriber".x(() => { subscriber = new SimpleEvent.EventSubscriber(); eventBroker.Register(subscriber); }); "Establish a registered subscriber that is collected".x(() => { subscriberThatIsCollected = new SimpleEvent.EventSubscriber(); eventBroker.Register(subscriberThatIsCollected); }); "Establish a registerable subscriber that is collected".x(() => { registerableSubscriberThatIsCollected = new SimpleEvent.RegisterableEventSubscriber(); eventBroker.Register(registerableSubscriberThatIsCollected); }); "Establish a weak references to the collected subscribers".x(() => { referenceOnSubscriberThatIsCollected = new WeakReference(subscriberThatIsCollected); referenceOnRegisterableSubscriberThatIsCollected = new WeakReference(registerableSubscriberThatIsCollected); }); "When enforcing the garbage collection".x(() => { subscriberThatIsCollected = null; registerableSubscriberThatIsCollected = null; GC.Collect(); }); "It should garbage collect the subscribers registered by attribute".x(() => referenceOnSubscriberThatIsCollected.IsAlive .Should().BeFalse("subscriber should be collected")); "It should garbage collect the subscribers registered by registrar".x(() => referenceOnRegisterableSubscriberThatIsCollected.IsAlive .Should().BeFalse("subscriber should be collected")); }
public void EventBrokerCleanup( EventBroker eventBroker, WeakReference publisher, WeakReference registerablePublisher, WeakReference subscriber, WeakReference registerableSubscriber) { "Establish an event broker".x(() => eventBroker = new EventBroker()); "Establish a registered publisher".x(() => { var p = new SimpleEvent.EventPublisher(); publisher = new WeakReference(p); eventBroker.Register(p); }); "Establish a registered registerable publisher".x(() => { var p = new SimpleEvent.RegisterableEventPublisher(); registerablePublisher = new WeakReference(p); eventBroker.Register(p); }); "Establish a registered subscriber".x(() => { var s = new SimpleEvent.EventSubscriber(); subscriber = new WeakReference(s); eventBroker.Register(s); }); "Establish a registered registerable subscriber".x(() => { var s = new SimpleEvent.RegisterableEventSubscriber(); registerableSubscriber = new WeakReference(s); eventBroker.Register(s); }); "When enforcing the garbage collection".x( GC.Collect); "It should unregister publishers registered by attribute".x(() => publisher.IsAlive .Should().BeFalse("publisher should not be referenced anymore")); "It should unregister publishers registered by registrar".x(() => registerablePublisher.IsAlive .Should().BeFalse("publisher should not be referenced anymore")); "It should unregister subscribers registered by attribtue".x(() => subscriber.IsAlive .Should().BeFalse("subscriber should not be referenced anymore")); "It should unregister subscribers registered by registrar".x(() => registerableSubscriber.IsAlive .Should().BeFalse("subscriber should not be referenced anymore")); }