code: def test_embed_dim(estimator, build_dataset):
      # Checks that the the dimension of the output space is as expected
      input_data, labels, _, X = build_dataset()
      model = clone(estimator)
      set_random_state(model)
      model.fit(*remove_y(estimator, input_data, labels))
      assert model.transform(X).shape == X.shape
  
      # assert that ValueError is thrown if input shape is 1D
      context = make_context(estimator)
      err_msg = (
          "2D array of formed points expected{}. Found 1D array "
          "instead:\ninput={}. Reshape your data and/or use a "
          "preprocessor.\n".format(context, X[0])
      )
      with pytest.raises(ValueError) as raised_error:
          model.pair_distance(model.transform(X[0, :]))
      assert str(raised_error.value) == err_msg
      # we test that the shape is also OK when doing dimensionality reduction
      if hasattr(model, "n_components"):
          model.set_params(n_components=2)
          model.fit(*remove_y(estimator, input_data, labels))
          assert model.transform(X).shape == (X.shape[0], 2)
          # assert that ValueError is thrown if input shape is 1D
          with pytest.raises(ValueError) as raised_error:
              model.transform(model.transform(X[0, :]))
          assert str(raised_error.value) == err_msg
  
imports: from itertools import product
  import pytest
  import numpy
  from numpy.linalg import LinAlgError
  from numpy.testing import assert_array_almost_equal, assert_allclose, assert_array_equal
  from scipy.spatial.distance import pdist, squareform, mahalanobis
  from scipy.stats import ortho_group
  from sklearn import clone
  from sklearn.cluster import DBSCAN
  from sklearn.datasets import make_spd_matrix, make_blobs
  from sklearn.utils import check_random_state, shuffle
  from sklearn.utils.multiclass import type_of_target
  from metric_learn.sklearn_shims import set_random_state
  from metric_learn._util import make_context, _initialize_metric_mahalanobis
  from metric_learn.sdml import _BaseSDML
  from metric_learn.base_metric import _QuadrupletsClassifierMixin, _TripletsClassifierMixin, _PairsClassifierMixin
  from metric_learn.exceptions import NonPSDError
  from test.test_utils import ids_metric_learners, metric_learners, remove_y, ids_classifiers
label_desc: Use image node_id 8 for calling a global function with example usage: test_embed_dim(estimator, build_dataset) without return types