code: def test_is_digit_factory(self):
      # Given
      config = {"factory_name": "is_digit", "args": {}, "offsets": [0]}
      tokens = tokenize("hello 1 world", LANGUAGE_EN)
      cache = [{TOKEN_NAME: token} for token in tokens]
      factory = CRFFeatureFactory.from_config(config)
      factory.fit(None, None)
      features = factory.build_features()
  
      # When
      res1 = features[0].compute(0, cache)
      res2 = features[0].compute(1, cache)
  
      # Then
      self.assertIsInstance(factory, IsDigitFactory)
      self.assertEqual(features[0].base_name, "is_digit")
      self.assertEqual(res1, None)
      self.assertEqual(res2, "1")
  
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 5 for calling the TestCRFFeatures obj's underlying member method code with example usage: obj.test_is_digit_factory() without return types