code: def test_transform_search_space(self) -> None:
      t = CapParameter(
          search_space=self.search_space,
          observations=[],
          config={"a": "2"},
      )
      t.transform_search_space(self.search_space)
      # pyre-fixme[16]: Optional type has no attribute `upper`.
      self.assertEqual(self.search_space.parameters.get("a").upper, 2)
      t2 = CapParameter(
          search_space=self.search_space,
          observations=[],
          config={"b": "2"},
      )
      with self.assertRaises(NotImplementedError):
          t2.transform_search_space(self.search_space)
  
file_path: Ax/ax/modelbridge/transforms/tests/test_cap_parameter_transform.py
imports: from ax.core.parameter import ChoiceParameter, ParameterType, RangeParameter
  from ax.core.search_space import SearchSpace
  from ax.exceptions.core import UnsupportedError
  from ax.modelbridge.transforms.cap_parameter import CapParameter
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_robust_search_space
label_desc: Use image node_id 2 for calling the CapParameterTest obj's underlying member method code with example usage: obj.test_transform_search_space() without return types