code: def test_single_feature_factory(self):
      # Given
      @CRFFeatureFactory.register("my_factory", override=True)
      class MySingleFeatureFactory(SingleFeatureFactory):
          def compute_feature(self, tokens, token_index):
              value = tokens[token_index].value
              return "%s_%s" % (value, len(value))
  
      config = {
          "factory_name": "my_factory",
          "args": {},
          "offsets": [0, 1],
      }
      factory = MySingleFeatureFactory(config)
      factory.fit(None, None)
      features = factory.build_features()
      cache = [
          {TOKEN_NAME: token}
          for token in tokenize("hello beautiful world", LANGUAGE_EN)
      ]
  
      # When
      res_0 = features[0].compute(0, cache)
      res_1 = features[1].compute(0, cache)
  
      # Then
      self.assertEqual(len(features), 2)
      self.assertEqual(features[0].name, "my_factory")
      self.assertEqual(features[1].name, "my_factory[+1]")
      self.assertEqual(res_0, "hello_5")
      self.assertEqual(res_1, "beautiful_9")
  
imports: from __future__ import unicode_literals
  import io
  from mock import MagicMock
  from snips_nlu.constants import LANGUAGE, LANGUAGE_EN, SNIPS_DATETIME, SNIPS_NUMBER, STEMS, GAZETTEERS, WORD_CLUSTERS
  from snips_nlu.dataset import Dataset
  from snips_nlu.entity_parser import BuiltinEntityParser, CustomEntityParser
  from snips_nlu.entity_parser.custom_entity_parser_usage import CustomEntityParserUsage
  from snips_nlu.exceptions import NotRegisteredError
  from snips_nlu.preprocessing import tokenize
  from snips_nlu.slot_filler.crf_utils import BEGINNING_PREFIX, INSIDE_PREFIX, LAST_PREFIX, TaggingScheme, UNIT_PREFIX
  from snips_nlu.slot_filler.feature import Feature, TOKEN_NAME
  from snips_nlu.slot_filler.feature_factory import BuiltinEntityMatchFactory, CustomEntityMatchFactory, IsDigitFactory, IsFirstFactory, IsLastFactory, LengthFactory, NgramFactory, PrefixFactory, ShapeNgramFactory, SingleFeatureFactory, SuffixFactory, WordClusterFactory, CRFFeatureFactory
  from snips_nlu.tests.utils import SnipsTest
label_desc: Use image node_id 4 for calling the TestCRFFeatures obj's underlying member method code with example usage: obj.test_single_feature_factory() and returns: unknown