public void WeakEventManager_AddWeakEventListener_Property_FiresEvent() { const string propertyName = "TestProperty"; var source = new Mock <INotifyPropertyChanged>(); var invocations = 0; var wem = new WeakEventManager(); wem.AddWeakEventListener( source.Object, (s, a) => { s.ShouldBe(source.Object); a.PropertyName.ShouldBe(propertyName); invocations++; } ); source.Raise(x => x.PropertyChanged += null, new PropertyChangedEventArgs(propertyName)); invocations.ShouldBe(1); }
public void WeakEventManager_AddWeakEventListener_Collection_FiresEvent() { var collectionAddObject = new object(); var source = new Mock <INotifyCollectionChanged>(); var invocations = 0; var wem = new WeakEventManager(); wem.AddWeakEventListener( source.Object, (s, a) => { s.ShouldBe(source.Object); a.Action.ShouldBe(NotifyCollectionChangedAction.Add); a.NewItems.Count.ShouldBe(1); a.NewItems[0].ShouldBe(collectionAddObject); invocations++; } ); source.Raise( x => x.CollectionChanged += null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, collectionAddObject) ); invocations.ShouldBe(1); }
public void WeakEventManager_AddWeakEventListener_FiresEventAfterGC() { var source = new Mock <INotifyPropertyChanged>(); var invocations = 0; var wem = new WeakEventManager(); wem.AddWeakEventListener <INotifyPropertyChanged, PropertyChangedEventArgs>( source.Object, nameof(INotifyPropertyChanged.PropertyChanged), (s, a) => { s.ShouldBe(source.Object); invocations++; } ); GC.Collect(); source.Raise(x => x.PropertyChanged += null, new PropertyChangedEventArgs("Foo")); invocations.ShouldBe(1); }
public void WeakEventManager_ClearWeakEventListeners_EventNoLongerFires() { var source = new Mock <INotifyPropertyChanged>(); var invocations = 0; var wem = new WeakEventManager(); wem.AddWeakEventListener <INotifyPropertyChanged, PropertyChangedEventArgs>( source.Object, nameof(INotifyPropertyChanged.PropertyChanged), (s, a) => { s.ShouldBe(source.Object); invocations++; } ); wem.ClearWeakEventListeners(); source.Raise(x => x.PropertyChanged += null, new PropertyChangedEventArgs("Foo")); invocations.ShouldBe(0); }
public TestSubscriber(TestPublisher publisher) { Publisher = publisher; _manager.AddWeakEventListener <TestPublisher, TestEventArgs>(publisher, nameof(publisher.TheEvent), OnTheEvent); }