code: def test_multi_block_color_cycler():
      """Test passing a custom color cycler"""
      plotter = pv.Plotter()
      data = {
          "sphere1": pv.Sphere(center=(1, 0, 0)),
          "sphere2": pv.Sphere(center=(2, 0, 0)),
          "sphere3": pv.Sphere(center=(3, 0, 0)),
          "sphere4": pv.Sphere(center=(4, 0, 0)),
      }
      spheres = pv.MultiBlock(data)
      actor, mapper = plotter.add_composite(spheres)
  
      # pass custom cycler
      mapper.set_unique_colors(["red", "green", "blue"])
  
      assert mapper.block_attr[0].color.name == "red"
      assert mapper.block_attr[1].color.name == "green"
      assert mapper.block_attr[2].color.name == "blue"
      assert mapper.block_attr[3].color.name == "red"
  
      # test wrong args
      with pytest.raises(ValueError):
          mapper.set_unique_colors("foo")
  
      with pytest.raises(TypeError):
          mapper.set_unique_colors(5)
  
imports: import os
  import numpy
  import pytest
  import vtk
  import pyvista
  from pyvista.core.errors import MissingDataError, PyVistaDeprecationWarning
  from pyvista.plotting import _plotting
  from pyvista.plotting.errors import RenderWindowUnavailable
  from pyvista.plotting.utilities.gl_checks import uses_egl
label_desc: Use image node_id 34 for calling a global function with example usage: test_multi_block_color_cycler() without return types