Example #1
0
        public void source_is_only_subscribed_to_once_for_multiple_connections()
        {
            EventOwner owner = new EventOwner();

            var source = owner.GetObservableEvent();

            var obs = source.Prune();

            obs.Connect();
            obs.Connect();

            Assert.AreEqual(1, owner.SubscriptionCount);
        }
Example #2
0
        public void source_is_not_subscribed_to_until_connect()
        {
            EventOwner owner = new EventOwner();

            var source = owner.GetObservableEvent();

            var obs = source.Prune();

            Assert.IsFalse(owner.HasSubscriptions);

            obs.Connect();

            Assert.IsTrue(owner.HasSubscriptions);
        }
Example #3
0
        public void source_is_unscribed_from_on_disconnect()
        {
            EventOwner owner = new EventOwner();

            var source = owner.GetObservableEvent();

            var obs        = source.Prune();
            var connection = obs.Connect();

            Assert.IsTrue(owner.HasSubscriptions);

            connection.Dispose();

            Assert.IsFalse(owner.HasSubscriptions);
        }
Example #4
0
        public void all_sources_are_unsubscribed_when_complete_is_received()
        {
            var sourceA = new EventOwner();
            var sourceC = new EventOwner();

            var obs = Observable.Amb(
                sourceA.GetObservableEvent(),
                Observable.Empty <IEvent <EventArgs> >(),
                sourceC.GetObservableEvent()
                );

            var stats = new StatsObserver <IEvent <EventArgs> >();

            obs.Subscribe(stats);

            Assert.IsFalse(sourceA.HasSubscriptions);
            Assert.IsFalse(sourceC.HasSubscriptions);
        }
Example #5
0
        public void all_sources_are_unsubscribed_when_error_is_received()
        {
            var sourceA = new EventOwner();
            var sourceB = new EventOwner();

            var obs = Observable.Amb(
                sourceA.GetObservableEvent(),
                sourceB.GetObservableEvent(),
                Observable.Throw <IEvent <EventArgs> >(new Exception())
                );

            var stats = new StatsObserver <IEvent <EventArgs> >();

            obs.Subscribe(stats);

            Assert.IsFalse(sourceA.HasSubscriptions);
            Assert.IsFalse(sourceB.HasSubscriptions);
            Assert.IsTrue(stats.ErrorCalled);
        }
Example #6
0
        public void other_sources_are_unsubscribed_when_value_is_received()
        {
            var sourceA = new EventOwner();
            var sourceB = new EventOwner();
            var sourceC = new EventOwner();

            var obs = Observable.Amb(
                sourceA.GetObservableEvent(),
                sourceB.GetObservableEvent(),
                sourceC.GetObservableEvent()
                );

            var stats = new StatsObserver <IEvent <EventArgs> >();

            obs.Subscribe(stats);

            sourceB.Fire();

            Assert.IsFalse(sourceA.HasSubscriptions);
            Assert.IsTrue(sourceB.HasSubscriptions);
            Assert.IsFalse(sourceC.HasSubscriptions);
        }
Example #7
0
        public void source_is_resubscribed_to_if_on_reconnect()
        {
            EventOwner owner = new EventOwner();

            var source = owner.GetObservableEvent();

            var obs         = source.Prune();
            var connectionA = obs.Connect();

            Assert.IsTrue(owner.HasSubscriptions);

            connectionA.Dispose();

            Assert.IsFalse(owner.HasSubscriptions);

            var connectionB = obs.Connect();

            Assert.IsTrue(owner.HasSubscriptions);

            connectionB.Dispose();

            Assert.IsFalse(owner.HasSubscriptions);
        }