code: def test_progress(self):
      # py27 requires this pattern for non-local modification
      notes = {}
  
      def preeval_cb(image, progress):
          notes["seen_preeval"] = True
  
      def eval_cb(image, progress):
          notes["seen_eval"] = True
  
      def posteval_cb(image, progress):
          notes["seen_posteval"] = True
  
      image = pyvips.Image.black(1, 100000)
      image.set_progress(True)
      image.signal_connect("preeval", preeval_cb)
      image.signal_connect("eval", eval_cb)
      image.signal_connect("posteval", posteval_cb)
      image.avg()
  
      assert notes["seen_preeval"]
      assert notes["seen_eval"]
      assert notes["seen_posteval"]
  
imports: import pytest
  import pyvips
label_desc: Use image node_id 1 for calling the TestProgress obj's underlying member method code with example usage: obj.test_progress() without return types