public void TestObserveEvent() { // 被観測者, 観測者を生成します var model = new ObservableModel(); var observer = new Observer <PropertyChangedEventArgs>(); // イベントを購読します var subscription = model .ObserveEvent <PropertyChangedEventArgs>(nameof(model.PropertyChanged)) .Subscribe(e => observer.OnObservedEvent(e)); observer.Subscriptions.Add(subscription); // イベントを送受信することで, 以上の動作を確認します model.Qty = 8; Assert.That(observer.LastEventArgs, Is.Not.Null); // イベント購読を解除します observer.Subscriptions.Dispose(); // イベントを受信できないことで, 以上の動作を確認します observer.LastEventArgs = null; model.Qty = 16; Assert.That(observer.LastEventArgs, Is.Null); }
public void TestAddTo() { var count = 10; var tuples = new List <Tuple <ObservableModel, Observer <PropertyChangedEventArgs> > >(); CompositeDisposable disposables = new CompositeDisposable(); for (var i = 0; i < count; i++) { // 被観測者, 観測者を生成します var model = new ObservableModel(); var observer = new Observer <PropertyChangedEventArgs>(); tuples.Add(new Tuple <ObservableModel, Observer <PropertyChangedEventArgs> >(model, observer)); // イベントを購読します model .ObserveEvent <PropertyChangedEventArgs>(nameof(model.PropertyChanged)) .Subscribe(observer.OnObservedEvent) .AddTo(disposables); // イベントを送受信することで, 以上の動作を確認します model.Qty = 8; Assert.That(observer.LastEventArgs, Is.Not.Null); } // イベント購読をまとめて解除します disposables.Dispose(); for (var i = 0; i < count; i++) { (var model, var observer) = tuples[i]; // イベントを受信できないことで, 以上の動作を確認します observer.LastEventArgs = null; model.Qty = 16; Assert.That(observer.LastEventArgs, Is.Null); } }