code: def test_categorical_multiple():
      search_space = MutableList(
          [
              CategoricalMultiple([1, 2], label="x"),
              CategoricalMultiple([3, 4, 5], n_chosen=1, label="y"),
          ]
      )
  
      replay_buffer = ReplayBuffer(20)
      generator = TuningTrajectoryGenerator(search_space)
      policy = generator.policy
  
      for _ in range(20):
          sample = generator.next_sample()
          assert (
              isinstance(sample["x"], list)
              and 0 <= len(sample["x"]) <= 2
          )
          assert isinstance(sample["y"], list) and len(sample["y"]) == 1
          assert (
              isinstance(generator.sample_logits["x"], list)
              and len(generator.sample_logits["x"]) == 2
          )
          assert (
              isinstance(generator.sample_logits["y"], list)
              and len(generator.sample_logits["y"]) == 3
          )
          search_space.freeze(sample)
          trajectory = generator.send_reward(1.0)
          replay_buffer.update(trajectory)
  
      policy.update(0, replay_buffer, batch_size=10, repeat=2)
  
file_path: nni/test/algo/nas/strategy/test_rl_impl.py
imports: from functools import partial
  import numpy
  import pytest
  from tianshou.data import ReplayBuffer, Batch
  from tianshou.policy import BasePolicy
  from nni.mutable import Categorical, Numerical, CategoricalMultiple, MutableDict, MutableList, ExpressionConstraint
  from nni.nas.strategy._rl_impl import TuningTrajectoryGenerator, default_policy_fn
label_desc: Use image node_id 7 for calling a global function with example usage: test_categorical_multiple() without return types