code: def test_plot_surf_error(engine, rng):
      if not is_plotly_installed() and engine == "plotly":
          pytest.skip(
              "Plotly is not installed; required for this test."
          )
      mesh = generate_surf()
  
      # Wrong inputs for view or hemi
      with pytest.raises(ValueError, match="Invalid view definition"):
          plot_surf(mesh, view="middle", engine=engine)
      with pytest.raises(
          ValueError, match="Invalid hemispheres definition"
      ):
          plot_surf(mesh, hemi="lft", engine=engine)
  
      # Wrong size of background image
      with pytest.raises(
          ValueError,
          match="bg_map does not have the same number of vertices",
      ):
          plot_surf(
              mesh,
              bg_map=rng.standard_normal(size=mesh[0].shape[0] - 1),
              engine=engine,
          )
  
      # Wrong size of surface data
      with pytest.raises(
          ValueError,
          match="surf_map does not have the same number of vertices",
      ):
          plot_surf(
              mesh,
              surf_map=rng.standard_normal(size=mesh[0].shape[0] + 1),
              engine=engine,
          )
  
      with pytest.raises(
          ValueError, match="'surf_map' can only have one dimension"
      ):
          plot_surf(
              mesh,
              surf_map=rng.standard_normal(size=(mesh[0].shape[0], 2)),
              engine=engine,
          )
  
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 20 for calling a global function with example usage: test_plot_surf_error(engine, rng) without return types