code: def test_measurement_categories():
      workspace, module = make_workspace(
          numpy.zeros((20, 10), int),
          cellprofiler.modules.maskobjects.MC_OBJECTS,
          numpy.zeros((20, 10), int),
      )
      categories = module.get_categories(workspace.pipeline, "Foo")
      assert len(categories) == 0
  
      categories = module.get_categories(workspace.pipeline, "Image")
      assert len(categories) == 1
      assert categories[0] == C_COUNT
  
      categories = module.get_categories(
          workspace.pipeline, OUTPUT_OBJECTS
      )
      assert len(categories) == 3
      for category, expected in zip(
          sorted(categories),
          (
              C_LOCATION,
              C_NUMBER,
              C_PARENT,
          ),
      ):
          assert category == expected
  
      categories = module.get_categories(
          workspace.pipeline, INPUT_OBJECTS
      )
      assert len(categories) == 1
      assert categories[0] == C_CHILDREN
  
imports: import numpy
  import six.moves
  import cellprofiler_core.image
  import cellprofiler_core.measurement
  import cellprofiler_core.measurement
  import cellprofiler_core.modules
  from cellprofiler_core.constants.measurement import FF_COUNT, COLTYPE_INTEGER, M_LOCATION_CENTER_X, COLTYPE_FLOAT, M_LOCATION_CENTER_Y, FF_PARENT, M_NUMBER_OBJECT_NUMBER, FF_CHILDREN_COUNT, C_COUNT, C_LOCATION, C_NUMBER, C_PARENT, C_CHILDREN, FTR_CENTER_X, FTR_CENTER_Y, FTR_OBJECT_NUMBER
  import cellprofiler.modules.maskobjects
  import cellprofiler_core.object
  import cellprofiler_core.pipeline
  import cellprofiler_core.workspace
  import tests.frontend.modules
label_desc: Use image node_id 6 for calling a global function with example usage: test_measurement_categories() without return types