code: def test_set_fixed_preprocessing_params_cache_embeddings(
      encoder_params: Dict[str, Any], expected: Optional[bool]
  ):
      preprocessing = TextPreprocessingConfig.from_dict(
          {
              "tokenizer": "space",
              "lowercase": True,
              "cache_encoder_embeddings": True,
          }
      )
  
      encoder = get_encoder_cls(
          MODEL_ECD, TEXT, encoder_params[TYPE]
      ).from_dict(encoder_params)
      encoder.set_fixed_preprocessing_params(MODEL_ECD, preprocessing)
      assert preprocessing.cache_encoder_embeddings == expected
  
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 2 for calling a global function with example usage: test_set_fixed_preprocessing_params_cache_embeddings(encoder_params, expected) without return types