code: def _test_discrete_dqn_net_builder(
      self,
      chooser: DiscreteDQNNetBuilder__Union,
      state_feature_config: rlt.ModelFeatureConfig,
      serving_module_class=DiscreteDqnPredictorWrapper,
  ) -> None:
      builder = chooser.value
      state_normalization_data = NormalizationData(
          dense_normalization_parameters={
              fi.feature_id: NormalizationParameters(
                  feature_type=CONTINUOUS, mean=0.0, stddev=1.0
              )
              for fi in state_feature_config.float_feature_infos
          }
      )
      action_names = ["L", "R"]
      q_network = builder.build_q_network(
          state_feature_config,
          state_normalization_data,
          len(action_names),
      )
      x = q_network.input_prototype()
      y = q_network(x)
      self.assertEqual(y.shape, (1, 2))
      serving_module = builder.build_serving_module(
          q_network,
          state_normalization_data,
          action_names,
          state_feature_config,
      )
      self.assertIsInstance(serving_module, serving_module_class)
  
file_path: ReAgent/reagent/test/net_builder/test_discrete_dqn_net_builder.py
imports: import unittest
  from reagent.core import types
  from reagent.core.fb_checker import IS_FB_ENVIRONMENT
  from reagent.core.parameters import NormalizationData, NormalizationParameters
  from reagent.net_builder import discrete_dqn
  from reagent.net_builder.unions import DiscreteDQNNetBuilder__Union
  from reagent.preprocessing.identify_types import CONTINUOUS
  from torchrec import PoolingType
label_desc: Use image node_id 1 for calling the TestDiscreteDQNNetBuilder obj's underlying member method code with example usage: obj._test_discrete_dqn_net_builder(chooser, state_feature_config, serving_module_class) without return types