code: def test_BadInputs(self) -> None:
      with self.assertRaises(ValueError):
          ConvertMetricNames(
              None, observations=self.observations, config=None
          )
  
      with self.assertRaises(ValueError):
          tconfig_copy = dict(self.tconfig)
          tconfig_copy.pop("metric_name_map")
          ConvertMetricNames(
              None,
              observations=self.observations,
              config=tconfig_copy,
          )
  
      with self.assertRaises(ValueError):
          tconfig_copy = dict(self.tconfig)
          tconfig_copy.pop("trial_index_to_type")
          ConvertMetricNames(
              None,
              observations=self.observations,
              config=tconfig_copy,
          )
  
      with self.assertRaises(ValueError):
          tconfig_copy = dict(self.tconfig)
          tconfig_copy.pop("metric_name_to_trial_type")
          ConvertMetricNames(
              None,
              observations=self.observations,
              config=tconfig_copy,
          )
  
      with self.assertRaises(ValueError):
          tconfig_copy = dict(self.tconfig)
          tconfig_copy["trial_index_to_type"].pop(0)
          ConvertMetricNames(
              None,
              observations=self.observations,
              config=tconfig_copy,
          )
  
file_path: Ax/ax/modelbridge/transforms/tests/test_convert_metric_names_transform.py
imports: from copy import copy
  from ax.core.observation import observations_from_data
  from ax.modelbridge.transforms.convert_metric_names import convert_mt_observations, ConvertMetricNames, tconfig_from_mt_experiment
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_multi_type_experiment
label_desc: Use image node_id 3 for calling the ConvertMetricNamesTest obj's underlying member method code with example usage: obj.test_BadInputs() without return types