Пример #1
0
    def test_braking_big_diamond(self):
        """
        Test diamond shaped dependencies a -> b -> c -> d, a -> b' -> c' -> d
        """
        A = self.A
        a = A()
        watcher = EventWatcher(a, self.dispatcher, self._handler)
        watcher.watch("one.two.one.two")
        # watcher.watch('one.one.one.one')
        watcher.subscribe_all()

        a.one = A()
        a.one.two = A()
        a.one.two = A()
        a.one.two[0].one = A()
        a.one.two[1].one = A()
        a.one.two[0].one.two = A()
        a.one.two[1].one.two = a.one.two[0].one.two[0]

        assert 7 == len(self.events)
        assert 6 == len(self.dispatcher._handlers)

        del a.one.two[0].one
        # a.unlink()
        watcher.unsubscribe_all()
        watcher.unsubscribe_all()
        assert 0 == len(self.dispatcher._handlers)
Пример #2
0
    def test_diamond(self):
        """
        Test diamond shaped dependencies a -> b -> c, a -> b' -> c
        """
        A = self.A
        a = A()
        watcher = EventWatcher(a, self.dispatcher, self._handler)
        watcher.watch("one.two.one.two")
        # watcher.watch('one.one.one.one')
        watcher.subscribe_all()

        a.one = A()
        a.one.two = A()
        a.one.two = A()
        a.one.two[0].one = A()
        a.one.two[1].one = a.one.two[0].one
        a.one.two[0].one.two = A()

        assert 6 == len(self.events)

        a.unlink()
        watcher.unsubscribe_all()
        watcher.unsubscribe_all()
Пример #3
0
    def test_cyclic(self):
        """
        Test cyclic dependency a -> b -> c -> a.
        """
        A = self.A
        a = A()
        watcher = EventWatcher(a, self.dispatcher, self._handler)
        watcher.watch("one.two.one.two")
        # watcher.watch('one.one.one.one')
        watcher.subscribe_all()

        a.one = A()
        a.one.two = A()
        a.one.two = A()
        a.one.two[0].one = a

        assert 4 == len(self.events)

        # a.one.two[0].one.two = A()
        # a.one.two[0].one.two = A()

        a.unlink()
        assert 1 == len(self.dispatcher._handlers)
Пример #4
0
 def watcher(self, default_handler=None):
     dispatcher = self.model.element_dispatcher if self.model else None
     return EventWatcher(self, dispatcher, default_handler)
Пример #5
0
 def watcher(self, element: Element, default_handler=None):
     element_dispatcher = self.element_dispatcher
     return EventWatcher(element, element_dispatcher, default_handler)