def test_send_on_dead_ref(self):
        """Test if sending to a gc'd callback works gracefully."""
        class C:
            def foo(self, o, e):
                pass

        c = C()
        c1 = C()
        messenger.connect(c1, 'foo', c.foo)
        messenger.send(c1, 'foo')

        # Test if things behave sanely if a message was sent and one
        # of the callbacks has been gc'd.
        m = messenger.Messenger()
        l1 = len(m._signals[hash(c1)]['foo'])
        #
        del c
        messenger.send(c1, 'foo')
        #
        l2 = len(m._signals[hash(c1)]['foo'])
        # Since 'c' is gc'd this callback should have been cleared
        # out.
        self.assertEqual(l2, l1 - 1)

        # Clean up.
        messenger.disconnect(c1)
Exemple #2
0
    def test_send_on_dead_ref(self):
        """Test if sending to a gc'd callback works gracefully."""
        class C:
            def foo(self, o, e):
                pass
        c = C()
        c1 = C()
        messenger.connect(c1, 'foo', c.foo)
        messenger.send(c1, 'foo')

        # Test if things behave sanely if a message was sent and one
        # of the callbacks has been gc'd.
        m = messenger.Messenger()
        l1 = len(m._signals[hash(c1)]['foo'])
        #
        del c
        messenger.send(c1, 'foo')
        #
        l2 = len(m._signals[hash(c1)]['foo'])
        # Since 'c' is gc'd this callback should have been cleared
        # out.
        self.assertEqual(l2, l1 - 1)

        # Clean up.
        messenger.disconnect(c1)
Exemple #3
0
 def _remove_listners(self):
     object = self.object
     kids = self.children_cache
     for key, val in kids.items():
         if isinstance(val, tvtk.Collection):
             vtk_obj = tvtk.to_vtk(val)
             messenger.disconnect(vtk_obj, 'ModifiedEvent',
                                  self._notify_children)
         else:
             object.on_trait_change(self._notify_children, key, remove=True)
 def _remove_listners(self):
     object = self.object
     kids = self.children_cache
     for key, val in kids.items():
         if isinstance(val, tvtk.Collection):
             vtk_obj = tvtk.to_vtk(val)
             messenger.disconnect(vtk_obj, 'ModifiedEvent',
                                  self._notify_children)
         else:
             object.on_trait_change(self._notify_children, key, remove=True)
 def test_disconnect(self):
     """Tests if disconnection works correctly."""
     global ret
     ret = None
     b = B()
     messenger.disconnect(b)
     b.send(1, test=1)
     self.assertEqual(b.a.event, None)
     self.assertEqual(b.a.args, None)
     self.assertEqual(b.a.kw, None)
     self.assertEqual(b.a.did_catch_all, 0)
     self.assertEqual(ret, None)
Exemple #6
0
 def test_disconnect(self):
     """Tests if disconnection works correctly."""
     global ret
     ret = None
     b = B()
     messenger.disconnect(b)
     b.send(1, test=1)
     self.assertEqual(b.a.event, None)
     self.assertEqual(b.a.args, None)
     self.assertEqual(b.a.kw, None)
     self.assertEqual(b.a.did_catch_all, 0)
     self.assertEqual(ret, None)
Exemple #7
0
 def _recorder_changed(self, r):
     """When the recorder is set we add an event handler so we can
     record the change to the camera position after the interaction.
     """
     iren = self._interactor
     if r is not None:
         self._script_id = r.get_script_id(self)
         id = iren.add_observer("EndInteractionEvent", messenger.send)
         self._camera_observer_id = id
         i_vtk = tvtk.to_vtk(iren)
         messenger.connect(i_vtk, "EndInteractionEvent", self._record_camera_position)
     else:
         self._script_id = ""
         iren.remove_observer(self._camera_observer_id)
         i_vtk = tvtk.to_vtk(iren)
         messenger.disconnect(i_vtk, "EndInteractionEvent", self._record_camera_position)
 def test_catchall(self):
     """Tests if catch all handlers are called."""
     b = B()
     b.send()
     self.assertEqual(b.a.event, 'method')
     self.assertEqual(b.a.args, ())
     self.assertEqual(b.a.kw, {})
     self.assertEqual(b.a.did_catch_all, 0)
     messenger.connect(b, 'AnyEvent', b.a.catch_all_cb)
     b.send(1, test=1)
     self.assertEqual(b.a.event, 'method')
     self.assertEqual(b.a.args, (1, ))
     self.assertEqual(b.a.kw, {'test': 1})
     self.assertEqual(b.a.did_catch_all, 1)
     b.a.did_catch_all = 0
     messenger.disconnect(b, 'AnyEvent')
     b.send(1, test=1)
     self.assertEqual(b.a.did_catch_all, 0)
Exemple #9
0
 def _recorder_changed(self, r):
     """When the recorder is set we add an event handler so we can
     record the change to the camera position after the interaction.
     """
     iren = self._interactor
     if r is not None:
         self._script_id = r.get_script_id(self)
         id = iren.add_observer('EndInteractionEvent', messenger.send)
         self._camera_observer_id = id
         i_vtk = tvtk.to_vtk(iren)
         messenger.connect(i_vtk, 'EndInteractionEvent',
                           self._record_camera_position)
     else:
         self._script_id = ''
         iren.remove_observer(self._camera_observer_id)
         i_vtk = tvtk.to_vtk(iren)
         messenger.disconnect(i_vtk, 'EndInteractionEvent',
                              self._record_camera_position)
Exemple #10
0
 def test_catchall(self):
     """Tests if catch all handlers are called."""
     b = B()
     b.send()
     self.assertEqual(b.a.event, 'method')
     self.assertEqual(b.a.args, ())
     self.assertEqual(b.a.kw, {})
     self.assertEqual(b.a.did_catch_all, 0)
     messenger.connect(b, 'AnyEvent', b.a.catch_all_cb)
     b.send(1, test=1)
     self.assertEqual(b.a.event, 'method')
     self.assertEqual(b.a.args, (1,))
     self.assertEqual(b.a.kw, {'test':1})
     self.assertEqual(b.a.did_catch_all, 1)
     b.a.did_catch_all = 0
     messenger.disconnect(b, 'AnyEvent')
     b.send(1, test=1)
     self.assertEqual(b.a.did_catch_all, 0)
 def __del__(self):
     messenger.disconnect(self)
Exemple #12
0
 def __del__(self):
     messenger.disconnect(self)