code: def test_progress_fields(self):
      def preeval_cb(image, progress):
          assert progress.run == 0
          assert progress.eta == 0
          assert progress.percent == 0
          assert progress.tpels == 10000
          assert progress.npels == 0
  
      def eval_cb(image, progress):
          pass
  
      def posteval_cb(image, progress):
          assert progress.percent == 100
          assert progress.tpels == 10000
          assert progress.npels == 10000
  
      image = pyvips.Image.black(10, 1000)
      image.set_progress(True)
      image.signal_connect("preeval", preeval_cb)
      image.signal_connect("eval", eval_cb)
      image.signal_connect("posteval", posteval_cb)
      image.avg()
  
imports: import pytest
  import pyvips
label_desc: Use image node_id 2 for calling the TestProgress obj's underlying member method code with example usage: obj.test_progress_fields() without return types