code: def test_selector(criteria: tp.Any, expected: tp.List[str]) -> None:
      df = utils.Selector(
          index=["i1", "i2", "i3"], columns=["c1", "c2"]
      )
      for i, c in itertools.product(df.index, df.columns):
          df.loc[i, c] = f"{i}-{c}"
      df_select = df.select(**criteria)
      df_drop = df.select_and_drop(**criteria)
      # indices
      testing.assert_set_equal(df_select.index, expected)
      testing.assert_set_equal(df_drop.index, expected)
      # columns
      testing.assert_set_equal(df_select.columns, df)
      testing.assert_set_equal(
          df_drop.columns, set(df_select.columns) - set(criteria)
      )
      # values
      for i, c in itertools.product(df_select.index, df_select.columns):
          assert df.loc[i, c] == f"{i}-{c}", "Erroneous values"
      # instance
      assert isinstance(df_select, utils.Selector)
      assert isinstance(df_drop, utils.Selector)
  
file_path: nevergrad/nevergrad/benchmark/test_utils.py
imports: import itertools
  import typing
  import numpy
  from nevergrad.common import testing
  from .None import utils
label_desc: Use image node_id 1 for calling a global function with example usage: test_selector(criteria, expected) without return types