code: def exp_test_data(self):
      p_xy = gs.array(
          [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0]]
      )
      p_yz = gs.array(
          [[0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]
      )
      p_xz = gs.array(
          [[1.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 1.0]]
      )
  
      r_y = gs.array(
          [[0.0, 0.0, 1.0], [0.0, 0.0, 0.0], [-1.0, 0.0, 0.0]]
      )
      r_z = gs.array(
          [[0.0, -1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
      )
      pi_2 = gs.pi / 2
  
      data = [
          dict(
              tangent_vec=Matrices.bracket(
                  pi_2 * r_y, gs.array([p_xy, p_yz])
              ),
              base_point=gs.array([p_xy, p_yz]),
              expected=gs.array([p_yz, p_xy]),
          ),
          dict(
              tangent_vec=Matrices.bracket(
                  pi_2 * gs.array([r_y, r_z]), gs.array([p_xy, p_yz])
              ),
              base_point=gs.array([p_xy, p_yz]),
              expected=gs.array([p_yz, p_xz]),
          ),
      ]
      return self.generate_tests(data)
  
file_path: geomstats/tests/tests_geomstats/test_geometry/data/grassmannian.py
imports: import geomstats.backend
  from geomstats.geometry.matrices import Matrices
  from geomstats.test.data import TestData
  from .matrices import MatricesMetricTestData
label_desc: Use image node_id 1 for calling the GrassmannianCanonicalMetric32TestData obj's underlying member method code with example usage: obj.exp_test_data() and returns: self