code: def test_vectorization(self, test_func, n_reps, atol):
      # TODO: move this to decorator?
      # TODO: accept kwargs?
      arg_names = list(inspect.signature(test_func).parameters.keys())
      arg_names = list(filter(lambda x: x in KNOWN_ARGS, arg_names))
      data = _generate_random_data(self.data_generator, arg_names)
  
      geometry = (
          self.space.metric
          if hasattr(self, "is_metric") and self.is_metric
          else self.space
      )
      data["expected"] = getattr(geometry, test_func.__name__[5:])(
          **data
      )
      data["atol"] = atol
  
      vec_data = generate_vectorization_data(
          data=[data],
          arg_names=arg_names,
          expected_name="expected",
          n_reps=n_reps,
          vectorization_type=_get_vectorization_type(self, arg_names),
      )
      self._test_vectorization(
          vec_data, test_fnc_name=test_func.__name__
      )
  
file_path: geomstats/geomstats/test/vectorization.py
imports: import copy
  import inspect
  import itertools
  from geomstats.vectorization import repeat_point
label_desc: Use image node_id 7 for calling a global function with example usage: test_vectorization(test_func, n_reps, atol) without return types