Exemplo n.º 1
0
 def test_signal_argument_passing(self):
     sig = Signal()
     count = 3
     def go(val):
         nonlocal count
         count += val
     slot = sig.add(go)
     sig.send(7)
     self.assertEqual(count, 10)
Exemplo n.º 2
0
 def test_signal_sending_messages(self):
     sig = Signal()
     count = 0
     def go():
         nonlocal count
         count += 1
     slot = sig.add(go)
     [sig.send() for i in range(3)]
     self.assertEqual(count, 3)
Exemplo n.º 3
0
    def test_cannot_remove_slot_while_signalling(self):

        class BadRemove:
            def __init__(self, signal):
                self.slot = signal.add(self.do_remove)
            def do_remove(self):
                self.slot.detach()

        sig = Signal()
        bad_remover = BadRemove(sig)
        with self.assertRaises(SignalRunningException):
            sig.send()
Exemplo n.º 4
0
 def test_signal_args_and_kwargs(self):
     sig = Signal()
     count = 11
     data = 'foo'
     def go(val, say='default_string'):
         nonlocal count, data
         count += val
         data = say
     slot = sig.add(go)
     sig.send(3, say='bar')
     self.assertEqual(count, 14)
     self.assertEqual(data, 'bar')
Exemplo n.º 5
0
 def test_remove_function_instance_directly(self):
     sig = Signal()
     count = 4
     def go(val):
         nonlocal count
         count += val
     slot = sig.add(go)
     sig.send(3) # count is now 7
     sig.remove(go)
     sig.send(6) # If count is 13, then removal failed
     self.assertEqual(count, 7)
Exemplo n.º 6
0
 def test_slot_removal(self):
     sig = Signal()
     count = 3
     def go(val):
         nonlocal count
         count += val
     slot = sig.add(go)
     sig.send(5) # Count is now 8
     sig.remove_slot(slot)
     sig.send(7) # If count is 15, then removal failed
     self.assertEqual(count, 8)
Exemplo n.º 7
0
 def test_slot_detach(self):
     sig = Signal()
     count = 7
     def go(val):
         nonlocal count
         count += val
     slot = sig.add(go)
     sig.send(3) # Count is now 10
     slot.detach()
     sig.send(7) # If count is 17, then removal failed
     self.assertEqual(count, 10)
Exemplo n.º 8
0
 def test_add_func_to_signal_via_slot_contents(self):
     sig = Signal()
     def go():
         x = 1 + 2 # Do nothing
     slot = sig.add(go)
     self.assertEqual(slot.callback, go)