Exemple #1
0
        static WeakReference RegisterSomeWeak(SystemEventSource ses)
        {
            var mock = new Mock <INotificationEventObserver>();

            ses.Subscribe(mock.Object);
            return(new WeakReference(mock, true));
        }
Exemple #2
0
        public void SusbscribeAndUnsubscribve()
        {
            // prepare
            var expected = new NotificationEvent(null !);
            var mock     = new Mock <INotificationEventObserver>();
            var ses      = new SystemEventSource(null);

            // act
            ses.Subscribe(mock.Object);
            ses.Unsubscribe(mock.Object);
            ses.SendEvent(expected);

            // verify
            mock.AssertNoOtherCalls();
            Assert.Equal(0, ses.GetObserversCount());
        }
Exemple #3
0
        public void SubscribeAndSendEvent()
        {
            // prepare
            var expected = new NotificationEvent(null !);
            var mock     = new Mock <INotificationEventObserver>();
            var ses      = new SystemEventSource(null);

            // act
            ses.Subscribe(mock.Object);
            ses.SendEvent(expected);

            // verify
            Assert.Equal(1, ses.GetObserversCount());
            mock.Assert(f => f.OnNotificationReceived(
                            The <NotificationEvent> .Is(ne => ReferenceEquals(expected, ne))));
        }
Exemple #4
0
        public void UnsubscribeAndGC()
        {
            // prepare
            var ses = new SystemEventSource(null);
            var wr  = RegisterSomeWeak(ses);

            Assert.Equal(1, ses.GetObserversCount());

            // act
            GC.Collect();
            GC.WaitForPendingFinalizers();
            ses.Unsubscribe(null !);

            // verify
            Assert.Equal(0, ses.GetObserversCount());
            Assert.Null(wr.Target);
        }
Exemple #5
0
        public void PlatformSendPendingEvents()
        {
            // prepare
            var expected = new NotificationEvent(null !);

            Platform.AddPendingEvent(expected);
            var ses  = new SystemEventSource(null);
            var mock = new Mock <INotificationEventObserver>();

            ses.Subscribe(mock.Object);

            // act
            ses.SendPendingEvents();

            Assert.Same(expected: ses, Platform.SystemEventSource);
            mock.Assert(f => f.OnNotificationReceived(
                            The <NotificationEvent> .Is(result => ReferenceEquals(expected, result))), Invoked.Once);
        }