docstr: Chained emitters
docstr_tok: ["Chained","emitters"]
code: def test_chained_emitters(self):
      """Chained emitters"""
      em1 = EventEmitter(source=None, type="test_event1")
      em2 = EventEmitter(source=self, type="test_event2")
      em1.connect(em2)
      em1.connect(self.record_event)
      self.result = None
      ev = em1()
      self.assert_result(
          event=ev,
          event_class=Event,
          source=None,
          type="test_event1",
          sources=[None],
      )
  
      # sources look different from second emitter, but type is the same.
      em1.disconnect(self.record_event)
      em2.connect(self.record_event)
      self.result = None
      ev = em1()
      self.assert_result(
          event=ev,
          event_class=Event,
          source=self,
          type="test_event1",
          sources=[None, self],
      )
  
imports: import unittest
  import copy
  import functools
  from vispy.util.event import Event, EventEmitter
  from vispy.testing import run_tests_if_main, assert_raises, assert_equal
label_desc: Use image node_id 12 for calling the TestEmitters obj's underlying member method code with example usage: obj.test_chained_emitters() without return types