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