code: def test_geodesic_output_shape(
      self, metric, start_point, end_point, t
  ):
      geodesic = metric.geodesic(start_point, end_point)
  
      is_multiple = gs.ndim(start_point) > 2 or gs.ndim(end_point) > 2
      n_geo = max(
          start_point.shape[0] if gs.ndim(start_point) > 2 else 1,
          end_point.shape[0] if gs.ndim(end_point) > 2 else 1,
      )
      n_t = len(t) if type(t) is list else 1
      d_array = 2
  
      results = geodesic(t)
      self.assertTrue(results.ndim == d_array + 1 + int(is_multiple))
      self.assertTrue(results.shape[-d_array - 1] == n_t)
      if is_multiple:
          self.assertTrue(results.shape[-d_array - 2] == n_geo)
  
imports: import networkx
  import pytest
  import geomstats.backend
  from geomstats.test.parametrizers import DataBasedParametrizer
  from geomstats.test.test_case import TestCase
  from geomstats.test_cases.geometry.stratified.point_set import PointSetMetricTestCase, PointSetTestCase, PointTestCase
  from .data.graph_space import AlignerTestData, DecoratorsTestData, GraphSpaceMetricTestData, GraphSpaceTestData, GraphTestData, PointToGeodesicAlignerTestData
label_desc: Use image node_id 3 for calling the TestGraphSpaceMetric obj's underlying member method code with example usage: obj.test_geodesic_output_shape(metric, start_point, end_point, t) without return types