Example #1
0
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
Example #3
0
 def unsubscribe(self, subscriber: Subscriber) -> None:
     Publisher.unsubscribe(self, subscriber)
     if not self._subscriptions:
         self._publisher.unsubscribe(self._emit_sink)
Example #4
0
 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)
Example #5
0
    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)
Example #6
0
 def unsubscribe(self, subscriber: Subscriber) -> None:
     Publisher.unsubscribe(self, subscriber)
     if not self._subscriptions and self._subject is not None:
         self._subject.unsubscribe(self)