code: def test_octagon_decomposition(function, m, n, decomposition):
      """Validate footprint decomposition for various shapes.
  
      comparison is made to the case without decomposition.
      """
      if m == 0 and n == 0:
          with pytest.raises(ValueError):
              footprints.octagon(m, n, decomposition=decomposition)
      else:
          footprint_ndarray = footprints.octagon(
              m, n, decomposition=None
          )
          footprint = footprints.octagon(
              m, n, decomposition=decomposition
          )
          img = _get_decomp_test_data(function)
          func = getattr(binary, function)
          expected = func(img, footprint=footprint_ndarray)
          out = func(img, footprint=footprint)
          assert_array_equal(expected, out)
  
imports: import numpy
  import pytest
  from numpy.testing import assert_array_equal, assert_equal
  from scipy import ndimage
  from skimage import data, color, morphology
  from skimage.util import img_as_bool
  from skimage.morphology import binary, footprints, gray
label_desc: Use image node_id 11 for calling a global function with example usage: test_octagon_decomposition(function, m, n, decomposition) without return types