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);
            }
        }