code: def test_geodesic_boundary_points(self, n_points, atol):
      initial_point = self.data_generator.random_point(n_points)
      end_point = self.data_generator.random_point(n_points)
  
      time = gs.array([0.0, 1.0])
  
      geod_func = self.space.metric.geodesic(
          initial_point, end_point=end_point
      )
  
      points = gs.reshape(geod_func(time), (-1, *self.space.shape))
      expected_points = gs.reshape(
          gs.stack(
              [initial_point, end_point],
              axis=-(self.space.point_ndim + 1),
          ),
          (-1, *self.space.shape),
      )
      self._cmp_points(points, expected_points, atol=atol)
  
imports: import pytest
  import geomstats.backend
  from geomstats.geometry.matrices import Matrices
  from geomstats.test.random import KendalShapeRandomDataGenerator, get_random_times
  from geomstats.test.vectorization import generate_vectorization_data
  from geomstats.test_cases.geometry.base import LevelSetTestCase
  from geomstats.test_cases.geometry.fiber_bundle import FiberBundleTestCase
  from geomstats.test_cases.geometry.quotient_metric import QuotientMetricTestCase
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 6 for calling the KendallShapeMetricTestCase obj's underlying member method code with example usage: obj.test_geodesic_boundary_points(n_points, atol) without return types