static WeakReference RegisterSomeWeak(SystemEventSource ses) { var mock = new Mock <INotificationEventObserver>(); ses.Subscribe(mock.Object); return(new WeakReference(mock, true)); }
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()); }
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)))); }
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); }
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); }