code: def test_search_space_group() -> None:
      search_space_group = _SearchSpaceGroup()
  
      # No search space.
      assert search_space_group.search_spaces == []
  
      # No distributions.
      search_space_group.add_distributions({})
      assert search_space_group.search_spaces == []
  
      # Add a single distribution.
      search_space_group.add_distributions(
          {"x": IntDistribution(low=0, high=10)}
      )
      assert search_space_group.search_spaces == [
          {"x": IntDistribution(low=0, high=10)}
      ]
  
      # Add a same single distribution.
      search_space_group.add_distributions(
          {"x": IntDistribution(low=0, high=10)}
      )
      assert search_space_group.search_spaces == [
          {"x": IntDistribution(low=0, high=10)}
      ]
  
      # Add disjoint distributions.
      search_space_group.add_distributions(
          {
              "y": IntDistribution(low=0, high=10),
              "z": FloatDistribution(low=-3, high=3),
          }
      )
      assert search_space_group.search_spaces == [
          {"x": IntDistribution(low=0, high=10)},
          {
              "y": IntDistribution(low=0, high=10),
              "z": FloatDistribution(low=-3, high=3),
          },
      ]
  
      # Add distributions, which include one of search spaces in the group.
      search_space_group.add_distributions(
          {
              "y": IntDistribution(low=0, high=10),
              "z": FloatDistribution(low=-3, high=3),
              "u": FloatDistribution(low=1e-2, high=1e2, log=True),
              "v": CategoricalDistribution(choices=["A", "B", "C"]),
          }
      )
      assert search_space_group.search_spaces == [
          {"x": IntDistribution(low=0, high=10)},
          {
              "y": IntDistribution(low=0, high=10),
              "z": FloatDistribution(low=-3, high=3),
          },
          {
              "u": FloatDistribution(low=1e-2, high=1e2, log=True),
              "v": CategoricalDistribution(choices=["A", "B", "C"]),
          },
      ]
  
      # Add a distribution, which is included by one of search spaces in the group.
      search_space_group.add_distributions(
          {"u": FloatDistribution(low=1e-2, high=1e2, log=True)}
      )
      assert search_space_group.search_spaces == [
          {"x": IntDistribution(low=0, high=10)},
          {
              "y": IntDistribution(low=0, high=10),
              "z": FloatDistribution(low=-3, high=3),
          },
          {"u": FloatDistribution(low=1e-2, high=1e2, log=True)},
          {"v": CategoricalDistribution(choices=["A", "B", "C"])},
      ]
  
      # Add distributions whose intersection with one of search spaces in the group is not empty.
      search_space_group.add_distributions(
          {
              "y": IntDistribution(low=0, high=10),
              "w": IntDistribution(low=2, high=8, log=True),
          }
      )
      assert search_space_group.search_spaces == [
          {"x": IntDistribution(low=0, high=10)},
          {"y": IntDistribution(low=0, high=10)},
          {"z": FloatDistribution(low=-3, high=3)},
          {"u": FloatDistribution(low=1e-2, high=1e2, log=True)},
          {"v": CategoricalDistribution(choices=["A", "B", "C"])},
          {"w": IntDistribution(low=2, high=8, log=True)},
      ]
  
      # Add distributions which include some of search spaces in the group.
      search_space_group.add_distributions(
          {
              "y": IntDistribution(low=0, high=10),
              "w": IntDistribution(low=2, high=8, log=True),
              "t": FloatDistribution(low=10, high=100),
          }
      )
      assert search_space_group.search_spaces == [
          {"x": IntDistribution(low=0, high=10)},
          {"y": IntDistribution(low=0, high=10)},
          {"z": FloatDistribution(low=-3, high=3)},
          {"u": FloatDistribution(low=1e-2, high=1e2, log=True)},
          {"v": CategoricalDistribution(choices=["A", "B", "C"])},
          {"w": IntDistribution(low=2, high=8, log=True)},
          {"t": FloatDistribution(low=10, high=100)},
      ]
  
file_path: optuna/tests/search_space_tests/test_group_decomposed.py
imports: import pytest
  from optuna import create_study
  from optuna import TrialPruned
  from optuna.distributions import CategoricalDistribution
  from optuna.distributions import FloatDistribution
  from optuna.distributions import IntDistribution
  from optuna.search_space import _GroupDecomposedSearchSpace
  from optuna.search_space import _SearchSpaceGroup
  from optuna.testing.storages import StorageSupplier
  from optuna.trial import Trial
label_desc: Use image node_id 1 for calling a global function with example usage: test_search_space_group() without return types