Esempio n. 1
0
    def test_weak_references(self):
        observable = Observable("Event observer")
        observable.addEvent("event")

        self.addAndRemoveListener(observable) #the listener dies when the method returns.

        observable.notify("event") # Should not raise assertion error
Esempio n. 2
0
    def test_weak_references(self):
        observable = Observable("Event observer")
        observable.addEvent("event")

        class WeakTest(object):
            def __init__(self):
                self.value = 0

            def listener(self):
                raise AssertionError("This should be caught!")

        o = WeakTest()

        observable.attach("event", o.listener)

        with self.assertRaises(AssertionError):
            observable.notify("event")

        del o

        observable.notify("event") # Should not raise assertion error
Esempio n. 3
0
    def test_events(self):
        observable = Observable("Event observer")
        observable.addEvent("event1")
        observable.addEvent("event2")

        def event1():
            raise ValueError("event 1 error")

        def event2():
            raise NotImplementedError("event 1 error")

        observable.attach("event1", event1)
        observable.attach("event2", event2)

        with self.assertRaises(ValueError):
            observable.notify("event1")

        with self.assertRaises(NotImplementedError):
            observable.notify("event2")

        with self.assertRaises(LookupError):
            observable.notify("event3")

        observable.detach("event2", event2)

        # no exception raised when notify list is empty
        observable.notify("event2")

        with self.assertRaises(LookupError):
            observable.detach("event3", event2)
Esempio n. 4
0
    def test_observable(self):
        observable = Observable("Test Observer")

        observable.addEvent("test_event")
        self.assertTrue("test_event" in observable)

        observable.attach("test_event", self.observeWithSelf)
        observable.attach("test_event", observeWithoutSelf)

        with self.assertRaises(AssertionError):
            observable.attach("test_event", "Fail!") #not a callable

        with self.assertRaises(LookupError):
            observable.attach("fail", observeWithoutSelf) # not a valid event

        observable.notify("test_event")

        observable.detach("test_event", observeWithoutSelf)

        with self.assertRaises(ValueError):
            observable.detach("test_event", observeWithoutSelf)


        observer_as_lambda = lambda : observeWithoutSelf()
        observable.attach("test_event", observer_as_lambda)
        observable.notify("test_event")
        observable.detach("test_event", observer_as_lambda)
Esempio n. 5
0
    def test_events(self):
        observable = Observable("Event observer")
        observable.addEvent("event1")
        observable.addEvent("event2")

        def event1():
            raise ValueError("event 1 error")

        def event2():
            raise NotImplementedError("event 1 error")

        observable.attach("event1", event1)
        observable.attach("event2", event2)

        with self.assertRaises(ValueError):
            observable.notify("event1")

        with self.assertRaises(NotImplementedError):
            observable.notify("event2")

        with self.assertRaises(LookupError):
            observable.notify("event3")

        observable.detach("event2", event2)

        # no exception raised when notify list is empty
        observable.notify("event2")

        with self.assertRaises(LookupError):
            observable.detach("event3", event2)
Esempio n. 6
0
    def test_observable(self):
        observable = Observable("Test Observer")

        observable.addEvent("test_event")
        self.assertTrue("test_event" in observable)

        observable.attach("test_event", self.observeWithSelf)
        observable.attach("test_event", observeWithoutSelf)

        with self.assertRaises(AssertionError):
            observable.attach("test_event", "Fail!") #not a callable

        with self.assertRaises(LookupError):
            observable.attach("fail", observeWithoutSelf) # not a valid event

        observable.notify("test_event")

        observable.detach("test_event", observeWithoutSelf)

        with self.assertRaises(ValueError):
            observable.detach("test_event", observeWithoutSelf)


        observer_as_lambda = lambda : observeWithoutSelf()
        observable.attach("test_event", observer_as_lambda)
        observable.notify("test_event")
        observable.detach("test_event", observer_as_lambda)
Esempio n. 7
0
 def __new__(cls, *args, **kwargs):
     # print("Construct: %s" % cls.__name__)
     obj = super(ModelMixin, cls).__new__(cls)
     obj.__observable = Observable(cls.__name__)
     obj.registerDefaultEvents()
     return obj