code: def test_simple_estimator(
      estimator, build_dataset, with_preprocessor
  ):
      """Tests that fit, predict and scoring works."""
      if any(
          hasattr(estimator, method) for method in ["predict", "score"]
      ):
          input_data, labels, preprocessor, _ = build_dataset(
              with_preprocessor
          )
          (
              tuples_train,
              tuples_test,
              y_train,
              y_test,
          ) = train_test_split(input_data, labels, random_state=RNG)
          estimator = clone(estimator)
          estimator.set_params(preprocessor=preprocessor)
          set_random_state(estimator)
  
          estimator.fit(*remove_y(estimator, tuples_train, y_train))
          check_score(estimator, tuples_test, y_test)
          check_predict(estimator, tuples_test)
  
imports: import pytest
  import unittest
  from sklearn.utils.estimator_checks import check_estimator
  from sklearn.base import TransformerMixin
  from sklearn.pipeline import make_pipeline
  from sklearn.utils import check_random_state
  from metric_learn.sklearn_shims import assert_allclose_dense_sparse, set_random_state, _get_args, is_public_parameter, get_scorer
  from metric_learn import Covariance, LFDA, LMNN, MLKR, NCA, ITML_Supervised, LSML_Supervised, MMC_Supervised, RCA_Supervised, SDML_Supervised, SCML_Supervised
  from sklearn import clone
  import numpy
  from sklearn.model_selection import cross_val_score, cross_val_predict, train_test_split, KFold
  from test.test_utils import metric_learners, ids_metric_learners, mock_preprocessor, tuples_learners, ids_tuples_learners, pairs_learners, ids_pairs_learners, remove_y, metric_learners_pipeline, ids_metric_learners_pipeline
label_desc: Use image node_id 9 for calling a global function with example usage: test_simple_estimator(estimator, build_dataset, with_preprocessor) without return types