def test_subscribe(): """ Testing .subscribe() and .unsubscibe() of Publisher. """ s1 = Value() s2 = Value() publisher = Publisher() assert len(publisher.subscriptions) == 0 # subscribe first subscriber d1 = publisher.subscribe(s1) assert any(s1 is s for s in publisher.subscriptions) assert not any(s2 is s for s in publisher.subscriptions) assert len(publisher.subscriptions) == 1 # re - subscribe should fail with pytest.raises(SubscriptionError): publisher.subscribe(s1) # subscribe second subscriber d2 = publisher.subscribe(s2) assert len(publisher.subscriptions) == 2 assert any(s1 is s for s in publisher.subscriptions) assert any(s2 is s for s in publisher.subscriptions) # unsubscribe both subscribers d2.dispose() assert len(publisher.subscriptions) == 1 publisher.unsubscribe(s1) assert len(publisher.subscriptions) == 0 # re - unsubscribing should fail with pytest.raises(SubscriptionError): d1.dispose() with pytest.raises(SubscriptionError): publisher.unsubscribe(s1) with pytest.raises(SubscriptionError): d2.dispose()
def unsubscribe(self, subscriber: Subscriber) -> None: Publisher.unsubscribe(self, subscriber) if not self._subscriptions and self._call_later_handler: self._call_later_handler.cancel() self._call_later_handler = None
def unsubscribe(self, subscriber: Subscriber) -> None: Publisher.unsubscribe(self, subscriber) if not self._subscriptions: self._publisher.unsubscribe(self._emit_sink)
def unsubscribe(self, subscriber: Subscriber) -> None: Publisher.unsubscribe(self, subscriber) if not self._subscriptions: for publisher in self._orginators: publisher.unsubscribe(self) Publisher.reset_state(self)
def unsubscribe(self, subscriber: Subscriber) -> None: Publisher.unsubscribe(self, subscriber) if not self._subscriptions and self._originator is not None: self._originator.unsubscribe(self) Publisher.reset_state(self)
def unsubscribe(self, subscriber: Subscriber) -> None: Publisher.unsubscribe(self, subscriber) if not self._subscriptions and self._subject is not None: self._subject.unsubscribe(self)