code: def test_search_space_transform_untransform_params() -> None:
      search_space = {
          "x0": CategoricalDistribution(["corge"]),
          "x1": CategoricalDistribution(["foo", "bar", "baz", "qux"]),
          "x2": CategoricalDistribution(["quux", "quuz"]),
          "x3": FloatDistribution(2, 3),
          "x4": FloatDistribution(-2, 2),
          "x5": FloatDistribution(1, 10, log=True),
          "x6": FloatDistribution(1, 1, log=True),
          "x7": FloatDistribution(0, 1, step=0.2),
          "x8": IntDistribution(2, 4),
          "x9": IntDistribution(1, 10, log=True),
          "x10": IntDistribution(1, 9, step=2),
      }
  
      params = {
          "x0": "corge",
          "x1": "qux",
          "x2": "quux",
          "x3": 2.0,
          "x4": -2,
          "x5": 1.0,
          "x6": 1.0,
          "x7": 0.2,
          "x8": 2,
          "x9": 1,
          "x10": 3,
      }
  
      trans = _SearchSpaceTransform(search_space)
      trans_params = trans.transform(params)
      untrans_params = trans.untransform(trans_params)
  
      for name in params.keys():
          assert untrans_params[name] == params[name]
  
file_path: optuna/tests/test_transform.py
imports: import math
  from typing import Any
  import numpy
  import pytest
  from optuna._transform import _SearchSpaceTransform
  from optuna._transform import _untransform_numerical_param
  from optuna.distributions import BaseDistribution
  from optuna.distributions import CategoricalDistribution
  from optuna.distributions import FloatDistribution
  from optuna.distributions import IntDistribution
label_desc: Use image node_id 5 for calling a global function with example usage: test_search_space_transform_untransform_params() without return types