code: def test_plot_surf_avg_method_errors(rng):
      mesh = generate_surf()
      with pytest.raises(
          ValueError,
          match=(
              "Array computed with the custom "
              "function from avg_method does "
              "not have the correct shape"
          ),
      ):
  
          def custom_avg_function(vertices):
              return [vertices[0] * vertices[1], vertices[2]]
  
          plot_surf(
              mesh,
              surf_map=rng.standard_normal(size=mesh[0].shape[0]),
              avg_method=custom_avg_function,
              engine="matplotlib",
          )
  
      with pytest.raises(
          ValueError,
          match=re.escape(
              "avg_method should be either "
              "['mean', 'median', 'max', 'min'] "
              "or a custom function"
          ),
      ):
          custom_avg_function = dict()
  
          plot_surf(
              mesh,
              surf_map=rng.standard_normal(size=mesh[0].shape[0]),
              avg_method=custom_avg_function,
              engine="matplotlib",
          )
  
          plot_surf(
              mesh,
              surf_map=rng.standard_normal(size=mesh[0].shape[0]),
              avg_method="foo",
              engine="matplotlib",
          )
  
      with pytest.raises(
          ValueError,
          match=re.escape(
              "Array computed with the custom function "
              "from avg_method should be an array of "
              "numbers (int or float)"
          ),
      ):
  
          def custom_avg_function(vertices):
              return "string"
  
          plot_surf(
              mesh,
              surf_map=rng.standard_normal(size=mesh[0].shape[0]),
              avg_method=custom_avg_function,
              engine="matplotlib",
          )
  
imports: import re
  import tempfile
  import unittest.mock
  import matplotlib.pyplot
  import numpy
  import pytest
  from matplotlib.figure import Figure
  from numpy.testing import assert_array_equal
  from nilearn._utils.helpers import is_kaleido_installed, is_plotly_installed
  from nilearn.conftest import _rng
  from nilearn.datasets import fetch_surf_fsaverage
  from nilearn.plotting.displays import PlotlySurfaceFigure
  from nilearn.plotting.surf_plotting import VALID_HEMISPHERES, VALID_VIEWS, _compute_facecolors_matplotlib, _get_ticks_matplotlib, _get_view_plot_surf_matplotlib, _get_view_plot_surf_plotly, plot_img_on_surf, plot_surf, plot_surf_contours, plot_surf_roi, plot_surf_stat_map
  from nilearn.surface import load_surf_data, load_surf_mesh
  from nilearn.surface.tests._testing import generate_surf
label_desc: Use image node_id 21 for calling a global function with example usage: test_plot_surf_avg_method_errors(rng) and returns: list, str