code: def test_normalize_dense_matrix_enum(self) -> None:
      normalization_parameters = {
          1: NormalizationParameters(
              identify_types.ENUM,
              None,
              None,
              None,
              None,
              [12, 4, 2],
              None,
              None,
              None,
          ),
          2: NormalizationParameters(
              identify_types.CONTINUOUS,
              None,
              0,
              0,
              1,
              None,
              None,
              None,
              None,
          ),
          3: NormalizationParameters(
              identify_types.ENUM,
              None,
              None,
              None,
              None,
              [15, 3],
              None,
              None,
              None,
          ),
      }
      preprocessor = Preprocessor(normalization_parameters, False)
  
      inputs = np.zeros([4, 3], dtype=np.float32)
      feature_ids = [2, 1, 3]  # Sorted according to feature type
      inputs[:, feature_ids.index(1)] = [12, 4, 2, 2]
      inputs[:, feature_ids.index(2)] = [1.0, 2.0, 3.0, 3.0]
      inputs[:, feature_ids.index(3)] = [
          15,
          3,
          15,
          normalization.MISSING_VALUE,
      ]
      inputs = torch.from_numpy(inputs)
      normalized_feature_matrix = preprocessor(
          inputs, (inputs != MISSING_VALUE)
      )
  
      np.testing.assert_allclose(
          np.array(
              [
                  [1.0, 1, 0, 0, 1, 0],
                  [2.0, 0, 1, 0, 0, 1],
                  [3.0, 0, 0, 1, 1, 0],
                  [
                      3.0,
                      0,
                      0,
                      1,
                      0,
                      0,
                  ],  # Missing values should go to all 0
              ]
          ),
          normalized_feature_matrix,
      )
  
imports: import unittest
  import numpy
  import numpy.testing
  import six
  import torch
  from reagent.preprocessing import identify_types, normalization, transforms
  from reagent.preprocessing.identify_types import BOXCOX, CONTINUOUS, DO_NOT_PREPROCESS, ENUM
  from reagent.preprocessing.normalization import MISSING_VALUE, NormalizationParameters, sort_features_by_normalization
  from reagent.preprocessing.preprocessor import Preprocessor
  from reagent.test.base.utils import NumpyFeatureProcessor
  from reagent.test.preprocessing.preprocessing_util import BOXCOX_FEATURE_ID, CONTINUOUS_FEATURE_ID, CONTINUOUS_SMALL_FEATURE_ID, ENUM_FEATURE_ID, id_to_type, PROBABILITY_FEATURE_ID, read_data
  from scipy import special
label_desc: Use image node_id 3 for calling the TestPreprocessing obj's underlying member method code with example usage: obj.test_normalize_dense_matrix_enum() without return types