code: def test_subsample_splitter_shapes(
      fraction, subsample_test, expected_train_size, expected_test_size
  ):
      # Make sure splits returned by SubsampleMetaSplitter are of appropriate
      # size
  
      n_samples = 100
      X, y = make_classification(n_samples)
      cv = _SubsampleMetaSplitter(
          base_cv=KFold(5),
          fraction=fraction,
          subsample_test=subsample_test,
          random_state=None,
      )
  
      for train, test in cv.split(X, y):
          assert train.shape[0] == expected_train_size
          assert test.shape[0] == expected_test_size
          if subsample_test:
              assert train.shape[0] + test.shape[0] == int(
                  n_samples * fraction
              )
          else:
              assert (
                  test.shape[0]
                  == n_samples // cv.base_cv.get_n_splits()
              )
  
imports: from math import ceil
  import numpy
  import pytest
  from scipy.stats import expon, norm, randint
  from sklearn.datasets import make_classification
  from sklearn.dummy import DummyClassifier
  from sklearn.experimental import enable_halving_search_cv
  from sklearn.model_selection import GroupKFold, GroupShuffleSplit, HalvingGridSearchCV, HalvingRandomSearchCV, KFold, LeaveOneGroupOut, LeavePGroupsOut, ShuffleSplit, StratifiedKFold, StratifiedShuffleSplit
  from sklearn.model_selection._search_successive_halving import _SubsampleMetaSplitter, _top_k
  from sklearn.model_selection.tests.test_search import check_cv_results_array_types, check_cv_results_keys
  from sklearn.svm import SVC, LinearSVC
label_desc: Use image node_id 10 for calling a global function with example usage: test_subsample_splitter_shapes(fraction, subsample_test, expected_train_size, expected_test_size) without return types