Beispiel #1
0
def test_list_events():
    event = EventSystem(marker)

    variable = ListVariable(RawStrVariable, event=event, value_factory=list)

    changes = []

    def changed(owner, variable, old_value, new_value, fromdb):
        changes.append((variable, old_value, new_value, fromdb))

    event.emit("start-tracking-changes", event)
    event.hook("changed", changed)

    variable.checkpoint()

    event.emit("flush")
    assert changes == []

    lst = variable.get()
    assert lst == []
    assert changes == []

    lst.append("a")
    assert changes == []

    event.emit("flush")
    assert changes == [(variable, None, ["a"], False)]

    del changes[:]
    event.emit("object-deleted")
    assert changes == [(variable, None, ["a"], False)]
Beispiel #2
0
    def test_event_changed(self):
        event = EventSystem(marker)

        changed_values = []
        def changed(owner, variable, old_value, new_value, fromdb):
            changed_values.append((owner, variable,
                                   old_value, new_value, fromdb))

        event.hook("changed", changed)

        variable = CustomVariable(event=event)
        variable.set("value1")
        variable.set("value2")
        variable.set("value3", from_db=True)
        variable.set(None, from_db=True)
        variable.set("value4")
        variable.delete()
        variable.delete()

        self.assertEquals(changed_values[0],
          (marker, variable, Undef, "value1", False))
        self.assertEquals(changed_values[1],
          (marker, variable, ("g", ("s", "value1")), "value2", False))
        self.assertEquals(changed_values[2],
          (marker, variable, ("g", ("s", "value2")), ("g", ("s", "value3")),
           True))
        self.assertEquals(changed_values[3],
          (marker, variable, ("g", ("s", "value3")), None, True))
        self.assertEquals(changed_values[4],
          (marker, variable, None, "value4", False))
        self.assertEquals(changed_values[5],
          (marker, variable, ("g", ("s", "value4")), Undef, False))
        self.assertEquals(len(changed_values), 6)
Beispiel #3
0
    def test_pickle_events(self):
        event = EventSystem(marker)

        variable = self.variable_type(event=event, value_factory=list)

        changes = []
        def changed(owner, variable, old_value, new_value, fromdb):
            changes.append((variable, old_value, new_value, fromdb))

        event.emit("start-tracking-changes", event)
        event.hook("changed", changed)

        variable.checkpoint()

        event.emit("flush")

        self.assertEquals(changes, [])

        lst = variable.get()

        self.assertEquals(lst, [])
        self.assertEquals(changes, [])

        lst.append("a")

        self.assertEquals(changes, [])

        event.emit("flush")

        self.assertEquals(changes, [(variable, None, ["a"], False)])

        del changes[:]

        event.emit("object-deleted")
        self.assertEquals(changes, [(variable, None, ["a"], False)])
Beispiel #4
0
    def test_pickle_events(self):
        event = EventSystem(marker)

        variable = self.variable_type(event=event, value_factory=list)

        changes = []
        def changed(owner, variable, old_value, new_value, fromdb):
            changes.append((variable, old_value, new_value, fromdb))

        event.emit("start-tracking-changes", event)
        event.hook("changed", changed)

        variable.checkpoint()

        event.emit("flush")

        self.assertEquals(changes, [])

        lst = variable.get()

        self.assertEquals(lst, [])
        self.assertEquals(changes, [])

        lst.append("a")

        self.assertEquals(changes, [])

        event.emit("flush")

        self.assertEquals(changes, [(variable, None, ["a"], False)])

        del changes[:]

        event.emit("object-deleted")
        self.assertEquals(changes, [(variable, None, ["a"], False)])
Beispiel #5
0
    def test_event_changed(self):
        event = EventSystem(marker)

        changed_values = []
        def changed(owner, variable, old_value, new_value, fromdb):
            changed_values.append((owner, variable,
                                   old_value, new_value, fromdb))

        event.hook("changed", changed)

        variable = CustomVariable(event=event)
        variable.set("value1")
        variable.set("value2")
        variable.set("value3", from_db=True)
        variable.set(None, from_db=True)
        variable.set("value4")
        variable.delete()
        variable.delete()

        self.assertEquals(changed_values[0],
          (marker, variable, Undef, "value1", False))
        self.assertEquals(changed_values[1],
          (marker, variable, ("g", ("s", "value1")), "value2", False))
        self.assertEquals(changed_values[2],
          (marker, variable, ("g", ("s", "value2")), ("g", ("s", "value3")),
           True))
        self.assertEquals(changed_values[3],
          (marker, variable, ("g", ("s", "value3")), None, True))
        self.assertEquals(changed_values[4],
          (marker, variable, None, "value4", False))
        self.assertEquals(changed_values[5],
          (marker, variable, ("g", ("s", "value4")), Undef, False))
        self.assertEquals(len(changed_values), 6)
Beispiel #6
0
    def test_execute_sends_event(self):
        event = EventSystem(marker)
        calls = []
        def register_transaction(owner):
            calls.append(owner)
        event.hook("register-transaction", register_transaction)

        connection = self.database.connect(event)
        connection.execute("SELECT 1")
        self.assertEqual(len(calls), 1)
        self.assertEqual(calls[0], marker)
Beispiel #7
0
    def test_execute_sends_event(self):
        event = EventSystem(marker)
        calls = []
        def register_transaction(owner):
            calls.append(owner)
        event.hook("register-transaction", register_transaction)

        connection = self.database.connect(event)
        connection.execute("SELECT 1")
        assert len(calls) == 1
        assert calls[0] == marker
Beispiel #8
0
    def test_lazy_value_setting_on_resolving(self):
        event = EventSystem(marker)

        def resolve(owner, variable, value):
            variable.set(marker)

        event.hook("resolve-lazy-value", resolve)

        lazy_value = LazyValue()
        variable = CustomVariable(lazy_value, event=event)

        self.assertEquals(variable.get(), ("g", ("s", marker)))
Beispiel #9
0
    def test_lazy_value_setting_on_resolving(self):
        event = EventSystem(marker)

        def resolve(owner, variable, value):
            variable.set(marker)

        event.hook("resolve-lazy-value", resolve)

        lazy_value = LazyValue()
        variable = CustomVariable(lazy_value, event=event)

        self.assertEquals(variable.get(), ("g", ("s", marker)))
Beispiel #10
0
    def test_lazy_value_reset_after_changed(self):
        event = EventSystem(marker)

        resolve_called = []
        def resolve(owner, variable, value):
            resolve_called.append(True)

        event.hook("resolve-lazy-value", resolve)

        variable = CustomVariable(event=event)

        variable.set(LazyValue())
        variable.set(1)
        self.assertEquals(variable.get(), ("g", ("s", 1)))
        self.assertEquals(resolve_called, [])
Beispiel #11
0
    def test_lazy_value_reset_after_changed(self):
        event = EventSystem(marker)

        resolve_called = []
        def resolve(owner, variable, value):
            resolve_called.append(True)

        event.hook("resolve-lazy-value", resolve)

        variable = CustomVariable(event=event)

        variable.set(LazyValue())
        variable.set(1)
        self.assertEquals(variable.get(), ("g", ("s", 1)))
        self.assertEquals(resolve_called, [])
Beispiel #12
0
    def test_lazy_value_resolving(self):
        event = EventSystem(marker)

        resolve_values = []

        def resolve(owner, variable, value):
            resolve_values.append((owner, variable, value))

        lazy_value = LazyValue()
        variable = CustomVariable(lazy_value, event=event)

        event.hook("resolve-lazy-value", resolve)

        variable.get()

        self.assertEquals(resolve_values, [(marker, variable, lazy_value)])
Beispiel #13
0
def test_lazy_value_changed_event():
    event = EventSystem(marker)

    changed_values = []

    def changed(owner, variable, old_value, new_value, fromdb):
        changed_values.append((owner, variable, old_value, new_value, fromdb))

    event.hook("changed", changed)

    variable = CustomVariable(event=event)

    lazy_value = LazyValue()

    variable.set(lazy_value)

    assert changed_values == [(marker, variable, Undef, lazy_value, False)]
Beispiel #14
0
    def test_lazy_value_changed_event(self):
        event = EventSystem(marker)

        changed_values = []
        def changed(owner, variable, old_value, new_value, fromdb):
            changed_values.append((owner, variable,
                                   old_value, new_value, fromdb))

        event.hook("changed", changed)

        variable = CustomVariable(event=event)

        lazy_value = LazyValue()

        variable.set(lazy_value)

        self.assertEquals(changed_values,
                          [(marker, variable, Undef, lazy_value, False)])
Beispiel #15
0
    def test_lazy_value_resolving(self):
        event = EventSystem(marker)

        resolve_values = []
        def resolve(owner, variable, value):
            resolve_values.append((owner, variable, value))



        lazy_value = LazyValue()
        variable = CustomVariable(lazy_value, event=event)

        event.hook("resolve-lazy-value", resolve)

        variable.get()

        self.assertEquals(resolve_values,
                          [(marker, variable, lazy_value)])
Beispiel #16
0
def test_weak_reference():
    marker = Marker()

    called = []

    def callback(owner):
        called.append(owner)

    event = EventSystem(marker)

    event.hook("event", callback)
    event.emit("event")

    assert called == [marker]
    del called[:]

    del marker
    event.emit("event")
    assert called == []
Beispiel #17
0
class EventTest(TestHelper):

    def setUp(self):
        TestHelper.setUp(self)
        self.event = EventSystem(marker)

    def test_hook_unhook_emit(self):
        called1 = []
        called2 = []
        def callback1(owner, arg1, arg2):
            called1.append((owner, arg1, arg2))
        def callback2(owner, arg1, arg2, data1, data2):
            called2.append((owner, arg1, arg2, data1, data2))

        self.event.hook("one", callback1)
        self.event.hook("one", callback1)
        self.event.hook("one", callback2, 10, 20)
        self.event.hook("two", callback2, 10, 20)
        self.event.hook("two", callback2, 10, 20)
        self.event.hook("two", callback2, 30, 40)
        self.event.hook("three", callback1)

        self.event.emit("one", 1, 2)
        self.event.emit("two", 3, 4)
        self.event.unhook("two", callback2, 10, 20)
        self.event.emit("two", 3, 4)
        self.event.emit("three", 5, 6)

        self.assertEquals(sorted(called1), [
                          (marker, 1, 2),
                          (marker, 5, 6),
                         ])
        self.assertEquals(sorted(called2), [
                          (marker, 1, 2, 10, 20),
                          (marker, 3, 4, 10, 20),
                          (marker, 3, 4, 30, 40),
                          (marker, 3, 4, 30, 40),
                         ])

    def test_unhook_by_returning_false(self):
        called = []
        def callback(owner):
            called.append(owner)
            return len(called) < 2

        self.event.hook("event", callback)

        self.event.emit("event")
        self.event.emit("event")
        self.event.emit("event")
        self.event.emit("event")

        self.assertEquals(called, [marker, marker])

    def test_weak_reference(self):
        marker = Marker()

        called = []
        def callback(owner):
            called.append(owner)

        self.event = EventSystem(marker)

        self.event.hook("event", callback)
        self.event.emit("event")

        self.assertEquals(called, [marker])
        del called[:]

        del marker
        self.event.emit("event")
        self.assertEquals(called, [])
Beispiel #18
0
class EventTest(TestHelper):
    def setUp(self):
        TestHelper.setUp(self)
        self.event = EventSystem(marker)

    def test_hook_unhook_emit(self):
        called1 = []
        called2 = []

        def callback1(owner, arg1, arg2):
            called1.append((owner, arg1, arg2))

        def callback2(owner, arg1, arg2, data1, data2):
            called2.append((owner, arg1, arg2, data1, data2))

        self.event.hook("one", callback1)
        self.event.hook("one", callback1)
        self.event.hook("one", callback2, 10, 20)
        self.event.hook("two", callback2, 10, 20)
        self.event.hook("two", callback2, 10, 20)
        self.event.hook("two", callback2, 30, 40)
        self.event.hook("three", callback1)

        self.event.emit("one", 1, 2)
        self.event.emit("two", 3, 4)
        self.event.unhook("two", callback2, 10, 20)
        self.event.emit("two", 3, 4)
        self.event.emit("three", 5, 6)

        self.assertEquals(sorted(called1), [
            (marker, 1, 2),
            (marker, 5, 6),
        ])
        self.assertEquals(sorted(called2), [
            (marker, 1, 2, 10, 20),
            (marker, 3, 4, 10, 20),
            (marker, 3, 4, 30, 40),
            (marker, 3, 4, 30, 40),
        ])

    def test_unhook_by_returning_false(self):
        called = []

        def callback(owner):
            called.append(owner)
            return len(called) < 2

        self.event.hook("event", callback)

        self.event.emit("event")
        self.event.emit("event")
        self.event.emit("event")
        self.event.emit("event")

        self.assertEquals(called, [marker, marker])

    def test_weak_reference(self):
        marker = Marker()

        called = []

        def callback(owner):
            called.append(owner)

        self.event = EventSystem(marker)

        self.event.hook("event", callback)
        self.event.emit("event")

        self.assertEquals(called, [marker])
        del called[:]

        del marker
        self.event.emit("event")
        self.assertEquals(called, [])