code: def test_set_fixed_preprocessing_params(
      pretrained_model_name_or_path: str,
  ):
      expected_model_name = "bert-base-uncased"
  
      preprocessing = TextPreprocessingConfig.from_dict(
          {
              "tokenizer": "space",
              "lowercase": True,
          }
      )
  
      encoder_params = {}
      if pretrained_model_name_or_path is not None:
          encoder_params[
              "pretrained_model_name_or_path"
          ] = pretrained_model_name_or_path
          expected_model_name = pretrained_model_name_or_path
  
      encoder = BERTConfig.from_dict(encoder_params)
      encoder.set_fixed_preprocessing_params(MODEL_ECD, preprocessing)
  
      assert preprocessing.tokenizer == "hf_tokenizer"
      assert preprocessing.lowercase
      assert (
          preprocessing.pretrained_model_name_or_path
          == expected_model_name
      )
  
imports: from typing import Any, Dict, Optional
  import pytest
  from ludwig.constants import BASE_MODEL, BINARY, ENCODER, INPUT_FEATURES, MODEL_ECD, MODEL_GBM, MODEL_LLM, MODEL_TYPE, NAME, OUTPUT_FEATURES, TEXT, TYPE
  from ludwig.schema.encoders.text_encoders import BERTConfig
  from ludwig.schema.encoders.utils import get_encoder_cls
  from ludwig.schema.features.preprocessing.text import TextPreprocessingConfig
  from ludwig.schema.model_config import ModelConfig
  from ludwig.utils.config_utils import config_uses_llm
label_desc: Use image node_id 1 for calling a global function with example usage: test_set_fixed_preprocessing_params(pretrained_model_name_or_path) without return types