Exemplo n.º 1
0
        public void StaticPublisherThrows()
        {
            WorkItem        workItem = new TestableRootWorkItem();
            EventTopic      topic    = new EventTopic();
            StaticPublisher pub      = new StaticPublisher();

            topic.AddPublication(pub, "StaticEvent", workItem, PublicationScope.WorkItem);
        }
 private static void WeakEvent1Core(int addCount, bool removeTwice)
 {
     var(weakManager, weakSubscriber) = WeakEventHandlerCore(null, null, addCount: addCount, removeTwice: removeTwice);
     GC.Collect();
     Assert.IsFalse(weakManager.TryGetTarget(out _));
     Assert.IsFalse(weakSubscriber.TryGetTarget(out _));
     Assert.AreEqual(addCount, StaticPublisher.EventHandlerCount);
     StaticPublisher.RaiseEvent();
     Assert.AreEqual(0, StaticPublisher.EventHandlerCount);
     StaticPublisher.RaiseEvent();
     Assert.AreEqual(0, StaticPublisher.EventHandlerCount);
 }
        private static (WeakReference <Manager>, WeakReference <Subscriber>) WeakEventHandlerCore(Manager?manager, Subscriber?subscriber,
                                                                                                  int raiseCount = 1, int addCount = 1, bool remove = false, bool removeTwice = false)
        {
            manager ??= new Manager();
            subscriber ??= new Subscriber();
            Assert.AreEqual(0, StaticPublisher.EventHandlerCount);
            for (int i = 0; i < addCount; i++)
            {
                manager.Add(subscriber);
            }
            IWeakEventProxy?proxy1 = null;

            if (removeTwice)
            {
                proxy1 = manager.Proxy;
                manager.Add(subscriber);
            }
            Assert.AreEqual(removeTwice ? 2 : addCount, StaticPublisher.EventHandlerCount);
            proxy1?.Remove();
            proxy1?.Remove();

            GC.Collect();

            Assert.AreEqual(0, subscriber.HandlerCallCount);
            for (int i = 0; i < raiseCount; i++)
            {
                StaticPublisher.RaiseEvent();
            }
            Assert.AreEqual(addCount * raiseCount, subscriber.HandlerCallCount);
            if (remove)
            {
                var count = subscriber.HandlerCallCount;
                manager.Proxy !.Remove();
                StaticPublisher.RaiseEvent();
                Assert.AreEqual(count, subscriber.HandlerCallCount);
                manager.Proxy !.Remove();
                StaticPublisher.RaiseEvent();
                Assert.AreEqual(count, subscriber.HandlerCallCount);
            }

            return(new WeakReference <Manager>(manager), new WeakReference <Subscriber>(subscriber));
        }
Exemplo n.º 4
0
        public void CannotRegisterStaticPublisher()
        {
            StaticPublisher publisher = new StaticPublisher();

            topic.AddPublication(publisher, "StaticEvent", workItem, PublicationScope.WorkItem);
        }
 public void Cleanup()
 {
     StaticPublisher.Reset();
 }