code: def test_save_load_metadata(self):
      encoder = text_encoder.ByteTextEncoder(additional_tokens=["HI"])
      text_f = features.Text(encoder=encoder)
      text = "HI 你好"
      ids = text_f.str2ints(text)
      self.assertEqual(1, ids[0])
  
      with testing.tmp_dir(self.get_temp_dir()) as data_dir:
          feature_name = "dummy"
          text_f.save_metadata(data_dir, feature_name)
  
          # Test loading it from a newly instantiated feature.
          new_f = features.Text(encoder=encoder)
          new_f.load_metadata(data_dir, feature_name)
          self.assertEqual(ids, new_f.str2ints(text))
  
          # Test that loading it without an encoder results in an error.
          with pytest.raises(
              ValueError, match="Text feature files found for feature.+"
          ):
              new_f_no_encoder = features.Text()
              new_f_no_encoder.load_metadata(data_dir, feature_name)
  
file_path: datasets/tensorflow_datasets/core/features/text_feature_test.py
imports: import numpy
  import pytest
  from tensorflow_datasets import testing
  from tensorflow_datasets.core import features
  from tensorflow_datasets.core.deprecated.text import text_encoder
label_desc: Use image node_id 4 for calling the TextFeatureTest obj's underlying member method code with example usage: obj.test_save_load_metadata() without return types