code: def test_get_measurement_columns():
      module = cellprofiler.modules.flagimage.FlagImage()
      module.add_flag()
      module.flags[0].category.value = "Foo"
      module.flags[0].feature_name.value = "Bar"
      module.flags[1].category.value = "Hello"
      module.flags[1].feature_name.value = "World"
      columns = module.get_measurement_columns(None)
      assert len(columns) == 2
      assert all(
          [
              column[0] == "Image"
              and column[1] in ("Foo_Bar", "Hello_World")
              and column[2] == COLTYPE_INTEGER
              for column in columns
          ]
      )
      assert columns[0][1] != columns[1][1]
      categories = module.get_categories(None, "foo")
      assert len(categories) == 0
      categories = module.get_categories(None, "Image")
      assert len(categories) == 2
      assert "Foo" in categories
      assert "Hello" in categories
      assert (
          len(module.get_measurements(None, "Image", "Whatever")) == 0
      )
      for category, feature in (("Foo", "Bar"), ("Hello", "World")):
          features = module.get_measurements(None, "Image", category)
          assert len(features) == 1
          assert features[0] == feature
  
imports: import contextlib
  import os
  import tempfile
  import numpy
  import pytest
  import six.moves
  from cellprofiler_core.constants.measurement import COLTYPE_INTEGER
  from cellprofiler_core.constants.workspace import DISPOSITION_CONTINUE, DISPOSITION_SKIP
  import tests.frontend.modules
  import cellprofiler_core.image
  import cellprofiler_core.measurement
  import cellprofiler.modules.flagimage
  import cellprofiler_core.object
  import cellprofiler_core.pipeline
  import cellprofiler_core.preferences
  import cellprofiler_core.setting
  import cellprofiler_core.workspace
  from .None import test_filterobjects
label_desc: Use image node_id 18 for calling a global function with example usage: test_get_measurement_columns() without return types