public void Can_safely_raise_event_even_when_no_subsriptions_were_made() { // Arrange var viewModel = new SomeViewModel(); // Act Assert.DoesNotThrow(() => viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"))); }
public void Can_safely_raise_event_even_when_no_subsriptions_were_made() { // Arrange var viewModel = new SomeViewModel(); // Act Assert.DoesNotThrow(() => viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some"))); }
public void When_event_raised_the_Lambda_handler_should_be_called() { // Arrange var viewModel = new SomeViewModel(); var handled = false; viewModel.PropertyChanged += (sender, args) => handled = true; // Act viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert handled.Should().BeTrue(); }
public void When_event_raised_the_Method_handler_should_be_called() { // Arrange var viewModel = new SomeViewModel(); var view = new SomeView(); viewModel.PropertyChanged += view.OnPropertyChanged; // Act viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
public void With_no_subscriptions_should_unsibscribe_without_exception() { // Arrange var viewModel = new SomeViewModel(); PropertyChangedEventHandler propertyChanged = (sender, args) => { }; // Act viewModel.PropertyChanged -= propertyChanged; viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert // No exceptions expected }
public void When_event_raised_and_GC_collected_and_despite_that_subscriber_is_still_used_then_the_Method_handler_should_not_be_called() { // Arrange var viewModel = new SomeViewModel(); var view = new SomeView(); viewModel.PropertyChanged += view.OnPropertyChanged; // Act GC.Collect(); viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert view.Observer.IsPropertyChangedHandled.Should().BeFalse(); }
public void When_event_raised_the_Lambda_handler_should_be_called() { // Arrange var viewModel = new SomeViewModel(); var handled = false; viewModel.PropertyChanged += (sender, args) => handled = true; // Act viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert handled.Should().BeTrue(); }
public void When_event_raised_the_Method_handler_should_be_called() { // Arrange var viewModel = new SomeViewModel(); var view = new SomeView(); viewModel.PropertyChanged += view.OnPropertyChanged; // Act viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
internal TimeSpan NotifyMethodsWithReflection(int times) { var view = new SomeView(); var viewModel = new SomeViewModel(); viewModel.SubscribeWeakly(x => x.Flag, view.OnFlagChanged); var stopwatch = Stopwatch.StartNew(); for (var i = 0; i < times; i++) viewModel.NotifyPropertyChanged(); stopwatch.Stop(); return stopwatch.Elapsed; }
public void PropertyChanged_event_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards() { // Arrange var view = new SomeView(); var viewModel = new SomeViewModel(); viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged()); // Act GC.Collect(); viewModel.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
public void When_event_raised_and_GC_collected_and_despite_that_subscriber_is_still_used_then_the_Method_handler_should_not_be_called() { // Arrange var viewModel = new SomeViewModel(); var view = new SomeView(); viewModel.PropertyChanged += view.OnPropertyChanged; // Act GC.Collect(); viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert view.Observer.IsPropertyChangedHandled.Should().BeFalse(); }
public void When_Lambda_handler_is_unsubscribed_and_event_raised_then_the_handler_should_not_be_called() { // Arrange var viewModel = new SomeViewModel(); var handled = false; PropertyChangedEventHandler onPropertyChanged = (sender, args) => handled = true; viewModel.PropertyChanged += onPropertyChanged; // Act viewModel.PropertyChanged -= onPropertyChanged; viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert handled.Should().BeFalse(); }
internal TimeSpan NotifyAsUsual(int times) { var someView = new SomeView(); var someViewModel = new SomeViewModel(); someViewModel.PropertyChanged += someView.OnPropertyChanged; var stopwatch = Stopwatch.StartNew(); for (var i = 0; i < times; i++) { someViewModel.NotifyPropertyChanged(); } stopwatch.Stop(); return stopwatch.Elapsed; }
internal TimeSpan NotifyMethodsWithReflection(int times) { var view = new SomeView(); var viewModel = new SomeViewModel(); viewModel.SubscribeWeakly(x => x.Flag, view.OnFlagChanged); var stopwatch = Stopwatch.StartNew(); for (var i = 0; i < times; i++) { viewModel.NotifyPropertyChanged(); } stopwatch.Stop(); return(stopwatch.Elapsed); }
internal TimeSpan NotifyAsUsual(int times) { var someView = new SomeView(); var someViewModel = new SomeViewModel(); someViewModel.PropertyChanged += someView.OnPropertyChanged; var stopwatch = Stopwatch.StartNew(); for (var i = 0; i < times; i++) { someViewModel.NotifyPropertyChanged(); } stopwatch.Stop(); return(stopwatch.Elapsed); }
public void Delegate_event_handler_should_be_called_when_subscriber_not_GC_collected() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs, SomeView>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view, (v, sender, args) => v.OnPropertyChanged()); // Act model.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
public void Delegate_event_method_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view.OnPropertyChanged); // Act GC.Collect(); model.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
public void Delegate_event_method_handler_should_not_be_called_when_subscription_disposed() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); var subscription = SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view.OnPropertyChanged); // Act subscription.Dispose(); model.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeFalse(); }
public void PropertyChanged_event_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards() { // Arrange var view = new SomeView(); var viewModel = new SomeViewModel(); viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged()); // Act var observer = view.Observer; // ReSharper disable RedundantAssignment view = null; // ReSharper restore RedundantAssignment GC.Collect(); viewModel.NotifyPropertyChanged(); // Assert observer.IsPropertyChangedHandled.Should().BeFalse(); }
public void Delegate_event_method_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); SubscribeWeakly.OnCustomDelegate <PropertyChangedEventHandler, PropertyChangedEventArgs>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view.OnPropertyChanged); // Act var observer = view.Observer; // ReSharper disable RedundantAssignment view = null; // ReSharper restore RedundantAssignment GC.Collect(); model.NotifyPropertyChanged(); // Assert observer.IsPropertyChangedHandled.Should().BeFalse(); }
public void Delegate_event_handler_should_be_called_when_subscriber_not_GC_collected() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs, SomeView>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view, (v, sender, args) => v.OnPropertyChanged()); // Act model.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
public void Delegate_event_method_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view.OnPropertyChanged); // Act GC.Collect(); model.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
public void Delegate_event_method_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view.OnPropertyChanged); // Act var observer = view.Observer; // ReSharper disable RedundantAssignment view = null; // ReSharper restore RedundantAssignment GC.Collect(); model.NotifyPropertyChanged(); // Assert observer.IsPropertyChangedHandled.Should().BeFalse(); }
public void Delegate_event_method_handler_should_not_be_called_when_subscription_disposed() { // Arrange var view = new SomeView(); var model = new SomeViewModel(); var subscription = SubscribeWeakly.OnCustomDelegate<PropertyChangedEventHandler, PropertyChangedEventArgs>( a => a.Invoke, h => model.PropertyChanged += h, h => model.PropertyChanged -= h, view.OnPropertyChanged); // Act subscription.Dispose(); model.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeFalse(); }
public void PropertyChanged_event_handler_should_be_called_when_GC_collected_and_subscriber_is_used_aftrewards() { // Arrange var view = new SomeView(); var viewModel = new SomeViewModel(); viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged()); // Act GC.Collect(); viewModel.NotifyPropertyChanged(); // Assert view.Observer.IsPropertyChangedHandled.Should().BeTrue(); }
public void With_no_subscriptions_should_unsibscribe_without_exception() { // Arrange var viewModel = new SomeViewModel(); PropertyChangedEventHandler propertyChanged = (sender, args) => { }; // Act viewModel.PropertyChanged -= propertyChanged; viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert // No exceptions expected }
public void When_Lambda_handler_is_unsubscribed_and_event_raised_then_the_handler_should_not_be_called() { // Arrange var viewModel = new SomeViewModel(); var handled = false; PropertyChangedEventHandler onPropertyChanged = (sender, args) => handled = true; viewModel.PropertyChanged += onPropertyChanged; // Act viewModel.PropertyChanged -= onPropertyChanged; viewModel.NotifyPropertyChanged(new PropertyChangedEventArgs("some")); // Assert handled.Should().BeFalse(); }
public void PropertyChanged_event_handler_should_not_be_called_when_GC_collected_and_subscriber_is_not_used_aftrewards() { // Arrange var view = new SomeView(); var viewModel = new SomeViewModel(); viewModel.SubscribeWeakly(view, (x, _, e) => x.OnPropertyChanged()); // Act var observer = view.Observer; // ReSharper disable RedundantAssignment view = null; // ReSharper restore RedundantAssignment GC.Collect(); viewModel.NotifyPropertyChanged(); // Assert observer.IsPropertyChangedHandled.Should().BeFalse(); }